backports的層次

backports的層次

 

引言

Linux 無線驅動的開源項目backports的分析。

 

介紹

整個驅動代碼分成兩個結構。80211通用的功能提取出來做成通用層,這一部分叫做soft mac。而一些與芯片處理相關的部分代碼放在各個芯片目錄下,這部分是芯片的特定mac層。

 



 

一般而言 mac驅動有兩個方面,一是數據轉發,二是管理。我們把這兩個方面,分別叫作數據層面和管理層面,或是數據面與管理面。

 

soft mac層的三個層次

 

soft mac 層就是/net/mac80211部分代碼,它向上完成了與linux kernel的對接,並使用linux genl方式,爲用戶層程序訪問配置無線驅動提供了接口。單就管理面而言有四個模塊。如下圖:


nl80211

 這一層的代碼在/net/wireless/nl80211.c。這是用戶程序調用相關的系統調用在內核的入口。

處理各種不同的命令。它向下會調用cfg80211層。

linux爲配置有線接口定義了一些ioctl的命令字,由於無線接口的可配置項遠遠比有線接口的可配置多很多。ioctl命令字空間也有限,所以爲無線接口的管理面定義了

使用netlink genl全新的接口,叫做nl80211

 

cfg80211

 

這一層負責管理層面的工作。不關心數據轉發的業務。

驅動掃描到一個物理芯片時,此芯片(代碼中叫wiphy)會註冊到cfg80211層。cfg80211層就組織好所有無線接口,以及他們的屬性。它可以處理的業務有:

無線虛接口相關,如channel,創建無線虛接口;加密密鑰管理等。

過程管理相關,station的過程管理部分(掃描,上下線)

還有一部分與linux相關的,如輸出sysfs;註冊ethtool等。

 

cfg80211_rdev_list 全局變量,用於組織和管理wiphy。注意這可不是一個無線的虛擬接口。

 

mac80211

 

這一層既負責管理層面,也要負責數據層面。

這一層主要關心的是無線虛擬接口,station等。而無線的虛擬接口

會把所有的無線虛擬接口組織管理起來。

在管理層面上,wiphy會向cfg80211註冊時會把mac80211_config_ops作爲自己的config_ops。這樣管理層會通過mac80211層。通過這一層再下發到芯片層。


數據層面的處理主要是rxtx兩方面。

因爲linux 的bridge只處理以太報文;所以此層會完成這種幀的轉換;在接收時此層完成把無線數據幀(802.11)轉成以太數據(802.3),並交給linux的網絡協議棧處理。發送的過程與之相反。


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章