一,linux内核当前无线网络驱动架构说明
上图为linux内核现行的无线网络架构
2,数据结构(data structure)
struct ieee80211_local, struct ieee8021__hw
a,这两个都表示一个无线网络设备实例(hw嵌入在local之中)
b,ieee80211_hw是ieee80211_local的一部分,并且对驱动来说是可见的
c,包含了所有的无线设备的操作函数
struct sta_info,ieee80211_sta
a,表示一个station
b,ieee80211_sta是驱动的可见部分
struct ieee80211_conf
a,硬件配置
b,硬件specific参数
struct ieee80211_bss_conf
a,BSS配置
b,对所有的BSS可用(IBSS,infrastructure BSS,AP,managed)
c,包含基本的速率数据表
struct ieee80211_key,struct ieee80211_key_conf
a,表示一个加密、解密的key
b,ieee80211_key_conf被用于驱动的硬件加速
c,ieee80211_key也包含了软件加密状态
struct ieee80211_tx_info
a,包含很多复杂的数据结构
b,里面含有skb的控制buffer(cb)
c,通过mac80211初始化,被驱动使用(driver_data,rate_driver_data),tx状态报告
struct ieee80211_tx_status
a,包含接收帧的状态信息
b,通过驱动传递给mac80211
struct ieee80211_if_data,struct ieee80211_vif
a,包含每个虚拟interface的信息
b,ieee80211_vif被驱动用于这些驱动所知道的虚拟interface,
c,根据工作模式包含一些子架构
ieee80211_if_ap
ieee80211_if_wds
ieee80211_if_vlan
ieee80211_if_managed
ieee80211_if_ibss
ieee80211_if_mesh