aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2009-04-13 21:41:46 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:57:15 -0400
commit85efc86eb7c6cbb1c8ce8d99b10b948be033fbb9 (patch)
tree273ad6d462c816057a4f791f12febad5cce5e962 /drivers
parent26925042b6b105995ee54c6015e95f0caf9632d6 (diff)
atheros: fix propagation of bad EEPROM on regulatory init
When the EEPROM is not in good condition we cannot continue so we currently bail out but only ath5k is bailing out properly. Both ath9k and ar9170 were proceeding and if a user were to run into this they'd see an obscure panic. Lets propagate the error as intended and make sure we inform the user by lifting the error message from debug to a kernel error. Stable note: You can find a port of this page here: http://bombadil.infradead.org/~mcgrof/patches/ath9k/ath9k-fix-eeprom.patch.txt Cc: stable@kernel.org Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ar9170/main.c2
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c5
-rw-r--r--drivers/net/wireless/ath/regd.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c
index 8de0ff9f580b..857416c80199 100644
--- a/drivers/net/wireless/ath/ar9170/main.c
+++ b/drivers/net/wireless/ath/ar9170/main.c
@@ -1649,6 +1649,8 @@ int ar9170_register(struct ar9170 *ar, struct device *pdev)
1649 1649
1650 err = ath_regd_init(&ar->regulatory, ar->hw->wiphy, 1650 err = ath_regd_init(&ar->regulatory, ar->hw->wiphy,
1651 ar9170_reg_notifier); 1651 ar9170_reg_notifier);
1652 if (err)
1653 goto err_out;
1652 1654
1653 err = ieee80211_register_hw(ar->hw); 1655 err = ieee80211_register_hw(ar->hw);
1654 if (err) 1656 if (err)
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 8bf2bf36fd6d..2398d4f45f28 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1416,8 +1416,9 @@ static int ath_init(u16 devid, struct ath_softc *sc)
1416 for (i = 0; i < sc->keymax; i++) 1416 for (i = 0; i < sc->keymax; i++)
1417 ath9k_hw_keyreset(ah, (u16) i); 1417 ath9k_hw_keyreset(ah, (u16) i);
1418 1418
1419 if (ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy, 1419 error = ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy,
1420 ath9k_reg_notifier)) 1420 ath9k_reg_notifier);
1421 if (error)
1421 goto bad; 1422 goto bad;
1422 1423
1423 /* default to MONITOR mode */ 1424 /* default to MONITOR mode */
diff --git a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c
index 4b5c851b81ff..526c7f1308db 100644
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -477,7 +477,7 @@ ath_regd_init(struct ath_regulatory *reg,
477 u16 regdmn; 477 u16 regdmn;
478 478
479 if (!ath_regd_is_eeprom_valid(reg)) { 479 if (!ath_regd_is_eeprom_valid(reg)) {
480 printk(KERN_DEBUG "ath: Invalid EEPROM contents\n"); 480 printk(KERN_ERR "ath: Invalid EEPROM contents\n");
481 return -EINVAL; 481 return -EINVAL;
482 } 482 }
483 483