wpa_supplicant下的driver(-D)选项


11

在开始wpa_supplicant工作之前,必须有网络接口,并且必须加载设备的驱动程序。wpa_supplicant允许使用“ -D”标志指定驱动程序。我已经在少数系统上进行了尝试,但wpa_supplicant似乎从未接受我指定的驱动程序。例如:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
    Subsystem: Intel Corporation Device 1011
    Flags: bus master, medium devsel, latency 64, IRQ 11
    Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: ipw2200
    Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

但是,如果我在开始时wpa_supplicant未指定喜欢的驱动程序wpa_supplicant -i eth1 -c /root/wpafile,那么它将完美地工作。为什么会这样呢?另外,在这种情况下,需要为指定驱动程序wpa_supplicant吗?


1
可用的驱动程序列表包括(请参阅手册):HostAP,Prism54,Madwifi,NDISWrapper,AMTEL,IPW(2100和2200两种驱动程序),WEXT(通用Linux无线扩展),有线以太网。其中最有趣的是WEXT(70%的Wifi设备都在使用),如果使用Windows驱动程序则使用NDISWrapper(由Linux兼容性层包装),如果使用则使用Madwifi aircrack。但是,从体系结构的角度来看,我不理解这些驱动程序代表什么级别。
鲍里斯·伯科夫

Answers:


13

您会混淆内核驱动程序和用户空间驱动程序。就您而言,您当然可以使用WEXT,但也可以使用nl80211(我认为)。

WEXT(或WE =无线扩展)是Jean Tourrhiles在1997年对Linux内核进行的修改。根据图拉西斯本人写的这个网页

无线扩展(WE)是一种通用API,允许驱动程序向用户公开特定于常见无线LAN的空间,配置和统计信息。它的优点在于,一套工具可以支持无线LAN的所有变体,而不管它们的类型如何(只要驱动程序支持Wireless Extension)。另一个优点是可以在不重新启动驱动程序(或Linux)的情况下即时更改这些参数。

换句话说,WEXT位于驱动程序的顶部,并允许wpa_supplicant与之交互。请注意,wpa_supplicant和驱动程序属于不同的内核领域(第一个属于用户空间,第二个属于内核空间),因此需要一个能够充当中间对象的API。这就是鲍勃提到的所谓驱动程序所扮演的角色。

但是,此Linux-Wireless Web页面明确声明:

WE是否正在进一步发展?

不它不是。WE仅接受错误修复。

什么是无线扩展的替代品?

新的开发应集中在cfg80211和nl80211上。

实际上,如果直接查询我的wpa_supplicant(即不是手册页,而是命令

 wpa_supplicant -h

我得到(部分)此回复:

drivers:
  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:....

换句话说,忠实于Linux Wireless的话,对除Wext和nl80211之外的所有其他驱动程序的支持已被删除,并且对Wext的支持得以保留,因为...

我们仍然使用WE吗?

是cfg80211和nl80211仍在开发中,因此仍在使用WE。所有mac80211驱动程序都支持WE,因为mac80211使用它。这个想法是要慢慢将东西移到尚不存在的cfg80211和nl80211上,并为其添加任何新功能。

这适用于Linux Kernel 3.11.1-031101-generic。

在某种程度上,已经使用过hostapd的那些人已经了解了所有这些信息,因为hostapd的标准驱动程序正是nl80211。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.