#8799 HIGH 8.2.1: WPA association issue when attempted from GUI: XO do not respond to first EAPOL frame
Zarro Boogs per Child
bugtracker at laptop.org
Tue Nov 18 20:13:23 EST 2008
#8799: WPA association issue when attempted from GUI: XO do not respond to first
EAPOL frame
-----------------------------------+----------------------------------------
Reporter: carrano | Owner: jcardona
Type: defect | Status: new
Priority: high | Milestone: 8.2.1
Component: wireless | Version: not specified
Resolution: | Keywords:
Next_action: communicate | Verified: 0
Deployment_affected: | Blockedby:
Blocking: |
-----------------------------------+----------------------------------------
Comment(by jcardona):
I believe we've identified one more issue that is responsible for
wpa_supplicant aborting associations.
The driver notifies the upper layers of certain MAC events, in particular,
when association is lost. On some failures we see two such notifications
from the driver, the second one resulting in wpa_supplicant aborting the
association. This is how it looks from the driver side:
{{{
[362855.108231] libertas cmd: DNLD_CMD: command DEAUTH, seq 98, size 16,
jiffies 36144169
[362855.112841] Send DISCONNECT Event to Supplicant!! (response to deauth
command)
[362856.096990] libertas cmd: DNLD_CMD: command SET CHANNEL, seq 99, size
48, jiffies 36144270
[362856.098844] libertas cmd: DNLD_CMD: command RSN ON-OFF, seq 101, size
12, jiffies 36144270
[362856.109423] libertas cmd: DNLD_CMD: command RSN ON-OFF, seq 102, size
12, jiffies 36144272
[362856.110431] libertas cmd: DNLD_CMD: command AUTHENTICATE, seq 103,
size 25, jiffies 36144272
[362856.111397] libertas cmd: DNLD_CMD: command RADIO ON, seq 104, size
12, jiffies 36144272
[362856.112321] libertas cmd: DNLD_CMD: command ASSOCIATE, seq 105, size
92, jiffies 36144272
[362856.225899] Send DISCONNECT Event to Supplicant!! (firmware event)
[362857.347657] libertas cmd: DNLD_CMD: command SCAN, seq 110, size 63,
jiffies 36144400
[362858.050860] libertas cmd: DNLD_CMD: command SCAN, seq 111, size 63,
jiffies 36144475
[362858.717535] libertas cmd: DNLD_CMD: command SCAN, seq 114, size 63,
jiffies 36144550
}}}
Why would the driver send a second event if we are already disconnected?
Turns out the function that is responsible for sending the notification
waits for one second before doing so (see code below). If the disconnect
event from the firmware arrives in that window, two event notifications
will be sent, one second apart from each other. (See the two 'Send
DISCONNECT...' lines in the log above)
{{{
--- a/drivers/net/wireless/libertas/cmdresp.c
+++ b/drivers/net/wireless/libertas/cmdresp.c
@@ -31,18 +31,10 @@ void lbs_mac_event_disconnected(struct lbs_private
*priv)
return;
lbs_deb_enter(LBS_DEB_ASSOC);
memset(wrqu.ap_addr.sa_data, 0x00, ETH_ALEN);
wrqu.ap_addr.sa_family = ARPHRD_ETHER;
- /*
- * Cisco AP sends EAP failure and de-auth in less than 0.5 ms.
- * It causes problem in the Supplicant
- */
-
- msleep_interruptible(1000);
- wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
-
/* report disconnect to upper layer */
netif_stop_queue(priv->dev);
netif_carrier_off(priv->dev);
@@ -62,6 +55,8 @@ void lbs_mac_event_disconnected(struct lbs_private
*priv)
priv->numSNRNF = 0;
priv->connect_status = LBS_DISCONNECTED;
+ wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
+
/* Clear out associated SSID and BSSID since connection is
* no longer valid.
*/
}}}
Fixing this does not resolve all the WPA failures but at least we don't
see the double notification anymore.
--
Ticket URL: <http://dev.laptop.org/ticket/8799#comment:24>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list