(10)高通AP10.4开发者指南——WLAN(2.4 Queue管理)
来源:互联网 发布:人工智能语音机器人 编辑:程序博客网 时间:2024/06/07 07:17
2.4 队列管理(Queue Management)
2.4.1 硬件队列(Hardware Queues)
WLAN硬件,根据frame的不同类型,提供了一些传输queue,来优化frame的传输。HAL模块提供了一些API,供LAMC层去修改这些queue的属性,比如AIFS、CWMin、CWMax、TXOPLimit等。本设计最多支持HAL_NUM_TX_QUEUES个队列(HAL设置此宏为10)。其队列的优先级是降序的,也就是说,queue9是最高优先级的,queue0是最低优先级的。
2.4.2 LMAC队列的支持(LMAC Queuing Support)
2.4.2.1 ath_txq
ath_txq是LMAC层的数据结构,它跟hardware queue是一一对应的关系。ath_txq作为结构体ath_softc的成员变量,定义成这样:sc_txq[HAL_NUM_TX_QUEUES],所以共有HAL_NUM_TX_QUEUES (10)个ath_txq(在LMAC中,缩写成“txq”)。
在这10个txq中,前4个,即queue0-3被称为DATA queue,他们分别与4个WMM access类型相对应:background、best effort、video、voice。
txq-9叫做beacon queue (bcnq) ,beacon frame会在这个queue中管理。
txq-8叫做content-after-beacon (CAB) queue (cabq)。这个queue主要用于,在beacon传输后,分发从每个VAP得到的组播frame。
剩下的txq 4-7,用于其他类型。其中一些会用于满足一些featrue的需求,详细说明请参看对应的feature章节。
2.4.2.2 软件队列(Software Queues)
LMAC还提供software queue,分离于hardware queue。driver提供的transmit descriptor是有限资源,因此software queue主要用于流控(flow control)。
LMAC提供两种software queue:
2.4.2.2.1 TID队列(Traffic Identifier (TID) Queues)
IEEE 802.11标准为每个流量(traffic classification)节点提供最多16个TID。因此LMAC也提供16个TID queue,与LMAC自己创建的ath_node一一对应,用于数据流。这些TID queue用数据结构ath_atx_tid来表示。
UMAC的data frame,根据其packet类型,会选择一个TID queue使用。而对于management frame,结构体ath_node中增加了一个额外的TID queue (TID-17),用于处理除beacon以外的所有management frame。
17个TID queue中所有的frame都通过hardware data queues 0-3来传输。那这17个TID queue(与 ath_node对应)是如何分配到这4个hardware data queue的,主要是通过一个叫做access category queue的媒介来进行的。缩写为“acq”,由结构体ath_atx_ac来代表。
- Tid queue 0和1,与acq0 list对应(Background access category queue,txq0)。
- Tid queue 2和3,与acq1 list对应(Best effort access category queue,txq1)。
- Tid queue 4和5,与acq2 list对应(Video access category queue,txq2)。
- Tid queue 6和17,与acq3 list对应(Voice access category queue,txq3)。
2.4.2.2.2 组播帧队列(Multicast Frame Queues)
对于每个VAP实例(avp),LMAC都提供一个software queue用于multicast frame。这些queue在结构体ath_vap中定义为“av_mcastq”。从VAP得到的multicast frame会放到av_mcastq队列中,并通过CAB queue(txq8)来传输出去。
图 2-3 说明了TID queue、mcast queue与hardware queue的对应关系。
图 2-3 Transmit Queue关系图
- (10)高通AP10.4开发者指南——WLAN(2.4 Queue管理)
- (9)高通AP10.4开发者指南——WLAN(2.3 Buffer管理)
- (2)高通AP10.4开发者指南——WLAN(1.2 WLAN软件架构)
- (1)高通AP10.4开发者指南——WLAN(1.1 Wireless LAN简介)
- (7)高通AP10.4开发者指南——WLAN(2.1 主要数据结构)
- (5)高通AP10.4开发者指南——WLAN(1.5 WLAN驱动模块化的一些其他修改)
- (6)高通AP10.4开发者指南——WLAN(1.6 Wi-Fi校准数据映射)
- (8)高通AP10.4开发者指南——WLAN(2.2 上下文及同步处理)
- (3)高通AP10.4开发者指南——WLAN(1.3 QCA_Networking_2016.SPF.2.0版本的WLAN驱动模块架构)
- (4)高通AP10.4开发者指南——WLAN(1.4 Offload和direct-attach两种模式下驱动的模块化)
- 【WLAN从入门到精通-基础篇】第4期——华为WLAN产品介绍(了解即可)
- Protocol Buffers开发者指南(一)——概论
- OAuth2开发者指南—服务端
- OAuth2开发者指南—客户端
- 前端开发者指南(2017)
- 【WLAN从入门到精通-基础篇】第5期——华为WLAN产品命名规范(了解即可)
- OpenStack高可用性指南(1)——介绍
- Android开发者指南(10) —— Android API Levels
- Java产生死锁的一个简单例子
- idea tomcat 怎样出现update classes and resources
- 深入理解 Java 虚拟机--Java 内存模型与线程
- 概率图模型7:推理与流动
- 算法设计与应用基础:第十七周(2)
- (10)高通AP10.4开发者指南——WLAN(2.4 Queue管理)
- lua,使用sleep的各种方法
- 第1.1章 docker之centos6.*
- Visual Studio 2010 单元测试之一---普通单元测试
- ionic emulate实时调试修改
- 分割nohup.out文件
- javascript面向对象编程
- 关于idea 修改jsp文件后不能生效
- mysql之 mysql数据库压力测试工具(mysqlslap)