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

相关文章

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Spring Security常见问题及解决方案

《SpringSecurity常见问题及解决方案》SpringSecurity是Spring生态的安全框架,提供认证、授权及攻击防护,支持JWT、OAuth2集成,适用于保护Spring应用,需配置... 目录Spring Security 简介Spring Security 核心概念1. ​Securit

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1