summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuciano Coelho <luciano.coelho@nokia.com>2010-12-03 17:05:40 +0200
committerLuciano Coelho <luciano.coelho@nokia.com>2010-12-15 15:00:00 +0200
commitfb6a6819fad0d71b47577a51709440a9f8441f0a (patch)
treeef0b24de2db091f60e9f2d58b4a06894d8203550
parent1036dc169f4cc6e5b753b1596d285d1cc3311a23 (diff)
downloadlinux-stable-fb6a6819fad0d71b47577a51709440a9f8441f0a.tar.gz
linux-stable-fb6a6819fad0d71b47577a51709440a9f8441f0a.tar.bz2
linux-stable-fb6a6819fad0d71b47577a51709440a9f8441f0a.zip
wl12xx: disable 11a channels when wl->enable_11a is known
Disabling the 11a channels when not supported in the reg_notify function was not working as it should, because when the driver is initiailizing (and registering itself with mac80211), it would get the reg notification too early. At that point the driver wouldn't have received the NVS yet, so it wouldn't know whether 11a was supported. To fix this, we disable 11a channels when we read the NVS instead. Also, it is easier (and still safe) to set n_channels to zero instead of setting the disabled flag on every 11a channel. Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
-rw-r--r--drivers/net/wireless/wl12xx/main.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
index dc3a09319d12..0b79c49cd877 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -338,7 +338,6 @@ out:
static int wl1271_reg_notify(struct wiphy *wiphy,
struct regulatory_request *request)
{
- struct wl1271 *wl = wiphy_to_ieee80211_hw(wiphy)->priv;
struct ieee80211_supported_band *band;
struct ieee80211_channel *ch;
int i;
@@ -349,11 +348,6 @@ 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;
@@ -1071,6 +1065,16 @@ power_off:
strncpy(wiphy->fw_version, wl->chip.fw_ver,
sizeof(wiphy->fw_version));
+ /*
+ * Now we know if 11a is supported (info from the NVS), so disable
+ * 11a channels if not supported
+ */
+ if (!wl->enable_11a)
+ wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels = 0;
+
+ wl1271_debug(DEBUG_MAC80211, "11a is %ssupported",
+ wl->enable_11a ? "" : "not ");
+
out:
mutex_unlock(&wl->mutex);