LinuxWi-Fi开源驱动程序主要包括mac80211和ath9k/ath5k两种驱动,它们涵盖了从wifi协议的整个mac层到ath层,再到硬件的数据传输和beacon帧的接收、发送过程。 我们来看一下wifi协议的整体框架。wifi协议主要分为物理层(PHY)、媒体访问控制层(MAC)和逻辑链路控制层(LLC)。其中,MAC层负责处理数据包的封装和解封,以及管理无线网络的接入。 在Linux系统中,wifi驱动的主要组件包括mac80211、ath9k/ath5k等。mac80211是Linux内核的一个子系统,它提供了wifi MAC层的功能实现。ath9k/ath5k则是针对特定硬件设备的驱动程序,它们通过mac80211与内核进行交互。 在wifi数据包的发送过程中,首先由内核将数据包传递给虚拟接口ieee80211_subif_start_xmit(tx.c),然后添加802.11头部,初始化传输时间。之后,数据包进入结构体struct ieee80211_local,这个结构体包含了关于硬件的信息,当接口首次添加时就会创建这个结构体。struct ieee80211_local通过结构体ieee80211_hw与硬件驱动程序进行交互。 接着,数据包会进入结构体struct ieee80211_txq,这是发送队列的结构体。在发送前,会设置Wi-Fi头部的TID(Traffic ID),然后调用函数ieee80211_tx(tx.c)来准备发送。如果数据包无法发送,就会被放入时间戳队列中等待。每个子接口维护了一个队列,存储在结构体ieee80211_sub_if_data中的qdata[4]。 函数drv_tx(driver-ops.h)作为实际驱动程序的入口点被调用,将数据帧传递给硬件驱动程序进行发送。在发送过程中,驱动程序会接收结构体struct ieee80211_local和数据缓冲区sk_buff,然后使用函数ath9k_tx()(main.c)将数据包发送到硬件。 在接收过程中,驱动程序会将接收到的数据包传递给内核,然后由内核处理数据包,并将其发送到网络层。这个过程涉及到多个函数和数据结构,例如,函数ath9k_tx()(main.c)会从硬件加载详细信息到结构体ath_softc,更新电源管理(PM)位,并唤醒处于睡眠状态的硬件。然后,使用结构体ath_tx_control跟踪传输状态,开始发送数据。 在ath9k驱动程序中,如果目的地址支持HT(High Throughput),则会尝试进行聚合传输。这是通过函数ath_tx_send_ampdu()(xmit.c)实现的。ath9k驱动程序还注册了相关的函数,以便与其他组件进行交互。 此外,还有一些其他的数据结构和函数用于管理传输过程,例如结构体struct qdata用于管理队列,函数ieee80211_set_qos_header用于设置Wi-Fi头部的TID,函数ieee80211_tx_prepare用于准备发送数据包等。 Linux Wi-Fi开源驱动程序通过一系列复杂的数据结构和函数,实现了wifi数据包的接收、发送过程。这个过程涉及到内核、硬件驱动程序以及各种数据结构和函数的交互。通过这些组件的协同工作,Linux系统可以实现高效的wifi通信。




















剩余10页未读,继续阅读

- s_super0012018-07-26很好的资料,下次再来!!!
- chaojie.xu2021-09-22讲得好,入门
- ghsplay2017-11-23真是所需!!谢谢分享!!
- ccnuwhu2017-07-13还以为是源代码,原来是个说明文档。

- 粉丝: 13
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件项目评审流程.doc
- 基于项目管理方法的技术创新管理.doc
- 古代通信和现代通信教育课件.ppt
- 网络运营实习总结与收获.docx
- 综合布线培训教程.ppt
- 项目管理与管理创新.ppt
- 网络营销与策划实训计划.doc
- 职高常用工具软件项目教程有答案.docx
- 云计算论文:基于消费者均衡和帕累托最优的云计算资源分配策略研究.doc
- 非常权威的弱电项目管理资料.doc
- 星巴克网络营销案例分析[001].ppt
- 基于云计算的电子政务公共平台.doc
- 中国矿业大学计算机网络与安全实践设计报告.doc
- 直线滑台的交流伺服电机PLC控制及人机界面设计毕业设计.doc
- 基于网络环境下的信息技术教学模式的探索与实践研究.doc
- 天大网络与信息检索课件第一讲绪论.ppt


