wl12xx: check for ROC on scan_complete
authorEliad Peller <eliad@wizery.com>
Sun, 28 Aug 2011 12:11:55 +0000 (15:11 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 14 Sep 2011 08:47:26 +0000 (11:47 +0300)
When scan completes, and we are not associated, we should start
the dev role and ROC. however, we might already be in this situation
(e.g. if we got disconnected during scan). check for it.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/scan.c

index b2e2abd400455274a2d9fb5e572820bbf226f1d6..4a4d0d03fa1f248fd4cd4ff9b1cf21e5d4eb5454 100644 (file)
@@ -65,8 +65,9 @@ void wl1271_scan_complete_work(struct work_struct *work)
        /* return to ROC if needed */
        is_sta = (wl->bss_type == BSS_TYPE_STA_BSS);
        is_ibss = (wl->bss_type == BSS_TYPE_IBSS);
-       if ((is_sta && !test_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags)) ||
-           (is_ibss && !test_bit(WL1271_FLAG_IBSS_JOINED, &wl->flags))) {
+       if (((is_sta && !test_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags)) ||
+            (is_ibss && !test_bit(WL1271_FLAG_IBSS_JOINED, &wl->flags))) &&
+           !test_bit(wl->dev_role_id, wl->roc_map)) {
                /* restore remain on channel */
                wl12xx_cmd_role_start_dev(wl);
                wl12xx_roc(wl, wl->dev_role_id);