ath9k: fix custom regulatory call position
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 19 May 2009 22:27:11 +0000 (18:27 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 20 May 2009 18:46:36 +0000 (14:46 -0400)
ath_regd_init() needs to be called with the wiphy already
properly set with the bands. Without this the custom regulatory
settings were not taking effect, and the device would get
the default channel settings from ath9k_[25]ghz_chantable.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index 77fbc46624b7a80e788072dc03596030112efc1d..1839b559bdc302fd70abd7c8458f36cddd543379 100644 (file)
@@ -1430,8 +1430,6 @@ static int ath_init(u16 devid, struct ath_softc *sc)
        for (i = 0; i < sc->keymax; i++)
                ath9k_hw_keyreset(ah, (u16) i);
 
-       error = ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy,
-                             ath9k_reg_notifier);
        if (error)
                goto bad;
 
@@ -1644,14 +1642,19 @@ int ath_attach(u16 devid, struct ath_softc *sc)
        if (error != 0)
                return error;
 
-       reg = &sc->sc_ah->regulatory;
-
        /* get mac address from hardware and set in mac80211 */
 
        SET_IEEE80211_PERM_ADDR(hw, sc->sc_ah->macaddr);
 
        ath_set_hw_capab(sc, hw);
 
+       error = ath_regd_init(&sc->sc_ah->regulatory, sc->hw->wiphy,
+                             ath9k_reg_notifier);
+       if (error)
+               return error;
+
+       reg = &sc->sc_ah->regulatory;
+
        if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) {
                setup_ht_cap(sc, &sc->sbands[IEEE80211_BAND_2GHZ].ht_cap);
                if (test_bit(ATH9K_MODE_11A, sc->sc_ah->caps.wireless_modes))