Linux 无线子系统周报2026年4月9日 - 4月15日
2026年4月9日 - 4月15日
概述
本周,Linux 内核无线子系统社区的开发活动主要围绕大规模代码清理、关键驱动修复、安全漏洞修补以及新硬件支持展开。核心贡献者 Thomas Gleixner 发起了一项影响深远的系列补丁,旨在移除内核中对 get_cycles() 等过时接口的滥用。同时,多个驱动(如 rtw89, ath12k, mt76)收到了重要的功能优化和错误修复。此外,NFC 子系统的安全漏洞也得到了及时修补。
核心动态
1. 大规模代码清理:告别 get_cycles() 和 CLOCK_TICK_RATE
本周最引人注目的技术活动是 Thomas Gleixner 发起的编号为 [patch 00/38] 的系列补丁,目标是彻底清理内核树中对 LATCH、CLOCK_TICK_RATE 和 get_cycles() 的“滥用”。这些机制源于早期 x86 架构,如今已成为历史包袱。
get_cycles() 的终结:该函数返回架构相关的 CPU 周期计数,其数值随 CPU 频率变化而失去意义。Gleixner 提议将其替换为更现代、可移植的 ktime_get() 接口。这一变更波及了包括 lib/tests、ext4、fbdev、ptp、slub、crypto/tcrypt、wifi/wil6210 在内的数十个子系统。例如,在 slub 分配器中,原本用 get_cycles() % 1024 来决定是否扫描远程节点,现在改用 prandom 状态生成随机值,消除了对废弃接口的依赖。CLOCK_TICK_RATE 的移除:这个宏定义早已名存实亡,仅作为 PIT 频率的别名存在。本次清理工作将其从 alpha、arc、mips、x86 等几乎所有架构的头文件中彻底删除,标志着一个时代的结束。- 底层重构:为了支持上述清理,还进行了
cycles_t 类型的统一、延迟定时器校准 (delay_timer) 的重命名与 Kconfig 重构等工作。这是一次典型的底层基础设施现代化改造,提升了代码的健壮性和可维护性。
2. 驱动层重要修复与优化
rtw89: 改善 USB 设备的 RF 校准稳定性
Louis Kotze 提交了一个补丁集,解决了 Realtek RTL8922AU USB 适配器在进行射频 (RF) 校准时频繁失败的问题。根本原因在于,原有的超时值是为 PCIe 接口设计的,对于 USB 接口较高的 H2C/C2H 往返延迟来说过于严格。该补丁通过以下方式解决:
- 增加超时时间
- 非致命化处理:即使校准未完全完成,只要无线电功能正常,就不再将其视为致命错误,避免导致连接失败。
此方案基于 Realtek 工程师 Ping-Ke Shih 的建议,显著提升了 USB 适配器的兼容性和用户体验。
ath12k: 性能与代码质量提升
Qualcomm 的 ath12k 驱动本周有多项改进:
- 避免动态内存分配:Nicolas Escande 提出将 WMI TLV 消息解析时使用的临时数组由动态分配 (
kmalloc) 改为 per-CPU 变量。这消除了在软中断上下文因内存不足而导致无法处理 WMI 事件的风险,提高了驱动的可靠性。 - 热管理与冷却设备:Maharaja Kennadyrajan 提交了一系列补丁,为每个 radio 添加了热监控 (hwmon) 和内核热框架冷却设备 (cooling device),允许用户空间或内核根据温度调节 TX 占空比,实现主动散热。
- 代码规范化:Jeff Johnson 统一了代码中指向
struct ath12k_base 的指针变量命名,使其符合 ab 的惯例,提升了代码的一致性。
mt76: 关键 Bug 修复
Dan Carpenter 通过静态分析工具 Smatch 报告了一个严重 bug:在 mt7996_dma_init() 函数中,当 NPU 激活时,向 mt7996_init_tx_queues() 传递了 NULL 作为 wed 参数,而该参数不能为 NULL,否则会导致空指针解引用和系统崩溃。此问题已引起关注,需要尽快修复。
3. 安全漏洞修复:NFC 数字协议栈 OOB 漏洞
Lekë Hapçiu 提交了一个包含 4 个补丁的系列,修复了 NFC 数字协议栈中的多个越界(Out-of-Bounds, OOB)读取和写入漏洞。这些漏洞均可通过恶意构造的 NFC 帧被远程触发,无需用户交互,风险较高。具体包括:
- 栈缓冲区溢出:在处理 NFC-F SENSF_RES 帧时,缺少上界检查,最多可造成 235 字节的栈溢出。
- OOB 读取:在处理 DEP_REQ、DEP_RES 和 SENS_REQ 帧时,存在多处长度检查逻辑错误,导致可以读取内核堆内存。
这些补丁已被标记为稳定版回溯 (Cc: stable@vger.kernel.org),表明它们适用于所有受支持的内核版本。
4. 新功能与标准合规性更新
EML 功能标准化
Pablo Martin-Gomez 提交补丁以确保 EML(Enhanced Multi-Link)功能符合最新的 IEEE 802.11be-2024 标准。主要修改包括:
- 移除了无效的
IEEE80211_EML_CAP_TRANSITION_TIMEOUT_128TU 常量。 - 将 Transition/Padding Delay 子字段的定义从 EMLSR 特定改为通用 EML 定义,并添加了用于 EMLMR 模式的辅助函数。
[GIT PULL]: wireless-next 合并窗口前奏
Johannes Berg 发出了本周的 [GIT PULL] 请求,这是合并窗口开启前的最后一次拉取。主要内容包括:
- Michael MIC 重构:将 Michael MIC 加密代码从
crypto 模块移至 net/mac80211,因为只有 Wi-Fi 使用它。 - NAN 数据路径支持:Miri Korenblit 提交了 11 个补丁,为 NAN(Neighbor Awareness Networking)添加了数据传输能力。
- 新硬件支持:增加了对 Qualcomm IPQ5424 芯片的支持。
- 其他改进:包括 ath10k 添加设备树 quirks、rtw89 提升 USB 性能等。
5. 其他讨论与问题反馈
- nl80211 最小发射功率属性缺失:Steffen May 指出,当前 nl80211 接口缺少暴露硬件最小发射功率的属性,导致用户空间配置界面(如 OpenWrt LuCI)可能提供无效的低功率选项,从而误导用户。尽管 Ben Greear 认为准确报告实际应用的功率更重要,但此问题揭示了 API 设计上的不一致,值得进一步探讨。
- mt7921e/mt7925e 驱动冻结问题:有用户报告
mt7921e 和 mt7925e 驱动在使用过程中会因 “driver own failed” 错误导致系统挂起。初步证据表明,禁用 PCIe ASPM(Active State Power Management)可以有效缓解此问题。
总结
本周的 Linux 无线子系统展现了活跃的开发态势。一方面,社区致力于底层代码的现代化和安全性;另一方面,针对主流硬件的驱动也在持续得到优化和加固。随着 802.11be 标准的推进和新硬件的涌现,代码的合规性和稳定性依然是开发的核心焦点。
📡 本周 Linux 无线子系统在底层基础设施清理(get_cycles/CLOCK_TICK_RATE)、驱动稳定性(rtw89 USB 校准、ath12k 热管理)和安全加固(NFC 漏洞)方面均有显著进展。mt76 空指针问题、nl80211 功率属性缺失等仍待解决。更多技术细节可通过邮件列表链接深入查阅。
欢迎关注:

如果有更多疑问或需要帮助,可点击下方卡片,让「东东的小站AI助手」为您实时答疑:支持24小时在线 ⬇️
更多请点击左下角 阅读原文!