ATH12K 驱动框架
ATH12K 驱动框架
- ath12k驱动框架及模块交互逻辑详解
- 1. 总体架构
- 2. 关键数据结构
- 2.1 核心数据结构
- 2.2 虚拟接口数据结构
- 3. 硬件抽象层(HAL)
- 4. 无线管理接口(WMI)
- 5. 主机目标通信(HTC)
- 6. 数据路径(DP)
- 6.1 发送路径(TX)
- 6.2 接收路径(RX)
- 7. 多链路操作(MLO)
- 8. 初始化和工作流程
- 8.1 驱动初始化流程
- 8.2 网络接口配置流程
- 8.3 数据传输流程
- 9. 总结
ath12k驱动框架及模块交互逻辑详解
ath12k是Qualcomm Atheros公司针对其12k系列芯片(如QCN9274、QCN6432、WCN7850、IPQ5332等)开发的Linux WiFi驱动程序。这是一个复杂的驱动框架,支持802.11ax (Wi-Fi 6)和802.11be (Wi-Fi 7)标准,同时具备多链路操作(MLO)功能。
1. 总体架构
ath12k驱动采用分层架构设计,主要包括以下核心组件:
- 核心层(core):负责全局资源管理和驱动初始化
- 硬件抽象层(HAL):提供硬件访问接口,屏蔽硬件差异
- WMI(Wireless Management Interface):与固件通信的接口
- HTC(Host Target Communication):处理主机和目标设备间的通讯
- 数据路径(DP):处理数据包的收发路径
- CE(Copy Engine):用于主机和目标设备间的数据传输
- MAC层:提供802.11 MAC层功能
- 总线接口层:支持PCI和AHB等不同总线接口
2. 关键数据结构
2.1 核心数据结构
- struct ath12k_base (ab):表示一个物理设备,管理全局资源
- struct ath12k (ar):表示一个无线接口(radio),每个物理设备可以包含多个radio
- struct ath12k_pdev (pdev):表示一个物理无线设备
- struct ath12k_hw (ah):表示支持MLO的一组radios
- struct ath12k_hw_group (ag):表示一组相关的硬件