Subject: skip unnecessary scan to avoid WARN in core.c and sme.c Some cases, wpa_supplicant will request a scan during net interface disabling This will cause a wrong state in CFG80211 layer and get WARN in core.c and sem.c.
Add a protection in driver's close function to return this scan request and set request to NULL. This is also related to [Bug 3337] calltrace when connect to second wep key and disable wifi Signed-off-by: Samuel Chang <[email protected]> diff -ruN kernel-2.6.37.6-151.5/drivers/staging/ar6003/os/linux/ar6000_drv.c kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch/drivers/staging/ar6003/os/linux/ar6000_drv.c --- kernel-2.6.37.6-151.5/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-15 23:59:50.136990718 +0800 +++ kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-18 16:16:07.816871251 +0800 @@ -2755,12 +2755,18 @@ #ifdef ATH6K_CONFIG_CFG80211 ar6000_disconnect(arPriv); + if (arPriv->scan_request) { + cfg80211_scan_done(arPriv->scan_request, true); + arPriv->scan_request = NULL; + } + + arPriv->arSoftc->arWlanState = WLAN_DISABLED; + if(arPriv->arSoftc->arWmiReady == TRUE) { if (wmi_scanparams_cmd(arPriv->arWmi, 0xFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 0) != A_OK) { return -EIO; } - arPriv->arSoftc->arWlanState = WLAN_DISABLED; } #endif /* ATH6K_CONFIG_CFG80211 */
Subject: skip unnecessary_scan Some cases, wpa_supplicant will request a scan during net interface disabling This will cause a wrong state in CFG80211 layer and get WARN in core.c and sem.c. Add a protection in driver's close function to return this scan request and set request to NULL. This is also related to [Bug 3337] calltrace when connect to second wep key and disable wifi Signed-off-by: Samuel Chang <[email protected]> diff -ruN kernel-2.6.37.6-151.5/drivers/staging/ar6003/os/linux/ar6000_drv.c kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch/drivers/staging/ar6003/os/linux/ar6000_drv.c --- kernel-2.6.37.6-151.5/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-15 23:59:50.136990718 +0800 +++ kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-18 16:16:07.816871251 +0800 @@ -2755,12 +2755,18 @@ #ifdef ATH6K_CONFIG_CFG80211 ar6000_disconnect(arPriv); + if (arPriv->scan_request) { + cfg80211_scan_done(arPriv->scan_request, true); + arPriv->scan_request = NULL; + } + + arPriv->arSoftc->arWlanState = WLAN_DISABLED; + if(arPriv->arSoftc->arWmiReady == TRUE) { if (wmi_scanparams_cmd(arPriv->arWmi, 0xFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 0) != A_OK) { return -EIO; } - arPriv->arSoftc->arWlanState = WLAN_DISABLED; } #endif /* ATH6K_CONFIG_CFG80211 */
_______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
