linux下wifi设备的实现逻辑

说起 Linux 对 WiFi 的支持和实现,给它最有力支持的莫过于 HP 公司的 Jean Tourrilhe。他为当时的Linux定义了一套无线的API,称之为 "Wireless Extension",即无线扩展。在 Linux kernel 2.0.30 和 2.1.17 时被采用。

逻辑图:

无线设备驱动  ----->  Linux内核  ----->  wireless-tools + libiw  ----->  wpa_supplicant  ----->  Linux GUI

无线扩展: 无线设备驱动的无线接口实现  +  Linux内核对无线扩展的支持  +  无线工具集,对应上面前3部分。


一)无线扩展:

1)用户接口:一组管理无线扩展的工具集( 基本库是libiw,工具包是wireless-tools)。
a)/proc/net/wireless
b)wireless-tools 的一些命令:iwconfig、iwevent、iwgetid、iwlist、iwpriv、iwspy、rfkill。

2)内核:修改内核来支持和定义无线扩展。
a) /proc/net/wireless
当查看它的时候,会去查询所有的驱动,如果驱动定义了get_wireless_stats,会显示其结果,否则忽略。
iwlan、bcm4329等设备驱动都有对它的支持 。
b) linux/wireless.h net/wireless/
c) ioctl
主参数是网络接口名,例如eth2,tiwan0。

3)设备驱动:要将无线扩展映射到实际的硬件管理上。
有个图:
linux下wifi设备的实现逻辑_第1张图片

二) wpa supplicant

WPA Supplicant软件包,带有一些无线设备启停脚本,后台程序wpa_supplicant,以及一些基本命令。无线安全模式,像WPA personal,是这里实现的。
命令有:wpa_action、wpa_cli、wpa_passphrase。

三) 上层的GUI。



参考:
1. Jean Tourrilhe的主页

你可能感兴趣的:(linux下wifi设备的实现逻辑)