第四章、無線網路驅動程式
第一節、函式的分類與簡介
整個驅動程式大致上可以分成十一類。
l 硬體configuration函式類
l configuration相關函式類
l I82593晶片控制函式類
l 發訊卡管理函式類
l 中斷處理函式類
l 接收封包函式類
l 傳送封包函式類
l 雜項函式類
l 除錯與秀訊息函式類
l 模組函式類
其主要功能如下:
雜項類
包含禁止中斷、回復中斷、資料結構類型檢查等
發訊卡管理類
包含對發訊卡暫存器(HACR)的讀寫,對參數儲存區(PSA)的讀寫,對發訊卡控制器(MMC)的讀寫,對頻率延伸記憶體的讀寫(FEE)等
i83593晶片控制類
包含送命令到i82593晶片,對晶片configuration,以及對晶片buffer的處理
訊息與除錯類
顧名思義就是用來秀出各種訊息及除錯的函式。
接收封包類
包含封包的接收與檢查及相關的資料讀取等。
傳送封包類
將上層送下來的封包處理後送出去。
硬體設定類
包含晶片設定,各硬體資料的初始化,硬體的啟動等等。
中斷處理函式類
包含對各中斷事件的判斷與各種處理,以及對時間的監視。
模組函式類
包含模組的初使啟動以及清除等。
第二節、無線網路卡CONFIGURATION PROCESS
(1) Card Insert PCMCIA socket。
(2) cardmgr由/ect/pcmcia/config檔讀取Card的名字。
(3) cardmgr動態地載入object file of the driver。
(4) kernel執行ini_model()。向Card Service來Register這個driver。
(5) cardmgr call DS_BIND_REQUEST ioctl。
(6) Driver Services檢查DS_BIND_REQUEST是否和其dev_info相
同。若是,呼叫driver’s attach()。(在Wavelan Driver中即wavelan_attach())
------------------- Registration階段完成 ------------------
(7) event of card insertion由socket layer產生。
(8) event_hander()被呼叫。
(9) event_heaner()呼叫deriver’s config()。(在Wavelan Driver中即wavelan_config())
(10)driver’s config()進行一連串的configuration工作。
------------------- Configuration階段完成 -----------------
第三節、對驅動程式的處理
我們曾經參考一個類似的文件,它的目的大致上也是建立一個可供研究的無線網路環境。不過與我們不同的是這個份文件所建立的驅動程式並沒有支援上層網路的應用程式,也就是說,雖然有網路可以聯通,但其程式已經沒有網路的功能,整個驅動程式並不是屬於net device driver而是傾向character device driver。對於我們來說,我們希望不但能夠建立一個可供研究的實驗平台外,也希望能儘量保持其原有的網路功能。因此,基本上我們儘可能保持原來驅動程式的完整,而主要的處理部份則是把焦點放在資料封包的傳送以及接收這兩大類的函式。因為只要在封包由下往上傳遞的過程中,我們可以將之攔截起來並加以處理,那就相當於在整個通訊網路層中插入一個我們想要處理或加工的平台介面,則所有我們想要作的實驗與測量,都可以透過此一介面對之進行測試。
沒有留言:
張貼留言