2006年8月24日 星期四

Linux wireless access point

基礎認識Wireless communication


Chipset : Atheros 5212


Platform : ADM-5120 mipsel linux-2.4.31


Driver : MadWifi version r1705
Mipsel 的設定檔在 hal/public/mips-le-elf.inc, 去掉COPTS中的-EL選項.
另一個需要修正的地方在 Makefile.inc, 去掉COPTS中Werror選項.這個東西會把Warning當做Error來處理,也就是中段編譯.
編 譯完成後會有ath_hal.o ath_pci.o ath_rate_sample.o wlan_acl.o wlan_ccmp.o wlan.o wlan_scan_ap.o wlan_scan_sta.o wlan_tkip.o wlan_wep.o wlan_xauth.o.這些都是kernel module. 另外還有一些工具會在tools/目錄中,其中很重要的是wlanconfig.
在busybox的環境中建立module dependence的方式如下.
./examples/depmod.pl --stdout -b ./ramdisk/lib/modules/2.4.31-ADM5120 -k ../linux_2_4_31/vmlinux -F ../linux_2_4_31/System.map


產生modules.dep


這時候會有錯誤 :
unresolved symbol crypto_alloc_tfm in file /lib/modules/2.4.31-ADM5120/net/wlan_ccmp.o
unresolved symbol crypto_cipher_encrypt in file /lib/modules/2.4.31-ADM5120/net/wlan_ccmp.o
unresolved symbol crypto_cipher_setkey in file /lib/modules/2.4.31-ADM5120/net/wlan_ccmp.o
unresolved symbol crypto_free_tfm in file /lib/modules/2.4.31-ADM5120/net/wlan_ccmp.o


經過檢查這幾個function在kerne source中的crypto/api.c,但是並沒有被編譯在kernel中.我嘗試強制將它加入crypto/Makefile並編譯,Error...Error..Error...
wlan_ccmp.o這個module主要是負責AES加解密,我暫時將它移除讓module dependence可以順利完成.
今天看了一下linux-2.4.33的source發現crypto的部份跟偶目前linux-2.4.31有很大的差異.直接copy過來 compile看看.crypto_alloc_tfm, crypto_cipher_encrypt, crypto_cipher_setkey, crypto_free_tfm這幾個symbol就都找到了.問題算是解決了.