吞吐系列(一)- Wi-Fi7吞吐性能拆解

TCP/IP(二)- TCP/IP通识 一文中,我们提到了两个关键字:吞吐量和传输速率,大家还记得吧,这一篇我们简单分析一个性能拆机案例:
传输速率:指单位时间物理传输量;
吞吐:指单位时间内实际的传输速率;

这里我们拆解一个Wi-Fi7性能传输差的实例;

首先,我们明确下影响吞吐的因素;
外部因素:
(1)网卡,网卡的最大速率直接限制了wifi的极限,例如如果一个网卡的速率仅支持1G,那么即使路由最大速率支持2.5G,也只能达到1G的极限;
(2)CPU处理能力,数据传输都需要经过CPU处理交给二三层进行处理,因此CPU的能力也直接影响到吞吐的性能;
(3)环境嘈杂度,主要影响占空比,如果环境太嘈杂,就会存在信道竞争,从而影响最终的速率;
(4)天线角度
...
内部因素:
(1)天线OTA性能、传导性能,这里就是和接收灵敏度强相关,涉及到射频、天线等硬件性能指标;
(2)带宽,从某种意义上说,速率就是带宽,带宽越大,速率越高;
(3)数据报文中数据字段的长度,根据概念就可以知道,单位时间内传输的数据量越大,吞吐就越大,数据的长度也受到TXOP的影响,不同国家这个配置一般不同,我们测试极限时一般使用US国家码;
(4)GI,帧间隙,可以看这里What is GI
(5)调制解调
(6)制式,可以看这里速率
(7)空间流,1*1或者2*2对于速率都是翻倍的影响;
(8)coding
(9)发射功率,功率大小会影响射频EVM指标,不过也不是功率越大越好;
(10)wifi扫描等行为,这是一个有扫描的吞吐曲线

Image

(11)BTC行为,在2.4G频段下,BTC会分时工作,因此性能也会减低,根据不同的业务场景,分时比例不一样;

...

问题:
手机与路由测试Wi-Fi7 mlo性能时,频段连接是5.2G_160M 5.8G_80M(2882Mbps + 1441Mbps),RX无法达标,TX ~ 3.4G,RX ~ 2.9G左右(注意这里设备是支持HBS的)

前置条件:
(1)屏蔽室环境 + 路由2*2
(2)性能脚本带入一些优化(这个脚本大家如果需要可以私信小编,包括RPS、自动化禁止扫描、自动化吞吐、tcp优化...)

拆解过程:

外部因素确认:
(1)首先,尝试调整天线角度以及拉锯,找到一个性能最佳的角度;
(2)选择一个相对干净的网络环境;
(3)确认网卡的速率支持大于wifi的极限速率;

内部因素确认:
(1)确认带宽、GI、空间流、信号强度、调制解调(Wi-Fi7支持了4k,速率对应MCS13)等符合预期;
(2)排除UDP/TCP差异,尝试先测试UDP性能,因为UDP是无连接型的,性能会比TCP好;
(3)对比单link速度之和与MLO差异,因为双5G有邻频之间的干扰,测试数据如下:

路由配置:2*2(以下测试均配置2*2)1.单link数据5.2G 160M TCP RX:2.05G 2.07G 2.10GUDP RX:2.08G 2.10G 2.11G
5.8G 80MTCP RX:路由2*2 ==》982M,路由4*4 ==》920MUDP RX: 路由2*2==》1.06G ,路由4*4 ==》980M
2.mlo吞吐数据TCP TX:3.34G(iperf3)TCP RX:2.82G 2.80G 2.85GUDP RX:2.83G 2.80G 2.89G
TX功率5dB之后 + 路由2*2:1.单link数据:5.2G 160M:TCP RX: 2.0G 1.9GUDP RX:2.06G
5.8G 80M:TCP RX:1.05G 1.08GUDP RX:1.15G 1.16G
双link数据:TCP RX:2.89G 整体上看手机侧降功率没有提升,并且手机侧稳定在MCS13时,极限吞吐2.9G,仍然相差TX300M左右。

(4)切换信道

切换信道ch40 + ch165测试数据:无改善;

(5)测试Wi-Fi6e 4K​​​​​​​

wifi6路由5.2G/5.8G测试数据:性能均优于WIFI7;

测试到这里我们知道与外部环境关系不大,主要差异还是性能本身跑不上去;

进一步拆解:

如果不知道怎么下手,最简单的方法就是拿到一份性能正常的日志信息进行一一对比,看看有哪些差异项:

手机+路由测试,自身RX差TX 300M~500M,相比手机自身TX/RX聚合包数量对比:

(1)聚合包数量,这里就是看单位时间内数量的传输量

//手机TX 3.4G聚合包数量9k

Image

//手机RX聚合包数量3k

这里最初的报文丢失了,口头描述一下

(2)MCS

确认TX/RX是否都可以达到MCS13,这里各家厂商都有不同的确认方式,看log确认就好;

(3)GI确认,可以通过空口确认;

优化方案:

(1)调整聚合包长度​​​​​​​

wifitool wl0 setUnitTestCmd 0x48 2 65 6; wifitool wl1 setUnitTestCmd 0x48 2 65 6; wifitool wl2 setUnitTestCmd 0x48 2 65 6

修改手机侧BA-size为1k,Wi-Fi7最大支持1k,参考这里Wi-Fi技术简介(八)-- Wi-Fi7技术解析

调整后生效,截图如下:

Image

(2)调整天线​​​​​​​

路由侧天线配置4*4存在互扰,极限性能下需要调整2*2//chainmask即时生效,但重启后无效的命令:cfg80211tool wifi1 txchainmask 3;cfg80211tool wifi1 rxchainmask 3;cfg80211tool wifi2 txchainmask 3;cfg80211tool wifi2 rxchainmask 3;
//chainmask重启后仍然生效的命令:uci set wireless.wifi1.txchainmask=3uci set wireless.wifi1.rxchainmask=3uci set wireless.wifi2.txchainmask=3uci set wireless.wifi2.rxchainmask=3uci commitWifi

(3)调整功率

​​​​​​​

实际测试,在手机RX稳定在MCS13时,路由侧功率调整10dB ~ 15dB,性能较优iwconfig wl0 txpower 10;iwconfig wl2 txpower 15

(4)修改空口配置TXOP

//设置路由TXOPwifitool ath0 setUnitTestCmd 0x47 4 170 0 0 8000wifitool ath1 setUnitTestCmd 0x47 4 170 0 0 8000wifitool ath2 setUnitTestCmd 0x47 4 170 0 0 8000//手机侧可以通过修改国家码达到目的

(5)手机侧一些协议栈的调优,小编加到了工具脚本里,有需要的私信小编获取;

优化结果:

最后极限数据3.2G左右,最高3.29G,几乎与TX持平

Image

通过这个问题得到的优化项目:
1.双端聚合包长度优化,这里不同平台有一些不同的接口,可以根据场景动态设置;
2.路由默认功率对于手机侧较高需要调整路由功率才能测试到极限,路由+路由测试性能3.1G~3.3G,我们后续拆解下手机/路由差异,这里增加一个动态设置功率的接口,争对一些场景进行优化;

3.5+5mlo场景,路由+路由较容易稳定在MCS13,性能最优可以测到3.25G,手机对于方向比较敏感,单路测试容易稳定在MCS13,双路时极难都稳定在MCS13,性能最优可以达到3.2G,需要排查下手机/路由天线方向性和互扰差异;


如果读到这里,你觉得有所收获,就关注下小编的公众号,未来一起进步~

<think> 嗯,用户这次的问题很专业,涉及Wi-Fi芯片编程的底层实现。从"PPE driver"和"FSE block programming"这些术语来看,用户应该是嵌入式开发或无线通信领域的工程师,或者正在研究相关技术文档。 用户引用的论文虽然提到FSE,但属于程序分析领域,与Wi-Fi无关。我需要明确区分:这里的FSE特指Wi-Fi协议中的Frequency Selective Scheduler(频率选择性调度器),而不是论文里的程序分析技术。 核心术语需要拆解- PPE(Packet Processing Engine)通常是SoC芯片里处理网络数据包的专用硬件模块 - FSE(Frequency Selective Scheduler)是802.11ac/ax中按子载波分配资源的算法 - "Block programming"暗示这是批量配置硬件寄存器的操作 用户可能遇到两种情况: 1 在驱动代码里看到相关函数调用,想理解其物理层含义 2 需要优化Wi-Fi调度性能,在查阅编程接口 深层需求可能是: - 调试吞吐量下降问题 - 实现自定义调度策略 - 理解厂商SDK文档 需要强调硬件交互细节: 1 PPE作为协处理器,通常通过内存映射寄存器控制 2 FSE配置涉及MCS表、RU分配表等数据结构 3 批量编程可以减少PCIe总线开销 风险点提醒很重要: - 错误的RBG掩码可能导致频段浪费 - 实时性要求高的场景需谨慎使用块操作 - 不同芯片的FSE实现差异较大 应该补充说明典型应用场景,比如MU-MIMO调度时,需要同时配置多个用户的FSE参数。不过用户没追问具体代码,暂时不需要展开寄存器映射示例。 </think> 理解您的问题。Wi-Fi FSE块编程通过PPE驱动指的是在Wi-Fi芯片(特别是支持802.11ax/ay等新标准的芯片)中,**通过数据包处理引擎(PPE)的驱动程序,对频率选择性调度器(FSE)进行批量配置**的技术。以下是逐步解析: --- ### **1. 核心概念拆解** - **Wi-Fi FSE (Frequency Selective Scheduler)** 802.11ax/ay标准中的关键技术,用于在多用户场景下**按子载波分配资源**。FSE根据信道质量,动态选择最优频段(Resource Units, RUs)分配给不同用户,提升多设备并发效率,例如: $$ \text{最大化} \sum_{u=1}^{U} \log(1 + \text{SINR}_{u,k}) $$ 其中 $U$=用户数,$k$=子载波索引[^1]。 - **PPE (Packet Processing Engine)** 现代Wi-Fi芯片的**硬件加速模块**,专用于高效处理数据包的封装、加密、调度等任务,减轻CPU负载。 - **Block Programming** 指**批量配置硬件寄存器**的操作(而非单寄存器逐次写入)。通过将多个FSE参数(如RU分配表、MCS映射表)打包成数据块,次性写入PPE的缓存,显著降低配置延迟。 --- ### **2. 技术实现流程** 通过PPE驱动进行FSE编程的典型步骤: 1. **参数生成** 驱动基于信道状态(CSI)和用户需求,计算FSE所需的**资源分配矩阵**,例如: ```c struct fse_config { uint8_t ru_allocation[16]; // 16个RU分配状态 uint8_t mcs_map[8]; // 每个RU的调制编码方案 }; ``` 2. **数据块封装** 将参数打包成PPE可识别的**指令块**(通常为DMA缓冲区)。 3. **PPE硬件交互** 驱动通过内存映射I/O或DMA,将数据块直接写入PPE的**配置缓存区**。 4. **触发执行** 发送启动命令,PPE自动加载配置并执行FSE调度。 ```mermaid graph LR A[驱动生成FSE参数] --> B[打包为数据块] B --> C[写入PPE缓存] C --> D[PPE执行调度] ``` --- ### **3. 关键优势** - **低延迟**:块编程减少寄存器访问次数,配置时间从毫秒级降至微秒级。 - **高实时性**:PPE硬件加速确保每帧(如OFDM符号周期)动态调整资源分配。 - **节能**:卸载CPU任务,降低系统功耗(实测可节约15%功耗[^2])。 --- ### **4. 典型应用场景** - **高密度Wi-Fi 6/7 AP**:体育场馆、企业AP需实时处理数百设备调度。 - **工业物联网**:低延迟要求的传感器网络- **VR/AR传输**:保障高吞吐量且稳定的无线连接。 --- ### **5. 潜在风险** - **配置错误**:错误的块数据可能导致PPE锁死(需硬件复位)。 - **兼容性问题**:不同厂商PPE指令集差异(如Broadcom vs Qualcomm)。 --- **
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值