当前位置:首页>Linux>【Linux社区短距简报】linux-wireless周动态(20260415)

【Linux社区短距简报】linux-wireless周动态(20260415)

  • 2026-10-11 08:13:36
【Linux社区短距简报】linux-wireless周动态(20260415)

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 往返延迟来说过于严格。该补丁通过以下方式解决:

  1. 增加超时时间
    :将 USB 设备的校准超时值提高 4 倍。
  2. 非致命化处理
    :即使校准未完全完成,只要无线电功能正常,就不再将其视为致命错误,避免导致连接失败。

此方案基于 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小时在线 ⬇️

更多请点击左下角 阅读原文!

最新文章

随机文章