Skip to content

benboguan/mt7921u

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MediaTek MT7921UA 无线网卡驱动

本项目是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.arm64

目录结构

核心目录

  • common/ - 通用功能实现
  • 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 - 内存预分配支持

AP KVR配置

  • CFG_AP_80211KVR_INTERFACE - AP KVR接口
  • CONFIG_WIFI_SUPPORT_GET_NOISE - 噪声获取支持
  • CFG_WIFI_SUPPORT_NOISE_HISTOGRAM - 噪声直方图支持

调试功能

调试支持

  • CFG_SUPPORT_DEBUG_FS=0 - 禁用DebugFS
  • WLAN_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     |
+------------------+

核心组件

  1. 网络接口管理 (NIC)

    • nic_tx.c - 发送数据包处理
    • nic_rx.c - 接收数据包处理
    • nic_cmd_event.c - 命令事件处理
    • que_mgt.c - 队列管理
  2. 内存管理

    • 预分配内存池
    • WFDMA (WiFi Direct Memory Access)
    • 缓冲区管理
  3. 协议栈实现

    • 802.11协议状态机
    • 安全协议(WPA/WPA2/WPA3)
    • P2P协议支持
  4. 电源管理

    • nic_pwr_mgt.c - 电源状态控制
    • TWT调度器
    • 节能模式管理

数据流程

发送路径

  1. 数据包进入

    • 从网络栈接收SKB
    • 数据包分类和优先级排队
  2. 发送处理

    • 报头封装
    • 加密处理(如需要)
    • 硬件队列调度
    • DMA映射和传输
  3. 硬件交互

    • 通过USB/PCIe发送
    • 发送完成中断处理
    • 资源回收

接收路径

  1. 硬件接收

    • 中断触发
    • DMA接收
  2. 数据处理

    • 报头解析
    • 解密处理
    • 数据包重组
  3. 上层递交

    • SKB分配
    • 递交网络栈

控制流程

初始化流程

  1. 驱动加载

    • 设备探测
    • 资源分配
    • 硬件初始化
  2. 固件加载

    • 固件校验
    • 下载固件
    • 启动固件
  3. 网络接口创建

    • 注册netdev
    • 配置MAC地址
    • 初始化队列

配置流程

  1. 命令处理

    • nl80211命令解析
    • 参数验证
    • 配置下发
  2. 状态管理

    • 扫描控制
    • 连接管理
    • 速率控制
  3. 资源管理

    • 信道配置
    • 功率控制
    • 队列参数

调试机制

数据收集

  1. 硬件状态

    • 寄存器dump
    • 内存dump
    • 固件日志
  2. 软件状态

    • 驱动统计
    • 队列状态
    • 连接信息
  3. 性能数据

    • 吞吐量统计
    • 延迟统计
    • 错误统计

管理帧处理架构

状态机系统

  1. AIS (基础架构模式状态机)

    • ais_fsm.c - 基础架构网络连接状态管理
    • 扫描、认证、关联等状态转换
    • 漫游决策和执行
  2. SAA/AAA (认证与关联)

    • saa_fsm.c - STA认证关联状态机
    • aaa_fsm.c - AP认证授权记账
    • 4次握手过程管理
  3. P2P状态机

    • p2p_dev_fsm.c - P2P设备状态机
    • p2p_role_fsm.c - P2P角色状态机
    • GO/Client角色切换
  4. 扫描管理

    • scan_fsm.c - 扫描状态机
    • scan_cache.c - 扫描结果缓存
    • ap_selection.c - AP选择算法

资源管理

  1. 信道资源

    • rlm.c - 无线资源管理
    • rlm_domain.c - 频域管理
    • rlm_protection.c - 保护机制
  2. BSS管理

    • bss.c - 基本服务集管理
    • cnm.c - 连接管理
    • cnm_mem.c - 连接内存管理
  3. QoS与速率

    • wmm.c - WMM/QoS实现
    • rate.c - 速率控制
    • qosmap.c - QoS映射

高级特性

  1. TWT (Target Wake Time)

    • twt.c - TWT基础功能
    • twt_planner.c - TWT调度器
    • twt_req_fsm.c - TWT请求状态机
  2. 安全机制

    • rsn.c - 健壮安全网络
    • privacy.c - 隐私保护
    • wapi.c - WAPI实现
    • tkip_mic.c - TKIP/MIC实现
  3. 802.11ax特性

    • he_ie.c - HE IE处理
    • he_rlm.c - HE资源管理

管理帧处理流程

  1. 接收处理
+----------------+     +---------------+     +----------------+
| 硬件接收管理帧  | --> | 管理帧分发器   | --> | 对应状态机处理 |
+----------------+     +---------------+     +----------------+
  1. 发送处理
+----------------+     +---------------+     +----------------+
| 状态机触发     | --> | 管理帧构造    | --> | 硬件队列调度   |
+----------------+     +---------------+     +----------------+

关键业务流程

  1. 网络发现与选择

    • 主动/被动扫描
    • 信道评估
    • AP评分和选择
  2. 认证与关联

    • 开放系统认证
    • WPA/WPA2/WPA3认证
    • 关联请求/响应
  3. 资源协商

    • 速率集协商
    • QoS参数协商
    • 信道带宽协商
  4. 漫游控制

    • 信号强度监控
    • 漫游触发条件
    • 目标AP选择

调试与统计

  1. 性能统计

    • stats.c - 统计信息收集
    • 吞吐量监控
    • 错误率统计
  2. 诊断功能

    • swcr.c - 软件控制寄存器
    • wnm.c - 无线网络管理
    • rrm.c - 无线电资源测量

网卡接口控制器(NIC)架构

数据路径

  1. 发送路径 (TX)

    • nic_tx.c - 数据包发送处理
    • nic_txd_v1/v2/v3.c - TX描述符处理
    • cmd_buf.c - 命令缓冲区管理
  2. 接收路径 (RX)

    • nic_rx.c - 数据包接收处理
    • nic_rxd_v1/v2/v3.c - RX描述符处理
    • que_mgt.c - 队列管理

硬件交互

  1. 命令接口

    • nic_cmd_event.c - 基础命令事件
    • nic_ext_cmd_event.c - 扩展命令事件
    • nic_uni_cmd_event.c - 统一命令事件
  2. 功能模块

    • nic_pwr_mgt.c - 电源管理
    • nic_rate.c - 速率控制
    • nic_umac.c - UMAC接口

操作系统接口层(OS)架构

Linux核心接口

  1. 初始化与配置

    • gl_init.c - 驱动初始化
    • gl_cfg80211.c - cfg80211接口实现
    • gl_custom.c - 自定义配置
  2. 系统接口

    • gl_kal.c - 内核抽象层
    • gl_sys.c - 系统调用封装
    • gl_proc.c - proc文件系统接口
  3. 无线扩展

    • gl_wext.c - 无线扩展接口
    • gl_wext_priv.c - 私有无线扩展

特性支持

  1. P2P功能

    • gl_p2p.c - P2P核心功能
    • gl_p2p_cfg80211.c - P2P的cfg80211接口
    • gl_p2p_init.c - P2P初始化
    • gl_p2p_kal.c - P2P内核抽象
  2. 调试与测试

    • gl_qa_agent.c - QA测试代理
    • gl_ate_agent.c - ATE测试代理
    • gl_rst.c - 复位处理
  3. 供应商扩展

    • gl_vendor.c - 供应商通用接口
    • gl_hook_api.c - 钩子API实现
    • platform.c - 平台相关实现

邻居感知网络(NAN)架构

核心功能

  1. 发现机制

    • nanDiscovery.c - 服务发现
    • nanScheduler.c - NAN调度器
    • nanReg.c - 注册管理
  2. 数据引擎

    • nan_data_engine.c - 数据处理核心
    • nan_data_engine_util.c - 工具函数
    • nan_txm.c - 传输管理
  3. 安全机制

    • nan_sec.c - 安全功能实现
    • wpa_supp/ - WPA相关实现
      • 四次握手
      • 密钥管理
      • 加密解密

特殊功能

  1. 设备管理

    • nan_dev.c - NAN设备控制
    • 设备状态管理
    • 接口配置
  2. 测距功能

    • nan_ranging.c - NAN测距实现
    • 距离测量
    • 位置服务

业务流程

  1. NAN服务发现
+----------------+     +---------------+     +----------------+
| 服务发布/订阅  | --> | 服务匹配     | --> | 服务连接建立   |
+----------------+     +---------------+     +----------------+
  1. 数据传输流程
+----------------+     +---------------+     +----------------+
| 数据路径建立   | --> | 安全协商     | --> | 数据传输      |
+----------------+     +---------------+     +----------------+
  1. 测距过程
+----------------+     +---------------+     +----------------+
| 测距请求      | --> | 时间同步     | --> | 距离计算      |
+----------------+     +---------------+     +----------------+

跨模块交互

数据流转换

+--------+     +---------+     +--------+
|  OS层  | <-> |  NIC层  | <-> | 硬件层 |
+--------+     +---------+     +--------+

控制流程

+---------+     +---------+     +---------+
| cfg80211 | -> | NIC命令 | -> | 固件接口 |
+---------+     +---------+     +---------+

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 99.8%
  • Makefile 0.2%