ath5k: remove double opmode definition
authorBruno Randolf <br1@einfach.org>
Tue, 9 Mar 2010 07:55:38 +0000 (16:55 +0900)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 10 Mar 2010 22:44:33 +0000 (17:44 -0500)
opmode (operating mode) was defined in struct ath5k_hw and struct ath5k_softc.
remove it from ath5k_hw and use only from ath5k_softc (sc->opmode).

(btw: what's the meaning of opmode when we have multiple interfaces?)

Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/ath5k.h
drivers/net/wireless/ath/ath5k/attach.c
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/pcu.c
drivers/net/wireless/ath/ath5k/reset.c

index 22f9f59397c17f71fdcd995fe2899e7b72fe9458..e5ace22b951e542b027eacfc7ca1ca680f11eb04 100644 (file)
@@ -1036,7 +1036,6 @@ struct ath5k_hw {
 
        enum ath5k_int          ah_imr;
 
-       enum nl80211_iftype     ah_op_mode;
        struct ieee80211_channel *ah_current_channel;
        bool                    ah_turbo;
        bool                    ah_calibration;
@@ -1200,7 +1199,7 @@ void ath5k_eeprom_detach(struct ath5k_hw *ah);
 int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac);
 
 /* Protocol Control Unit Functions */
-int ath5k_hw_set_opmode(struct ath5k_hw *ah);
+extern int ath5k_hw_set_opmode(struct ath5k_hw *ah, enum nl80211_iftype opmode);
 void ath5k_hw_set_coverage_class(struct ath5k_hw *ah, u8 coverage_class);
 /* BSSID Functions */
 int ath5k_hw_set_lladdr(struct ath5k_hw *ah, const u8 *mac);
index c8bb102a4db4560427a08a1d43782f86a875c09d..66758cb66d5054eda5f871a563340e20befacf4c 100644 (file)
@@ -113,7 +113,6 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        /*
         * HW information
         */
-       ah->ah_op_mode = NL80211_IFTYPE_STATION;
        ah->ah_radar.r_enabled = AR5K_TUNE_RADAR_ALERT;
        ah->ah_turbo = false;
        ah->ah_txpower.txp_tpc = AR5K_TUNE_TPC_TXPOWER;
@@ -328,7 +327,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
        /* Set BSSID to bcast address: ff:ff:ff:ff:ff:ff for now */
        memcpy(common->curbssid, ath_bcast_mac, ETH_ALEN);
        ath5k_hw_set_associd(ah);
-       ath5k_hw_set_opmode(ah);
+       ath5k_hw_set_opmode(ah, sc->opmode);
 
        ath5k_hw_rfgain_opt_init(ah);
 
index fdf3190e4611888e529ef7b8af9816421778e8c1..79922cfd96b80298105593cd4db396e9734a2752 100644 (file)
@@ -1137,8 +1137,6 @@ ath5k_mode_setup(struct ath5k_softc *sc)
        struct ath5k_hw *ah = sc->ah;
        u32 rfilt;
 
-       ah->ah_op_mode = sc->opmode;
-
        /* configure rx filter */
        rfilt = sc->filter_flags;
        ath5k_hw_set_rx_filter(ah, rfilt);
@@ -1147,8 +1145,9 @@ ath5k_mode_setup(struct ath5k_softc *sc)
                ath5k_hw_set_bssid_mask(ah, sc->bssidmask);
 
        /* configure operational mode */
-       ath5k_hw_set_opmode(ah);
+       ath5k_hw_set_opmode(ah, sc->opmode);
 
+       ATH5K_DBG(sc, ATH5K_DEBUG_MODE, "mode setup opmode %d\n", sc->opmode);
        ATH5K_DBG(sc, ATH5K_DEBUG_MODE, "RX filter 0x%x\n", rfilt);
 }
 
@@ -2901,6 +2900,8 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
                goto end;
        }
 
+       ATH5K_DBG(sc, ATH5K_DEBUG_MODE, "add interface mode %d\n", sc->opmode);
+
        ath5k_hw_set_lladdr(sc->ah, vif->addr);
        ath5k_mode_setup(sc);
 
index be69ebb2744ea2f8a503cebb0cac2808a3964a9d..c813046b35406d69c1fa5d26c3e5a4d9f0631eb7 100644 (file)
  * ath5k_hw_set_opmode - Set PCU operating mode
  *
  * @ah: The &struct ath5k_hw
+ * @op_mode: &enum nl80211_iftype operating mode
  *
  * Initialize PCU for the various operating modes (AP/STA etc)
- *
- * NOTE: ah->ah_op_mode must be set before calling this.
  */
-int ath5k_hw_set_opmode(struct ath5k_hw *ah)
+int ath5k_hw_set_opmode(struct ath5k_hw *ah, enum nl80211_iftype op_mode)
 {
        struct ath_common *common = ath5k_hw_common(ah);
        u32 pcu_reg, beacon_reg, low_id, high_id;
 
+       ATH5K_DBG(ah->ah_sc, ATH5K_DEBUG_MODE, "mode %d\n", op_mode);
 
        /* Preserve rest settings */
        pcu_reg = ath5k_hw_reg_read(ah, AR5K_STA_ID1) & 0xffff0000;
@@ -61,7 +61,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah)
 
        ATH5K_TRACE(ah->ah_sc);
 
-       switch (ah->ah_op_mode) {
+       switch (op_mode) {
        case NL80211_IFTYPE_ADHOC:
                pcu_reg |= AR5K_STA_ID1_ADHOC | AR5K_STA_ID1_KEYSRCH_MODE;
                beacon_reg |= AR5K_BCR_ADHOC;
@@ -644,7 +644,7 @@ void ath5k_hw_init_beacon(struct ath5k_hw *ah, u32 next_beacon, u32 interval)
        /*
         * Set the additional timers by mode
         */
-       switch (ah->ah_op_mode) {
+       switch (ah->ah_sc->opmode) {
        case NL80211_IFTYPE_MONITOR:
        case NL80211_IFTYPE_STATION:
                /* In STA mode timer1 is used as next wakeup
@@ -681,8 +681,8 @@ void ath5k_hw_init_beacon(struct ath5k_hw *ah, u32 next_beacon, u32 interval)
         * Set the beacon register and enable all timers.
         */
        /* When in AP or Mesh Point mode zero timer0 to start TSF */
-       if (ah->ah_op_mode == NL80211_IFTYPE_AP ||
-           ah->ah_op_mode == NL80211_IFTYPE_MESH_POINT)
+       if (ah->ah_sc->opmode == NL80211_IFTYPE_AP ||
+           ah->ah_sc->opmode == NL80211_IFTYPE_MESH_POINT)
                ath5k_hw_reg_write(ah, 0, AR5K_TIMER0);
 
        ath5k_hw_reg_write(ah, next_beacon, AR5K_TIMER0);
index 8bd62c130b264cbe920d2f8d26c2fc552f59aca8..4120068792ecb21564da59ccbf81c44bc1451c1e 100644 (file)
@@ -1033,11 +1033,6 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
        if (ret)
                return ret;
 
-       /*
-        * Initialize operating mode
-        */
-       ah->ah_op_mode = op_mode;
-
        /* PHY access enable */
        if (ah->ah_mac_srev >= AR5K_SREV_AR5211)
                ath5k_hw_reg_write(ah, AR5K_PHY_SHIFT_5GHZ, AR5K_PHY(0));
@@ -1208,7 +1203,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
        ath5k_hw_set_associd(ah);
 
        /* Set PCU config */
-       ath5k_hw_set_opmode(ah);
+       ath5k_hw_set_opmode(ah, op_mode);
 
        /* Clear any pending interrupts
         * PISR/SISR Not available on 5210 */
@@ -1394,7 +1389,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
         * external 32KHz crystal when sleeping if one
         * exists */
        if (ah->ah_version == AR5K_AR5212 &&
-           ah->ah_op_mode != NL80211_IFTYPE_AP)
+           op_mode != NL80211_IFTYPE_AP)
                ath5k_hw_set_sleep_clock(ah, true);
 
        /*