本项目是MediaTek MT7921UA WiFi 6 USB无线网卡的Linux驱动实现。支持最新的802.11ax(WiFi 6)标准,提供高性能的无线网络连接能力。
- 支持802.11ax (WiFi 6)
- 支持USB 3.0接口
- 支持2.4GHz和5GHz双频段
- 支持WPA3安全标准
- 支持SDIO中断增强格式2
- 支持计划扫描
- 支持mDNS卸载
- CSI (Channel State Information) 支持
- 802.11KVR接口支持
- TWT (Target Wake Time) 支持
- 热点TWT支持
- 可配置TWT站点扫描禁用
- 支持WiFi 6G (内核5.4+)
- 支持PCIE ASPM (Active State Power Management)
- 支持WFDMA命令
- 支持PSE主机RX WM事件
- 预分配内存支持
- 支持WFDMA重分配
- 支持TX TSO软件加速
- Linux内核版本: 建议5.4+(完整支持WiFi 6G)
- 编译工具链: GCC, Make
- 内核头文件
- x86_64
- ARM64
# 默认编译
make
# 清理编译产物
make clean
# 安装驱动模块
make install# x86平台
make -f Makefile.x86
# ARM64平台
make -f Makefile.arm64common/- 通用功能实现nic/- 网卡相关功能mgmt/- 管理帧处理include/- 头文件目录os/- 操作系统相关代码chips/- 芯片特定代码firmware/- 固件文件dvt/- 设计验证测试prealloc/- 内存预分配实现
iptable_lan.sh- LAN网络配置iptable_local.sh- 本地网络配置iptable_local_port.sh- 本地端口配置
CONFIG_MTK_WIFI_CONNAC2X- CONNAC2X支持CONFIG_MTK_WIFI_11AX_SUPPORT- 802.11ax支持CONFIG_MTK_WIFI_6G_SUPPORT- 6G频段支持CONFIG_MTK_WIFI_TWT_SUPPORT- TWT功能支持CONFIG_MTK_PREALLOC_MEMORY- 内存预分配支持
CFG_AP_80211KVR_INTERFACE- AP KVR接口CONFIG_WIFI_SUPPORT_GET_NOISE- 噪声获取支持CFG_WIFI_SUPPORT_NOISE_HISTOGRAM- 噪声直方图支持
CFG_SUPPORT_DEBUG_FS=0- 禁用DebugFSWLAN_INCLUDE_PROC- 包含PROC文件系统支持CFG_SUPPORT_AGPS_ASSIST- AGPS辅助支持CFG_SUPPORT_TSF_USING_BOOTTIME- 使用启动时间作为TSF
- 预分配内存支持
- WFDMA重分配
- TX TSO软件加速
- PCIE ASPM支持
- TWT (Target Wake Time)
- 电源间隔控制
+------------------+
| 应用层接口 |
| nl80211/cfg80211|
+------------------+
| 驱动核心层 |
| 数据处理/控制 |
+------------------+
| 硬件抽象层 |
| USB/PCIe |
+------------------+
-
网络接口管理 (NIC)
nic_tx.c- 发送数据包处理nic_rx.c- 接收数据包处理nic_cmd_event.c- 命令事件处理que_mgt.c- 队列管理
-
内存管理
- 预分配内存池
- WFDMA (WiFi Direct Memory Access)
- 缓冲区管理
-
协议栈实现
- 802.11协议状态机
- 安全协议(WPA/WPA2/WPA3)
- P2P协议支持
-
电源管理
nic_pwr_mgt.c- 电源状态控制- TWT调度器
- 节能模式管理
-
数据包进入
- 从网络栈接收SKB
- 数据包分类和优先级排队
-
发送处理
- 报头封装
- 加密处理(如需要)
- 硬件队列调度
- DMA映射和传输
-
硬件交互
- 通过USB/PCIe发送
- 发送完成中断处理
- 资源回收
-
硬件接收
- 中断触发
- DMA接收
-
数据处理
- 报头解析
- 解密处理
- 数据包重组
-
上层递交
- SKB分配
- 递交网络栈
-
驱动加载
- 设备探测
- 资源分配
- 硬件初始化
-
固件加载
- 固件校验
- 下载固件
- 启动固件
-
网络接口创建
- 注册netdev
- 配置MAC地址
- 初始化队列
-
命令处理
- nl80211命令解析
- 参数验证
- 配置下发
-
状态管理
- 扫描控制
- 连接管理
- 速率控制
-
资源管理
- 信道配置
- 功率控制
- 队列参数
-
硬件状态
- 寄存器dump
- 内存dump
- 固件日志
-
软件状态
- 驱动统计
- 队列状态
- 连接信息
-
性能数据
- 吞吐量统计
- 延迟统计
- 错误统计
-
AIS (基础架构模式状态机)
ais_fsm.c- 基础架构网络连接状态管理- 扫描、认证、关联等状态转换
- 漫游决策和执行
-
SAA/AAA (认证与关联)
saa_fsm.c- STA认证关联状态机aaa_fsm.c- AP认证授权记账- 4次握手过程管理
-
P2P状态机
p2p_dev_fsm.c- P2P设备状态机p2p_role_fsm.c- P2P角色状态机- GO/Client角色切换
-
扫描管理
scan_fsm.c- 扫描状态机scan_cache.c- 扫描结果缓存ap_selection.c- AP选择算法
-
信道资源
rlm.c- 无线资源管理rlm_domain.c- 频域管理rlm_protection.c- 保护机制
-
BSS管理
bss.c- 基本服务集管理cnm.c- 连接管理cnm_mem.c- 连接内存管理
-
QoS与速率
wmm.c- WMM/QoS实现rate.c- 速率控制qosmap.c- QoS映射
-
TWT (Target Wake Time)
twt.c- TWT基础功能twt_planner.c- TWT调度器twt_req_fsm.c- TWT请求状态机
-
安全机制
rsn.c- 健壮安全网络privacy.c- 隐私保护wapi.c- WAPI实现tkip_mic.c- TKIP/MIC实现
-
802.11ax特性
he_ie.c- HE IE处理he_rlm.c- HE资源管理
- 接收处理
+----------------+ +---------------+ +----------------+
| 硬件接收管理帧 | --> | 管理帧分发器 | --> | 对应状态机处理 |
+----------------+ +---------------+ +----------------+
- 发送处理
+----------------+ +---------------+ +----------------+
| 状态机触发 | --> | 管理帧构造 | --> | 硬件队列调度 |
+----------------+ +---------------+ +----------------+
-
网络发现与选择
- 主动/被动扫描
- 信道评估
- AP评分和选择
-
认证与关联
- 开放系统认证
- WPA/WPA2/WPA3认证
- 关联请求/响应
-
资源协商
- 速率集协商
- QoS参数协商
- 信道带宽协商
-
漫游控制
- 信号强度监控
- 漫游触发条件
- 目标AP选择
-
性能统计
stats.c- 统计信息收集- 吞吐量监控
- 错误率统计
-
诊断功能
swcr.c- 软件控制寄存器wnm.c- 无线网络管理rrm.c- 无线电资源测量
-
发送路径 (TX)
nic_tx.c- 数据包发送处理nic_txd_v1/v2/v3.c- TX描述符处理cmd_buf.c- 命令缓冲区管理
-
接收路径 (RX)
nic_rx.c- 数据包接收处理nic_rxd_v1/v2/v3.c- RX描述符处理que_mgt.c- 队列管理
-
命令接口
nic_cmd_event.c- 基础命令事件nic_ext_cmd_event.c- 扩展命令事件nic_uni_cmd_event.c- 统一命令事件
-
功能模块
nic_pwr_mgt.c- 电源管理nic_rate.c- 速率控制nic_umac.c- UMAC接口
-
初始化与配置
gl_init.c- 驱动初始化gl_cfg80211.c- cfg80211接口实现gl_custom.c- 自定义配置
-
系统接口
gl_kal.c- 内核抽象层gl_sys.c- 系统调用封装gl_proc.c- proc文件系统接口
-
无线扩展
gl_wext.c- 无线扩展接口gl_wext_priv.c- 私有无线扩展
-
P2P功能
gl_p2p.c- P2P核心功能gl_p2p_cfg80211.c- P2P的cfg80211接口gl_p2p_init.c- P2P初始化gl_p2p_kal.c- P2P内核抽象
-
调试与测试
gl_qa_agent.c- QA测试代理gl_ate_agent.c- ATE测试代理gl_rst.c- 复位处理
-
供应商扩展
gl_vendor.c- 供应商通用接口gl_hook_api.c- 钩子API实现platform.c- 平台相关实现
-
发现机制
nanDiscovery.c- 服务发现nanScheduler.c- NAN调度器nanReg.c- 注册管理
-
数据引擎
nan_data_engine.c- 数据处理核心nan_data_engine_util.c- 工具函数nan_txm.c- 传输管理
-
安全机制
nan_sec.c- 安全功能实现wpa_supp/- WPA相关实现- 四次握手
- 密钥管理
- 加密解密
-
设备管理
nan_dev.c- NAN设备控制- 设备状态管理
- 接口配置
-
测距功能
nan_ranging.c- NAN测距实现- 距离测量
- 位置服务
- NAN服务发现
+----------------+ +---------------+ +----------------+
| 服务发布/订阅 | --> | 服务匹配 | --> | 服务连接建立 |
+----------------+ +---------------+ +----------------+
- 数据传输流程
+----------------+ +---------------+ +----------------+
| 数据路径建立 | --> | 安全协商 | --> | 数据传输 |
+----------------+ +---------------+ +----------------+
- 测距过程
+----------------+ +---------------+ +----------------+
| 测距请求 | --> | 时间同步 | --> | 距离计算 |
+----------------+ +---------------+ +----------------+
+--------+ +---------+ +--------+
| OS层 | <-> | NIC层 | <-> | 硬件层 |
+--------+ +---------+ +--------+
+---------+ +---------+ +---------+
| cfg80211 | -> | NIC命令 | -> | 固件接口 |
+---------+ +---------+ +---------+