#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