Skip to content

Commit

Permalink
atheros: fix propagation of bad EEPROM on regulatory init
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Luis R. Rodriguez authored and John W. Linville committed Apr 22, 2009
1 parent 2692504 commit 85efc86
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 3 deletions.
2 changes: 2 additions & 0 deletions drivers/net/wireless/ath/ar9170/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1649,6 +1649,8 @@ int ar9170_register(struct ar9170 *ar, struct device *pdev)

err = ath_regd_init(&ar->regulatory, ar->hw->wiphy,
ar9170_reg_notifier);
if (err)
goto err_out;

err = ieee80211_register_hw(ar->hw);
if (err)
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/ath/ath9k/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1416,8 +1416,9 @@ static int ath_init(u16 devid, struct ath_softc *sc)
for (i = 0; i < sc->keymax; i++)
ath9k_hw_keyreset(ah, (u16) i);

if (ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy,
ath9k_reg_notifier))
error = ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy,
ath9k_reg_notifier);
if (error)
goto bad;

/* default to MONITOR mode */
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/regd.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ ath_regd_init(struct ath_regulatory *reg,
u16 regdmn;

if (!ath_regd_is_eeprom_valid(reg)) {
printk(KERN_DEBUG "ath: Invalid EEPROM contents\n");
printk(KERN_ERR "ath: Invalid EEPROM contents\n");
return -EINVAL;
}

Expand Down

0 comments on commit 85efc86

Please sign in to comment.