linux wifi WEXT和NL80211訪問接口簡介 及imx6ul+realtek rtl8189es 驅動調試

Linux無線驅動接口有兩種標準接口,wext(Wireless Extensions無線擴展接口)和nl80211接口。

wext的接口實現上,應用層採用ioctl方式訪問驅動,設置無線參數或者獲取無線參數,配置無線驅動進行聯網操作。無線驅動事件到應用層的傳遞採用的netlink socket技術,一種netlink route消息技術。這也是很多其他類型的驅動標準的實現方法。但在linux-2.6.25(記得不是很清楚了,懶得確定了)之後,wext API接口版本停止在V22就不再進行更新了。而替代其的是nl80211接口。

    nl80211接口其實在linux-2.6.18併入wext和mac80211協議棧的時候已經提供,但當時的功能還不完整,而且應用層的軟件還是都使用WEXT接口,驅動基本不使用nl80211接口實現(除了基於mac80211協議棧的驅動)。 nl80211接口是由開發者Johannes Berg實現的,他也是cfg80211(無線協議棧配置接口,在無線驅動接口和mac80211之間的接口)和mac80211的維護者。無論是用戶層訪問驅動還是驅動事件通知應用層,nl80211接口都採用的netlink技術。

   nl80211接口逐漸替代wext接口的原因主要是使用netlink技術在應用層和內核層數據交換上相比ioctl方式具有優勢,具體的比較見點擊打開鏈接(轉載的一篇文章,寫得非常清楚),而且很多其他之前使用ioctl的驅動也逐漸採用了netlink方式。再一個原因就是802.11協議的發展,隨着802.11n協議以及P2P,WPS無線規範的加入,協議的很多功能可以在應用層實現,增加了很多應用層與驅動層間的API接口和事件。WEXT接口不方便功能擴展的缺點,nl80211可以完全支持wext的所有功能,又可以在不修改內核的情況下增加命令字和事件。無線驅動接口從wext發展到nl80211也就順理成章。

1. linux kernel4.1 wext vs nl80211:

 

 

下面以realtek rtl8189es模塊在imx6ul上爲例 :

2. realtek wifi driver 配置:

 

 

ifeq ($(CONFIG_PLATFORM_IMX6UL), y)

EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN

#EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT

EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC

EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE

EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211

EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT

#ARCH := arm

#CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi-

#KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env

MODULE_NAME := rtl8189ES

endif

 

3. make modules

4. insmod rtl8189es.ko

5.iw dev wlan0 scan | grep SSID

6. station mode:

station mode:

=======connect.sh===========

#/bin/sh

killall hostapd udhcpd wpa_supplicant udhcpc 2> /dev/null

 

wpa_supplicant -Dnl80211 -iwlan0 -cwpa_supplicant.conf -B

udhcpc -i wlan0

=======connect.sh end========

 

 

=======wpa_supplicant.conf====

ctrl_interface=/var/run/wpa_supplicant

ap_scan=1

 

network={

        ssid="liuxd"

        psk="12345678"

}

=======wpa_supplicant.conf end====

 

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