driver (-D) opção sob wpa_supplicant

11

Antes de wpa_supplicant poder fazer seu trabalho, a interface de rede deve estar disponível e o driver do dispositivo deve estar carregado. wpa_supplicant permite especificar um driver com o sinalizador "-D". Eu tentei isso em alguns sistemas, mas wpa_supplicant parece nunca aceitar o driver que eu especifiquei. Por exemplo:

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 ~ # 

No entanto, se eu iniciar wpa_supplicant sem especificar o driver como wpa_supplicant -i eth1 -c /root/wpafile , ele funcionará perfeitamente. Porque isto é assim? Além disso, nesse caso, é necessário especificar o driver para wpa_supplicant ?

    
por Martin 27.10.2013 / 18:40

1 resposta

13

Você está confundindo os drivers de kernel e os drivers de espaço do usuário. No seu caso, você certamente pode usar o WEXT, mas também o nl80211 (eu acho).

WEXT (ou WE = Wireless Extensions) são as modificações introduzidas no kernel do Linux em 1997 por Jean Tourrhiles. De acordo com esta página da Web escrita pelo próprio Tourrhiles,

The Wireless Extension (WE) is a generic API allowing a driver to expose to the user space, configuration and statistics specific to common Wireless LANs. The beauty of it is that a single set of tool can support all the variations of Wireless LANs, regardless of their type (as long as the driver support Wireless Extension). Another advantage is these parameters may be changed on the fly without restarting the driver (or Linux).

Em outras palavras, o WEXT fica no topo do seu driver e permite que o wpa_supplicant interaja com ele. Observe que wpa_supplicant e o driver pertencem a diferentes regiões do kernel, (a primeira para o espaço do usuário, a segunda para o espaço do kernel), portanto, uma API capaz de agir como um intermediário é necessária. Esse é o papel desempenhado pelos chamados motoristas mencionados por Bob.

No entanto, esta página da Web sem fio do Linux declara explicitamente que

Is WE being further developed ?

No it is not. Only bug fixes are being accepted for WE.

e

What is Wireless-Extensions' replacement?

New development should be focused on cfg80211 and nl80211.

De fato, se uma consulta meu wpa_supplicant forçadamente (ou seja, não a página man, mas o comando

 wpa_supplicant -h

Eu recebo (em parte) esta resposta:

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

Em outras palavras, fiel às palavras do Linux Wireless, o suporte a todos os outros drivers, exceto o Wext e o nl80211 foi descartado, e o suporte ao Wext foi mantido porque ...

Do we still use WE ?

Yes cfg80211 and nl80211 are still being worked on so WEs are still being used. All mac80211 drivers support WEs as mac80211 uses it. The idea is to slowly start moving things onto cfg80211 and nl80211 which are not there yet and add any new features to them as well.

Isso se aplica ao kernel Linux 3.11.1-031101-genérico.

Aqueles que usaram o hostapd já estão, de certo modo, informados de tudo isso, porque o driver padrão do hostapd é exatamente o nl80211.

    
por 28.10.2013 / 13:15