realtek wifi驱动常见问题-可优化调整点

2024-03-28 20:44

本文主要是介绍realtek wifi驱动常见问题-可优化调整点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

俗话说好记性不如烂笔头,最近在新产品上使用realtek 8192 wifi芯片时,发现之前做过的一些优化,有些模糊,因此想在这里记录下当前和之后realtek相关的wifi驱动遇到的一些问题。

-----再牛逼的梦想,也抵不住傻逼般的坚持! --2024-03-28 10:46

文章目录

  • 前言
  • 一、驱动移植注意事项
  • 二、驱动启动流程分析
    • 初始化函数主要做的事情:
    • wifi驱动的probe的过程
  • 二、常见问题分析
    • 问题1.
    • 2.驱动优化处理
  • 总结


前言

当下国内使用的wifi、ble主要有如下几个芯片厂商:realtek(瑞昱),broadcom(博通),乐鑫,物奇,南方硅谷等等,wifi通常分两种开发方式,一种是soc芯片多用于iot(物联网产品),使用rtos,rthread等实时操作系统,可以基于wifi模组进行二次开发;另外一种虽然wifi fw(固件)也是soc,但是fw一般由芯片厂商维护,需要挂在一个主控(ARM)芯片进行使用,主控与wifi模组通过sdio/usb进行交互,fw与主控端的wifi驱动进行交互,wifi驱动通过内核cfg80211或mac80211与开源库wpa_supplicant/hostapd进行交互。上层封装自己的业务通过wpa_supplicant/hostapd对wifi进行操作;(这里写的可能不清楚下面简单写下代码层次)


APP
wpa_supplicant / hostapd
cfg80211
mac80211 (wifi若是fullmac架构,则mac80211部分位于wifi驱动中)
wifi drv
fw


有点扯远了,回归正题,接下来从,驱动移植,常见问题处理,wifi相关优化几个方面来记录,本次以rtl8192fu为例,其他芯片一般都大同小异

一、驱动移植注意事项

一般来说编译指定kernel产物路径,ARCH,CROSS_COMPILE 即可,可以自己在外层写一个Makefile, 增加自己业务先关的编译选项,编译过程遇到问题,建议自行学习分析,哪里报错看哪里,不要怂,也不要担心解决不了,淦就完了,这个算是嵌入式基础了。

这里需要注意几个点:
1.驱动加载前,先通过cat /proc/bus/usb/devices查看wifi usb节点是否识别到。若未识别到,则需先排查硬件或主控usb驱动是否正常。

内核配置:

驱动配置:
驱动配置基本位于根目录下的Makefile
CONFIG_80211W 关闭该配置,该配置使用WPA3时才需要。

二、驱动启动流程分析

module_init(rtw_drv_entry);(入口)
module_exit(rtw_drv_halt);
找到这两个函数,就分别找到了初始化和退出函数

初始化函数主要做的事情:

(1)打开wifi模块的电源,会根据不同的平台不同的模块进行处理;
(2)初始化挂起锁,这个后边再分析,猜是防止多线程同时挂起模块时会引起模块问题;
(3)驱动注册标志位置1;
(4)注册usb驱动,因为我们的模块接口是USB接口的,所以对系统来说其实就是个USB设备,自然要注册usb驱动。

注册的usb驱动中主要提供的接口如下:
(1)probe探测函数
(2)disconnet函数
(3)idtable列表,表示支持的设备的PIDVID信息
(4)挂起和唤醒函数

wifi驱动的probe的过程

1.处理特殊设备
2.初始化dvobj_priv
3.初始化wlan0的无线网络节点:
(1)识别芯片的型号和硬件型号并记录在wlan0的接口描述结构体中;
(2)根据芯片型号将一些处理函数的地址赋给wlan0的描述结构体;
(3)为结构体的intf_start和intf_stop两个成员赋值,这两个函数会在ifconfig wlan0 up和down的时候被调用;
(4)将一些直接操作结构体的函数地址赋值到结构体中;
(5)获取芯片的版本信息,并从芯片的eeprom中读取芯片的mac地址等信息,赋值到结构体中;
(6)初始化一些software资源,这里需要进一步分析;
(7)设置mac地址。

二、常见问题分析

问题1.

问题描述:手机连接设备软ap热点,无数据传输,一段时间后自动断开
可能导致的问题:设备为软AP配网时,若手机连接设备AP热点,中间出现断连,手机很可能重新连接到路由器,最终导致软AP配网失败。
问题分析:该问题有可能是wifi驱动中默认开启了power save机制导致
修改方法:修改驱动根目录下的Makefile,将CONFIG_POWER_SAVING = y改为 n,关闭该功能。
问题验证:除使用手机连接配网进行验证,还可以通过抓包,查看beacon帧如下字段查看修改是否生效;
802.11 Management Beacon中
Traffic Indication Map -> Bitmap Control (Traffic Ind)

2.驱动优化处理

  1. 驱动裁剪
    a. 日志裁剪
    (根目录Makefile中CONFIG_RTW_DEBUG = y设置为n,或通过CONFIG_RTW_LOG_LEVEL调整日志等级)
    b.功能裁剪
    CONFIG_P2P = y
    android相关文件不编译,CONFIG_RTW_ANDROID设置为0
  2. 功能优化
    a.设备出流能力
    (1)修改rtw_rts_thresh 这个根据实际使用场景来修改。(个人这边修改为512)
    (2) rtw_preamble,这个也是根据自己需求进行修改。默认是long GI, 如果环境比较干净可以修改为short GI 以提升吞吐

总结

未完待续 – 上班搬砖

这篇关于realtek wifi驱动常见问题-可优化调整点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856651

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

企业安全之WiFi篇

很多的公司都没有安全团队,只有运维来负责整个公司的安全,从而安全问题也大打折扣。我最近一直在给各个公司做安全检测,就把自己的心得写下来,有什么不足之处还望补充。 0×01  无线安全 很多的公司都有不怎么注重公司的无线电安全,有钱的公司买设备,没钱的公司搞人力。但是人的技术在好,没有设备的辅助,人力在牛逼也没有个卵用。一个好的路由器、交换机、IDS就像你装备了 无尽、狂徒、杀人书一

构建高性能WEB之HTTP首部优化

0x00 前言 在讨论浏览器优化之前,首先我们先分析下从客户端发起一个HTTP请求到用户接收到响应之间,都发生了什么?知己知彼,才能百战不殆。这也是作为一个WEB开发者,为什么一定要深入学习TCP/IP等网络知识。 0x01 到底发生什么了? 当用户发起一个HTTP请求时,首先客户端将与服务端之间建立TCP连接,成功建立连接后,服务端将对请求进行处理,并对客户端做出响应,响应内容一般包括响应