diff options
author | Christian Lamparter <chunkeey@googlemail.com> | 2010-02-07 18:01:55 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-02-09 00:51:02 +0300 |
commit | 641eabb0a3717020d1a93d3f91493ab0d826c910 (patch) | |
tree | 324789bae511e3800046ac1b1e23105038443d42 /drivers/net/wireless/ath | |
parent | 349e6b7289f8a3d3d5d3b859e00b41f27d1211df (diff) | |
download | linux-641eabb0a3717020d1a93d3f91493ab0d826c910.tar.xz |
ath: fix WARN_ON with Polish (Poland) Contry code
This patch fixes a WARN_ON which is triggered
by Poland's country code.
ath: EEPROM regdomain: 0x8268
ath: EEPROM indicates we should expect a country code
ath: doing EEPROM country->regdmn map search
ath: country maps to regdmn code: 0x37
ath: Country alpha2 being used: PL
ath: Regpair used: 0x37
-----------[ cut here ]------------
WARNING: at drivers/net/wireless/ath/regd.c:155 ath_regd_init+0x30b
Pid: 12661, comm: firmware/carl91 2.6.33-rc5-wl #18
Call Trace:
[<>] ? warn_slowpath_common+0x76/0x8c
[<>] ? ar9170_reg_notifier+0x0/0x2d [carl9170usb]
[<>] ? ath_regd_init+0x30b/0x377 [ath]
[<>] ? ar9170_register+0x3b3/0x3ca [carl9170usb]
[...]
---[ end trace ]---
Note: Poland is just an example. But it is very likely
that more country codes are affected.
Cc: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/regd.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c index 039ac490465c..04abd1f556b7 100644 --- a/drivers/net/wireless/ath/regd.c +++ b/drivers/net/wireless/ath/regd.c @@ -110,8 +110,9 @@ static const struct ieee80211_regdomain ath_world_regdom_67_68_6A = { static inline bool is_wwr_sku(u16 regd) { - return ((regd & WORLD_SKU_MASK) == WORLD_SKU_PREFIX) || - (regd == WORLD); + return ((regd & COUNTRY_ERD_FLAG) != COUNTRY_ERD_FLAG) && + (((regd & WORLD_SKU_MASK) == WORLD_SKU_PREFIX) || + (regd == WORLD)); } static u16 ath_regd_get_eepromRD(struct ath_regulatory *reg) |