Bug 12772 - wpa_supplicant не работает на уже ассоциированном интерфейсе
: wpa_supplicant не работает на уже ассоциированном интерфейсе
Status: CLOSED FIXED
: Branch 4.0
(All bugs in Branch 4.0/wpa_supplicant)
: 4.0
: all Linux
: P2 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2007-09-14 02:59 by
Modified: 2011-09-10 11:13 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-09-14 02:59:20
Если интерфейс предварительно ассоциировать с точкой доступа через
wireless-tools, то wpa_supplicant перестаёт работать.

Пример:
настраиваем карту через iwconfig eth1 essid myessid key 0x12121212

После этого пытаемся перенастроить плату с помощью alterator-net-wifi на WEP.
Получаем странное - идёт коннект, после этого сразу - дисконнект. Это зависит
от
ядерного драйвера, и воспроизводится железно на ipw3945.

Проблема в том, что если интерфейс уже ассоциирован с точкой доступа, то
драйвер
не отправляет SIOCGIWAP (в общем то он прав), и wpa_supplicant никогда не
получает сигнал о том, что подсоединение к точке доступа прошло успешно. И
соответственно процедура аутентификации обламывается по таймауту (хотя во время
таймаута сеть работает), после таймаута идёт повторная процедура и так до
бесконечности.

Мне показалось правильным способом исправить данную проблему - перед началом
аутентификации на точке доступа сбросить ассоциацию, что в общем то никому не
вредит (процедура тривиальная), а драйверу скажет "разорви соединение, если был
подключен".

Патч тривиален, просьба приложить как в Sisyphus так и в branch/4.0:
diff --git a/wpa_supplicant/driver_wext.c b/wpa_supplicant/driver_wext.c
index de97950..7a3daf9 100644
--- a/wpa_supplicant/driver_wext.c
+++ b/wpa_supplicant/driver_wext.c
@@ -1796,6 +1796,12 @@ wpa_driver_wext_associate(void *priv,
        int value;

        wpa_printf(MSG_DEBUG, "%s", __FUNCTION__);
+       /*
+        * DeAuthenticate workaround for already authentificated driver
+        *
+        */
+        
+       wpa_driver_wext_deauthenticate(drv,params->bssid,0);

        /*
         * If the driver did not support SIOCSIWAUTH, fallback to
------- Comment #1 From 2007-09-14 03:01:16 -------
перевешиваю на "последнего кто изменял"

Стас, внеси пожалуйста данное изменение.
2lioka: посмотри, на твой взгляд - что-то оно сломает ? я у себя протестировал -
работает fine, как с настроенной точкой так и с отключенной.
------- Comment #2 From 2007-09-14 03:10:53 -------
Забыл добавить - эта ошибка вылезает только в случае использование
аутентификации WEP а не WPA
------- Comment #3 From 2011-09-10 11:13:41 -------
давно исправлено.