summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/bcm43xx/bcm43xx_main.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-11 15:40:45 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-11 15:40:45 -0700
commit73aba63c5d62f4f504c6469c7c56311a0c818b20 (patch)
treeed8b7ffb76b26b5d799e1182e1f14a48390eddf7 /drivers/net/wireless/bcm43xx/bcm43xx_main.c
parent29ac8cabd225eaccb2918846f2f2f4e4d99030bd (diff)
parentcec34dda71bd8bb1df61579d6a1440723baec9f7 (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: myri10ge: update driver version to 1.3.0-1.233 myri10ge: more Intel chipsets providing aligned PCIe completions myri10ge: fix management of the firmware 4KB boundary crossing restriction cxgb3 - missing CPL hanler and register setting. cxgb3 - MAC watchdog update cxgb3 - avoid deadlock with mac watchdog skge: fix wake on lan sky2: phy workarounds for Yukon EC-U A1 sky2: turn on clocks when doing resume sky2: turn carrier off when down skge: turn carrier off when down [PATCH] bcm43xx: Fix PPC machine checks and match loopback gain specs [PATCH] bcm43xx: Fix 802.11b/g scan limits to match regulatory reqs [PATCH] zd1211rw: Fix E2P_PHY_REG patching [PATCH] zd1211rw: Reject AL2230S devices
Diffstat (limited to 'drivers/net/wireless/bcm43xx/bcm43xx_main.c')
-rw-r--r--drivers/net/wireless/bcm43xx/bcm43xx_main.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index 80cb88eb98c..a38e7eec0e6 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -946,6 +946,7 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
u8 channel;
struct bcm43xx_phyinfo *phy;
const char *iso_country;
+ u8 max_bg_channel;
geo = kzalloc(sizeof(*geo), GFP_KERNEL);
if (!geo)
@@ -967,6 +968,23 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
}
iso_country = bcm43xx_locale_iso(bcm->sprom.locale);
+/* set the maximum channel based on locale set in sprom or witle locale option */
+ switch (bcm->sprom.locale) {
+ case BCM43xx_LOCALE_THAILAND:
+ case BCM43xx_LOCALE_ISRAEL:
+ case BCM43xx_LOCALE_JORDAN:
+ case BCM43xx_LOCALE_USA_CANADA_ANZ:
+ case BCM43xx_LOCALE_USA_LOW:
+ max_bg_channel = 11;
+ break;
+ case BCM43xx_LOCALE_JAPAN:
+ case BCM43xx_LOCALE_JAPAN_HIGH:
+ max_bg_channel = 14;
+ break;
+ default:
+ max_bg_channel = 13;
+ }
+
if (have_a) {
for (i = 0, channel = IEEE80211_52GHZ_MIN_CHANNEL;
channel <= IEEE80211_52GHZ_MAX_CHANNEL; channel++) {
@@ -978,7 +996,7 @@ static int bcm43xx_geo_init(struct bcm43xx_private *bcm)
}
if (have_bg) {
for (i = 0, channel = IEEE80211_24GHZ_MIN_CHANNEL;
- channel <= IEEE80211_24GHZ_MAX_CHANNEL; channel++) {
+ channel <= max_bg_channel; channel++) {
chan = &geo->bg[i++];
chan->freq = bcm43xx_channel_to_freq_bg(channel);
chan->channel = channel;