wl12xx: don't allow scanning while device is in ROC
authorEliad Peller <eliad@wizery.com>
Sun, 4 Mar 2012 08:55:52 +0000 (10:55 +0200)
committerLuciano Coelho <coelho@ti.com>
Mon, 5 Mar 2012 13:45:25 +0000 (15:45 +0200)
return EBUSY on scan when there is any role
in ROC (not necessarily the one we are going
to use)

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

index 85bbe7f..1d5f2d5 100644 (file)
@@ -3057,8 +3057,6 @@ static int wl1271_op_hw_scan(struct ieee80211_hw *hw,
                             struct cfg80211_scan_request *req)
 {
        struct wl1271 *wl = hw->priv;
-       struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
-
        int ret;
        u8 *ssid = NULL;
        size_t len = 0;
@@ -3086,8 +3084,8 @@ static int wl1271_op_hw_scan(struct ieee80211_hw *hw,
        if (ret < 0)
                goto out;
 
-       if (test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags) &&
-           test_bit(wlvif->role_id, wl->roc_map)) {
+       /* fail if there is any role in ROC */
+       if (find_first_bit(wl->roc_map, WL12XX_MAX_ROLES) < WL12XX_MAX_ROLES) {
                /* don't allow scanning right now */
                ret = -EBUSY;
                goto out_sleep;