高通AP10.4开发者指南(三)

您所在的位置:网站首页 AR9300 高通AP10.4开发者指南(三)

高通AP10.4开发者指南(三)

2023-05-03 04:47| 来源: 网络整理| 查看: 265

 网络

高通AP10.4开发者指南(三) 请尊重原创版权,转载注明出处。 三 代码基本结构(Code Base Structure)

本章节主要描述了代码相关的基本结构,并提供“代码目录”、“数据结构”、“分层”、“源代码分布树”、“编译选项”、“运行时的配置选项”等信息。

代码目录(Directory Structure)

下面是相关目录:

drivers/wlan /os /linux /win_nwf/ /darwin … /hal /ar9300 … /lmac /ath_dev /ratectrl /umac /mlme /txrx /crypto /qca_da

主要数据结构(Common Data Structure) vap 针对每个接口的抽象(这里的接口指每个AP(作为AP模式时)、每个station(作为station时模式))。 在一个物理接口上,可以虚拟出多个VAP。 node 一个node对应一个连接。 每层都会维护node结构中的一部分。 ic 在网络以及更高层中的Device抽象 sc ath层的Device ath_hal HAL层数据结构 分层(Layers)

host驱动架构包含OS 适配层、802.11协议层、device层、HAL层。下面是详细说明:

OS 适配层(OS Shim Layer)

OS 适配层提供下面功能:

驱动初始化和加载 中断申请和关联 接口适配和调用 每种操作系统都会有一个OS适配层。比如Native Wifi、NetBSD、Darwin、Linux、eCos、VxWorks等。OS适配层是系统函数和本代码之间的桥梁,同时还包含下面内容: 系统相关的初始化(如中断、buffer分配) 通用函数库(如locking/malloc) 传输和中断(包括接收)的OS层入口 OS 适配层函数(OS Shim Functions)

OS适配层函数参看文件osdep.h (wlan/os/darwin/include)和文件ath_osdep.c(wlan/os/darwin/src),同时还有一些系统接口:

OS_SLEEP OS_GET_TIMESTAMP OS_TIMER spin_lock_init spin_lock spin_unlock Struct ath_reg_params ath_params = {}; ath_driver_command – ioctl interface ath_dev_start ath_dev_stop 802.11协议层(802.11 Protocol Layer (net, UMAC))

802.11协议层(又叫做网络或UMAC层)包含了完整的链接控制。它是由分层状态机(比如connectionSM->AssocSM)实现的。 UMAC提供了包的封装/解封装功能(dot3dot11)。UMAC层负责多个VAP共享一个channel和HW情况下的资源管理。 同时UMAC层还提供下面的功能:

电源管理(Power Management) MLME Scanning Encryption UMAC到LMAC接口函数(UMAC-to-LMAC interface)

UMAC到LMAC通过一个转换表来完成调用。这个表通过ath_attach()函数传递给UMAC。代码路径:lmac/ath_dev/ath_main.c

struct ath_ops {} ath_ar_ops = {}; Sample calls: ath_vap_attach ath_vap_detach ath_tx_init ath_rx_init ath_tx_start_dma ath_set_channel ath_get_channel ath_intr ath_handle_intr 设备层(Device Layer (ath, LMAC))

设备层提供下面功能:

Transmit Receive Interface between network and HAL (“pass-through” interface functions) Tx aggregation Rx reordering DMA Interrupt handling LMAC到UMAC接口函数(LMAC-to-UMAC interface)

LMAC到UMAC也通过一个转换表来完成调用。这个表通过ath_attach()函数中的ath_dev_attach()传递给UMAC。代码路径:

struct ieee80211_ops net80211_ops = {}; Sample calls: ath_net80211_tx_complete ath_net80211_rx ath_net80211_input ath_net80211_set_countrycode LMAC到HAL接口函数(LMAC-to-HAL interface)

LMAC到HAL的接口调用通过ath_hal_attach()函数中的ath_dev_attach()。代码路径:wlan/hal/ah.c

ath_hal_attach()通过传递device id来attach到相应的设备。

例如:ar9300Attach()是针对AR93xx芯片组的。代码路径在wlan/hal/ar9300/ar9300_attach.c 这个函数会返回一个AR93xx的函数表,包括:

ar9300EnableReceive ar9300StartTxDma ar9300SetTxDP ar9300FillTxDesc ar9300ProcRxDesc 文档信息 -------------- * 作者: * 版权声明:自由转载-非商用 * 转载: []

Markdown简明教程

 更多阅读

IPQ4019MTD分区生成的过程 backports的层次 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953实例分析篇) Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇) Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3