wl12xx: disable 11a channels when regulatory changes if 11a is not supported
authorLuciano Coelho <luciano.coelho@nokia.com>
Fri, 26 Nov 2010 11:44:59 +0000 (13:44 +0200)
committerLuciano Coelho <luciano.coelho@nokia.com>
Fri, 26 Nov 2010 13:09:15 +0000 (15:09 +0200)
Instead of simply not scanning for the 11a channels when not supported by the
hardware, disable the channels in reg_notify.  This centralizes the decision
on whether to scan 5GHz channel in one place and allows userspace to know
exactly which channels are in use.

Based on Juuso Oikarinen's idea.

Cc: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
drivers/net/wireless/wl12xx/main.c

index 35cfcf675795ae660bfed067e2cb0ee8966eea13..97eb186b5a8adfd70f9070f343fe4db4a2eca1f5 100644 (file)
@@ -336,7 +336,9 @@ out:
 }
 
 static int wl1271_reg_notify(struct wiphy *wiphy,
-                            struct regulatory_request *request) {
+                            struct regulatory_request *request)
+{
+       struct wl1271 *wl = wiphy_to_ieee80211_hw(wiphy)->priv;
        struct ieee80211_supported_band *band;
        struct ieee80211_channel *ch;
        int i;
@@ -347,6 +349,11 @@ static int wl1271_reg_notify(struct wiphy *wiphy,
                if (ch->flags & IEEE80211_CHAN_DISABLED)
                        continue;
 
+               if (!wl->enable_11a) {
+                       ch->flags |= IEEE80211_CHAN_DISABLED;
+                       continue;
+               }
+
                if (ch->flags & IEEE80211_CHAN_RADAR)
                        ch->flags |= IEEE80211_CHAN_NO_IBSS |
                                     IEEE80211_CHAN_PASSIVE_SCAN;