Author: fmueller
Date: Thu Aug 26 00:16:04 2010
New Revision: 9068

URL: http://svn.slimdevices.com/jive?rev=9068&view=rev
Log:
Bug: 16468 
Description: Fix wireless driver to report disconnect events to wpa_supplicant. 
This reduces time to reconnect to a few seconds. (Before it could easily take 
up to 30 seconds to reconnect.) 

Added:
    
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/files/atheros_send_disconnect_event.patch
Modified:
    
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/atheros-ar6-module-src_svn.bb

Modified: 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/atheros-ar6-module-src_svn.bb
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/atheros-ar6-module-src_svn.bb?rev=9068&r1=9067&r2=9068&view=diff
==============================================================================
--- 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/atheros-ar6-module-src_svn.bb
 (original)
+++ 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/atheros-ar6-module-src_svn.bb
 Thu Aug 26 00:16:04 2010
@@ -3,7 +3,7 @@
 LICENSE = "binary only"
 
 PV = "1.0"
-PR = "r19"
+PR = "r20"
 
 PROVIDES = "atheros-ar6-module"
 
@@ -17,6 +17,7 @@
         file://change-ar6k-semaphore-type.patch;patch=1 \
         file://atheros_disable_tcmd.patch;patch=1 \
         file://atheros_shorter_scan_list_cache_timeout.patch;patch=1 \
+        file://atheros_send_disconnect_event.patch;patch=1 \
         file://wlan \
         file://athwlan.bin \
         file://calData_ar6102_15dBm.bin \

Added: 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/files/atheros_send_disconnect_event.patch
URL: 
http://svn.slimdevices.com/jive/7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/files/atheros_send_disconnect_event.patch?rev=9068&view=auto
==============================================================================
--- 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/files/atheros_send_disconnect_event.patch
 (added)
+++ 
7.6/trunk/squeezeos/poky/meta-squeezeos/packages/atheros/files/atheros_send_disconnect_event.patch
 Thu Aug 26 00:16:04 2010
@@ -1,0 +1,66 @@
+--- AR6kSDK.build_sw.62/host/os/linux/ar6000_drv.c.orig        2010-08-17 
13:11:42.000000000 +0200
++++ AR6kSDK.build_sw.62/host/os/linux/ar6000_drv.c     2010-08-25 
19:26:52.000000000 +0200
+@@ -2451,6 +2451,16 @@ ar6000_disconnect_event(AR_SOFTC_T *ar, 
+ {
+     A_UINT8 i;
+ 
++    if (NO_NETWORK_AVAIL != reason) {
++        union iwreq_data wrqu;        
++        A_MEMZERO(&wrqu, sizeof(wrqu));
++        A_MEMCPY(wrqu.addr.sa_data, "\x00\x00\x00\x00\x00\x00", 
IEEE80211_ADDR_LEN);
++        wrqu.addr.sa_family = ARPHRD_ETHER;
++
++        /* Send disconnect event to supplicant */
++        wireless_send_event(ar->arNetDev, SIOCGIWAP, &wrqu, NULL);
++    }
++
+     A_PRINTF("AR6000 disconnected");
+     if (bssid[0] || bssid[1] || bssid[2] || bssid[3] || bssid[4] || bssid[5]) 
{
+         A_PRINTF(" from %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x ",
+@@ -2467,7 +2477,7 @@ ar6000_disconnect_event(AR_SOFTC_T *ar, 
+         }
+         AR_DEBUG_PRINTF("%2.2x ", assocInfo[i]);
+     }
+-    AR_DEBUG_PRINTF("\n");
++    A_PRINTF("\n");
+     /*
+      * If the event is due to disconnect cmd from the host, only they the 
target
+      * would stop trying to connect. Under any other condition, target would
+@@ -2488,6 +2498,37 @@ ar6000_disconnect_event(AR_SOFTC_T *ar, 
+             return;
+         }
+     }
++
++    if ((TRUE == ar->arConnected) && (reason == NO_NETWORK_AVAIL))
++    {
++        bss_t *pWmiSsidnode = NULL;
++
++        /* remove the current associated bssid node */
++        wmi_free_node (ar->arWmi, bssid);
++
++        /*
++         * In case any other same SSID nodes are present
++         * remove it, since those nodes also not available now
++         */
++        do
++        {
++            /*
++             * Find the nodes based on SSID and remove it
++             * NOTE :: This case will not work out for Hidden-SSID
++             */
++            pWmiSsidnode = wmi_find_Ssidnode (ar->arWmi, ar->arSsid, 
ar->arSsidLen, FALSE, TRUE);
++
++            if (pWmiSsidnode)
++            {
++                wmi_free_node (ar->arWmi, pWmiSsidnode->ni_macaddr);
++            }
++
++        }while (pWmiSsidnode);
++
++        ar6000_init_profile_info(ar);
++        wmi_disconnect_cmd(ar->arWmi);
++    }
++
+     ar->arConnected = FALSE;
+ 
+     if( (reason != CSERV_DISCONNECT) || (reconnect_flag != 1) ) {

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to