📡 Linux 无线子系统周报(linux-wireless)
报告周期:2026-07-30(周四) ~ 2026-08-05(周三)生成时间:2026-08-12数据来源:lore.kernel.org linux-wireless
一、概览
| |
|---|
| 328 |
| 313 |
| 143 |
| ~131 |
| 🧩 协议栈(mac80211/cfg80211/nl80211) | 51 |
| ~60 |
| ~50 |
消息类型分布:补丁提交 143 · 补丁讨论/回复 170 · 纯讨论/错误报告 15
二、协议栈 — 80211 🧩
本周协议栈层共 51 封补丁邮件,是本周最活跃的单一领域。协议栈更新集中在 mac80211(TX 清理、RX 重构、ENCAP 修复、CIP 协议)和 cfg80211/nl80211(事件报告、CIP API、6GHz 配置)。
2.1 mac80211 核心(39 封)
mac80211 层本周经历了大规模 TX 路径重构与ENCAP 安全修复,由 Johannes Berg、Benjamin Berg 和 Zhiling Zou 主导。
(1)Johannes Berg:mac80211 TX 清理系列(07/08 系列,7 封)
| | |
|---|
fix IEEE80211_TX_CTL_REQ_TX_STATUS mixup | TX 状态标志位混淆,导致部分帧未正确请求 TX 状态确认 | |
tx: simplify control port frame transmission | | |
remove cookie from __ieee80211_subif_start_xmit() | | |
unshare the skb before building the header | 在构建 802.11 头之前先 unshare skb,防止共享 skb 导致竞争 | |
report multicast transmission from lookup_ra_sta() | 多播帧从 lookup_ra_sta() 返回时正确报告多播状态 | |
set flags/ctrl_flags before ieee80211_build_hdr() | | |
store the ack skb before building the header | 构建头部前保存 ack skb,防止构建过程中被覆盖 | |
技术价值:该系列系统性地解决了 mac80211 TX 路径上一系列 skb 共享、标志位设置顺序、以及 ack 处理问题。核心问题源于 __ieee80211_subif_start_xmit() 中 skb 生命周期管理——多个路径共享同一个 skb 时,头部操作和元数据设置存在竞态条件。unshare the skb 是最关键的修复,它确保 skb 在修改前成为独占副本。
(2)Johannes Berg:ENCAP Offload 安全修复系列(4 封)
| | |
|---|
fix unauthorised port check for encap offload | ENCAP 卸载路径中未授权端口检查逻辑错误,允许未授权流量通过 | |
fix key selection for encap offload frames | ENCAP 卸载帧的密钥选择逻辑错误,可能使用错误密钥加密 | |
don't send encap offload frames unencrypted | | |
drop encap offload frames with a tainted key | 接收端可能收到已泄露密钥加密的 ENCAP 帧,应直接丢弃 | |
安全影响:4 片 ENCAP 修复属于严重安全缺陷。ENCAP(封装卸载)是 WiFi 6/6E 将数据帧封装交给硬件处理的路径。key selection 修复解决了多密钥场景下选择错误密钥的问题——例如一个 AP 维护多个关联的 STA,每个 STA 有不同 PTK,卸载路径可能误用非目标 STA 的密钥加密。unencrypted 修复更为关键:当软件开发队列(sw-crypto)与硬件卸载路径交互时,特定状态转换可能导致帧以明文发出。此系列建议优先合入稳定分支。
(3)Benjamin Berg:RX 路径重构系列(v2 8/8+5/8,10 封)
| | |
|---|
change public RX API to use link stations | RX API 从 per-station 改为 per-link-station,适配 MLO 多链路 | |
refactor RX link_id and station handling | 重构 RX 链路 ID 与 station 的关联逻辑 | |
rework RX packet handling | 重写 RX 数据包处理流程,分离链路层与 MAC 层处理 | |
pass station to ieee80211_tx_skb_tid | TX 路径中传递 station 指针而非仅传递 TID | |
pass error station if non-STA transmit was requested | | |
report to cfg80211 when no STA is known for a frame | | |
技术价值:此系列是 mac80211 向 MLO 完整适配的关键一步。传统 mac80211 仅支持单链路,每个 station 对应一个 link。MLO 场景下,一个 station 对应多个 link(通常 2~3 个),每个 link 有独立的 link_sta 结构。此系列将 RX 路径从 sta 为中心改为 link_sta 为中心,是 ATF(Aggregate Throughput Forwarding)的基础。
(4)Benjamin Berg:CIP 协议系列(v2 5/5,5 封)
| | |
|---|
cfg80211: add Control Integrity Protocol (CIP) APIs | | |
mac80211: add Control Integrity Protocol handling | | |
mac80211: add cigtk parameter to ieee80211_gtk_rekey_add | | |
mac80211: add helpers to parse/generate CIP Capabilities | | |
mac80211_hwsim: claim support for CIP | | |
CIP 协议:Control Integrity Protocol 是 Wi-Fi 联盟定义的控制帧完整性保护机制,用于保护 Beacon、Probe Response、Action 帧等管理帧不受篡改。CIP 引入了 CIGTK(Control Integrity Group Temporal Key)作为新的密钥层级,与现有的 GTK/IGTK 并列。v2 版本相比 v1 增加了对多链路场景的兼容性处理。
(5)Zhiling Zou:mac80211 修复系列(3 个独立系列,6 封)
| | |
|---|
keep paired old chanctx alive | 频道上下文切换时保持旧上下文存活,防止切换失败后无上下文可用 | |
serialize debugfs netdev rename with recreate | debugfs 重命名与重建操作的序列化,修复竞态 | |
count only matching reservations in reserved switch | 频道切换时只计数匹配的 reservation,避免过早切换 | |
keep paired old chanctx alive 是本周 mac80211 最重要的修复之一:当 CSA(Channel Switch Announcement)执行期间,新频道上下文建立失败时,旧上下文已被销毁,导致设备无可用频道上下文,触发连接断开。修复保留旧上下文直到新上下文确认可用。
(6)其他 mac80211 补丁
| | |
|---|
skip default WMM setup for AP_VLAN links | | AP_VLAN 链路不需要默认 WMM 参数,避免重复设置 |
remove ieee80211_sta_ps_transition() return value | | |
fix RCU dereference in throughput estimate | | |
fix RCU usage in peer probing | | |
disconnect on CSA to channel 0 | | |
make ieee80211_is_tx_data() internal | | |
fils_aead: Use _cleanup for aes_cmac_key | | 用 attribute((cleanup)) 自动清理密钥,防泄露 |
tell mac80211 when the PS queue has run empty | | |
2.2 cfg80211 / nl80211 配置层(12 封)
| | | |
|---|
add Control Integrity Protocol (CIP) APIs | | | |
add attribute for TX/RX denoting there is no station | | | |
report authorized connect and roam events | | | |
add roam offload extended feature | | | |
add support to configure 6 GHz non-HT duplicate transmission | | | |
don't export nl80211_mlo_reconf_add_done() | | | |
漫游卸载:Jason Huang 的系列(v2 迭代)为 cfg80211/nl80211 引入了授权连接与漫游事件的报告机制。当硬件/固件支持自主漫游时,NL80211 将漫游完成事件上报给用户态(wpa_supplicant 等),而非等待用户态触发。roam offload extended feature 声明了硬件支持的漫游能力(如 PMKID 缓存、预认证等)。
2.3 80211 协议栈安全总结
三、驱动/子系统热点
| | |
|---|
| mt76 (MediaTek) | 26 | 修复——coredump、MCU 超时、复位 panic、并发、死锁 |
| brcmfmac (Broadcom) | 19 | 内存泄漏、BCM4361、PMKID_V2、flowring 原子计数器 |
| rtw88/rtw89 (Realtek) | 10 | |
| ath12k (Qualcomm) | 6 | MLO 稳定性攻坚(固件崩溃恢复、beacon、dp_peer ID) |
| ath11k (Qualcomm) | 4 | AHB 故障恢复、SoC 重启、NULL deref |
| iwlwifi (Intel) | 4 | 32 位溢出、IO_PAGE_FAULT 回归、NULL 检查 |
| ath9k | 2 | |
四、重点驱动补丁深度分析
4.1 mt76 系列(MediaTek — 26 封)
Felix Fietkau 等维护者提交的 mt76 修复,覆盖 mt7925(Wi-Fi 7)、mt792x、mt76 通用层:
mt7925(Wi-Fi 7):
| | |
|---|
Fix coredump size not enough | 核心转储缓冲区分配不足,固件崩溃时无法收集完整 dump | |
Add coredump end collect mechanism | 新增 coredump 结束收集机制,防止收集不完整 | |
Fix reset panic by removing irq mask config on tx done | TX 完成时 IRQ 屏蔽配置导致复位 panic | |
Fix MCU command timeouts during module unload | | |
fix REG_ACCESS command size for register type | | |
irq mask config on tx done 是本周 mt76 最严重的修复:TX 完成路径中,错误地在 IRQ 处理中配置了 IRQ 屏蔽位,导致在复位流程中 IRQ 被意外禁用,触发 panic。这是 mt7925 固件/驱动交互中的时序问题。
mt792x / mt7921:
| |
|---|
fix memory leak in USB TX path | USB TX 路径中 skb 未释放,长时间运行后内存耗尽 |
drop redundant napi_disable() in unregister path | 取消注册时重复调用 napi_disable() 导致 panic |
refactor regd update to fix recursive mutex deadlock | |
mt76 通用:
| |
|---|
sdio: Fix possible data race when dequeuing skb | |
connac3: implement 6GHz power type detection and dynamic CLC filter | 6GHz 频段功率类型检测与动态 CLC(Carrier Leakage Calibration)滤波 |
take rcu_read_lock in the USB/SDIO tx completion path | USB/SDIO TX 完成路径中缺少 RCU 锁保护 |
mt7603:
| |
|---|
tell mac80211 when the PS queue has run empty | |
file buffered frames under the TID reported to mac80211 | 按 TID 上报缓冲帧,逐流的 power save 管理 |
4.2 brcmfmac 系列(Broadcom — 19 封)
Arend van Spriel 主导的 brcmfmac 修复热潮:
| | | |
|---|
brcmf_sdio_read_control() memory leak | | SDIO 控制路径 RX 缓冲泄漏,8 封讨论迭代修复方案 | |
BCM4361 PCIe support | | 新增 BCM4361 PCIe 芯片组支持(wireless-next v2) | |
implement PMKID_V2 and fix brcmf_delay busy-wait | | 实现 cfg80211 PMKID_V2 API + 修复忙等待 | |
flowring atomic counter | | | |
SAE PWE configuration | | 为外部 SAE AP 配置 PWE(Password Element)方法 | |
cyw PMKID passing to firmware | | 向固件传递 PMKID 以加速连接(PMKSA caching) | |
Shivesh 的 PMKID_V2 系列:v3→v4 迭代中,社区评审指出 brcmf_delay 忙等待不合理——该函数用 1ms 粒度轮询,在长时间等待时浪费 CPU。修复将其改为 usleep_range() 睡眠等待,属于正确的电源管理实践。
4.3 ath12k MLO 稳定性攻坚(Qualcomm — 6 封)
Jose Ignacio Tornos Martinez 提交 v2 0/3 系列(经 v1→v2 迭代):
| | |
|---|
| 1/3: fix MLO station firmware crash recovery | | 固件崩溃后 MLO 状态机处于不可恢复状态,修复在崩溃事件处理中重置 MLO 相关状态 |
| 2/3: fix MLO beacon handling using per-link addressing | | 多链路场景下信标应分发到对应链路,但代码使用了全局地址而非 per-link 地址 |
| 3/3: skip connection_loss_work for MLO beacon miss | | MLO 场景下信标丢失由固件管理,驱动不应触发连接断开 |
Baochen Qiang 补充评审:MLO dp_peer ID 与固件 desync 问题——当固件恢复后,dp_peer ID 分配状态与驱动不一致,导致后续数据帧寻址错误。
4.4 ath11k AHB 故障恢复(Qualcomm — 4 封)
Rameshkumar Sundaram 处理 AHB 接口上的固件崩溃恢复:
| | |
|---|
fix SoC reboot on firmware crash on AHB | | AHB(Advanced High-performance Bus)上固件崩溃后,目标复位路径未正确清理 QMI 状态,导致 SoC 无法正常重启 |
fix NULL dereference in ahb remove when QMI in error state | QMI 错误状态时移除 AHB 设备触发 NULL 解引用 | QMI 服务处于错误状态时,ahb_remove 访问未初始化的 QMI 句柄 |
4.5 iwlwifi 修复(Intel — 4 封)
| | | |
|---|
GP2 to nanoseconds overflow on 32-bit | | 32 位系统上 GP2(全局外设时钟)到纳秒转换时整数溢出,影响 mld/mvm 两个驱动 | |
add NULL check for trans->dbg.dest_tlv in dump_monitor | | dump_monitor 中解引用前未检查 dest_tlv 是否为 NULL | |
IO_PAGE_FAULT regression report | | | |
GP2 溢出:32 位架构上,ktime_get_boottime_ns() 与 GP2 的转换使用 64 位乘法,但 GP2 值是 32 位寄存器读取的。当 GP2 翻转时(~71 分钟,基于 24MHz 时钟),纳秒值溢出,导致时间戳计算错误,表现为连接断开或固件超时。
4.6 其他值得注意的补丁
| | |
|---|
cfg80211: fix BSS RB tree collision during channel switch | | 频道切换时 BSS RB 树冲突导致连接丢失——BSS 节点在红黑树中插入时未正确处理重复键值 |
ath9k: Fix potential spin_lock() before spin_lock_init() | | 锁初始化顺序错误——spin_lock 在 spin_lock_init 之前被调用,导致未定义行为 |
ath9k_htc: fix possibly missing barrier in rxep() | | RX 完成路径中缺少内存屏障,CPU 可能读到过时的描述符状态 |
ath11k: guard copy engine access against a cleared srng | | 已清除的 SRNG(Shared Ring)的 CE(Copy Engine)访问保护 |
ath11k: initialise the CE descriptor waitqueue once per device | | 等待队列初始化——per-device 而非 per-pci-device |
ath12k: fix channel list double-free on error paths | | 错误路径中通道列表双重释放——kfree 后未置 NULL,再次 kfree |
rtw88: run RTL8723BS association register sequence | | RTL8723BS 关联寄存器序列支持,三代迭代后稳定 |
rtw88: mark zero length packets on RTL8723BS | | |
rtw89: coex: Fix Bluetooth link weight not update | | |
五、补丁版本分布
| | |
|---|
| | |
| | 首轮迭代(Benjamin Berg 的 RX 重构、CIP 系列、Jason Huang 漫游) |
| | 第二轮迭代(Shivesh PMKID_V2、rtw88 寄存器序列) |
| | 第三轮迭代(Shivesh PMKID_V2 达到 v4) |
多轮迭代集中在 Benjamin Berg 的 RX 重构(v2 8/8 系列)、CIP 协议(v2 5/5 系列)、Jason Huang 漫游卸载(v2 2/2)、Shivesh PMKID_V2(v4)。
六、安全 / 健壮性关注
| | | |
|---|
| | | |
| | | |
| | | |
| | | ath11k AHB、iwlwifi dump_monitor |
| | | |
| | | mt76 sdio、mac80211 debugfs |
| | | |
| | | |
| | | |
| | | |
重点关注:
- 1. 🔴 mac80211 ENCAP 卸载 4 片安全修复——密钥选择、明文发送、taited key 丢弃
- 2. 🔴 iwlwifi 32 位 GP2 溢出——老架构回归
- 3. 🟠 ath12k MLO 固件崩溃恢复——固件恢复后的状态机 desync
- 4. 🟠 ath11k AHB 故障恢复——QMI 错误状态下的 NULL deref
- 5. 🟠 mt76 复位 panic——IRQ 屏蔽配置导致复位期间 panic
七、MLO(Multi-Link Operation)专题
本周 MLO 相关邮件 12 封,集中在两个核心主题:
| | | |
|---|
| ath12k MLO 稳定性修复(v2 0/3 + 评审) | | Jose Ignacio Tornos Martinez / Baochen Qiang | |
| mac80211: 拒绝 inactive AP/MLO 链接的 station 加入 | | Johannes Berg / Slawomir Stepien | |
| nl80211: MLO reconfig 导出控制 | | | |
| Benjamin Berg RX 重构(v2 8/8) | | | |
MLO 在 ath12k 上仍处于稳定性攻坚阶段,mac80211 侧开始加固 MLO 链路生命周期管理。Benjamin Berg 的 RX 重构系列(Linux 6.13 窗口)是 MLO 协议栈完整支持的关键基础设施。
八、跨子系统重叠(蓝牙+WiFi)
| | |
|---|
| rtw88_8723de: Wi-Fi and Bluetooth fail after warm reboot | | |
| rtw89: coex: Fix Bluetooth link weight not update | | |
| Loic Poulain NVMEM 系列(跨蓝牙/无线/块设备) | | |
九、活跃贡献者 TOP 15
| | | |
|---|
| Johannes Berg | | mac80211/cfg80211 维护、TX 清理系列、ENCAP 安全修复 |
| Jeff Johnson | | |
| Arend van Spriel | | brcmfmac 系列(内存泄漏、BCM4361、PMKID_V2) |
| Shivesh | | rtw88 系列 + brcmfmac PMKID_V2 |
| Benjamin Berg | | |
| Felix Fietkau | | |
| Ping-Ke Shih | | |
| Jose Ignacio Tornos Martinez | | |
| Rameshkumar Sundaram | | |
| Jason Huang | | |
| Eason Lai | | |
| luka.gejak | | |
| Zhiling Zou | | |
| Baochen Qiang | | |
| Miri Korenblit | | |
十、总结
本周 wireless 活跃度平稳(328 封邮件、143 真补丁)。三个主线:
- 1. 80211 协议栈重构与安全修复:mac80211 经历 TX 清理(7 片)、ENCAP 安全修复(4 片 🔴 CRITICAL)、RX 路径重构(8 片 v2)、CIP 协议(5 片 v2)、频道切换修复(3 系列)。共 51 封协议栈补丁,是本周最活跃领域。
- 2. 驱动修复:mt76 26 封(复位 panic、MCU 超时、coredump、死锁)、brcmfmac 19 封(内存泄漏、BCM4361 新芯片、PMKID_V2)、ath12k MLO 稳定性(6 封)、ath11k AHB 故障恢复(4 封)、iwlwifi 32 位溢出(4 封)。
- 3. MLO 基础设施:Benjamin Berg 的 RX 路径重构为 MLO 多链路适配铺路,ath12k MLO 固件崩溃恢复趋近合入。
技术亮点:
- • cfg80211 引入 Control Integrity Protocol (CIP)——控制帧完整性保护新协议
- • mac80211 ENCAP 卸载 4 片安全修复——密钥选择、明文发送、taited key 处理
- • iwlwifi 32 位 GP2 溢出修复——老架构回归
- • mt76 多维度修复(coredump、MCU、IRQ、锁、竞态)
安全面:本周 4 件 CRITICAL 严重性(ENCAP 卸载密钥选择、明文发送、taited key;iwlwifi 32 位溢出),18+ 件 HIGH 严重性(内存泄漏、NULL deref、panic、竞态、死锁、双重释放)。建议优先关注 ENCAP 安全修复系列合入稳定分支。