瀏覽代碼

ath9k_hw: inform ANI calibration when scanning

The new ANI implementation will use this to skip ANI
calibration upon a scan. This cannot be ported to the
older ANI implementation unless default ANI values from
the ANI are also used upon a scan. This is essentially
what one of the things thenew ANI does.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis R. Rodriguez 15 年之前
父節點
當前提交
40346b6679

+ 1 - 1
drivers/net/wireless/ath/ath9k/ani.c

@@ -322,7 +322,7 @@ static int32_t ath9k_hw_ani_get_listen_time(struct ath_hw *ah)
 	return listenTime;
 	return listenTime;
 }
 }
 
 
-static void ath9k_ani_reset_old(struct ath_hw *ah)
+static void ath9k_ani_reset_old(struct ath_hw *ah, bool is_scanning)
 {
 {
 	struct ar5416AniState *aniState;
 	struct ar5416AniState *aniState;
 	struct ath9k_channel *chan = ah->curchan;
 	struct ath9k_channel *chan = ah->curchan;

+ 1 - 1
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c

@@ -416,7 +416,7 @@ void ath9k_host_rx_init(struct ath9k_htc_priv *priv)
 {
 {
 	ath9k_hw_rxena(priv->ah);
 	ath9k_hw_rxena(priv->ah);
 	ath9k_htc_opmode_init(priv);
 	ath9k_htc_opmode_init(priv);
-	ath9k_hw_startpcureceive(priv->ah);
+	ath9k_hw_startpcureceive(priv->ah, (priv->op_flags & OP_SCANNING));
 	priv->rx.last_rssi = ATH_RSSI_DUMMY_MARKER;
 	priv->rx.last_rssi = ATH_RSSI_DUMMY_MARKER;
 }
 }
 
 

+ 2 - 2
drivers/net/wireless/ath/ath9k/hw-ops.h

@@ -288,9 +288,9 @@ static inline bool ath9k_hw_iscal_supported(struct ath_hw *ah,
 	return ath9k_hw_private_ops(ah)->iscal_supported(ah, calType);
 	return ath9k_hw_private_ops(ah)->iscal_supported(ah, calType);
 }
 }
 
 
-static inline void ath9k_ani_reset(struct ath_hw *ah)
+static inline void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning)
 {
 {
-	ath9k_hw_private_ops(ah)->ani_reset(ah);
+	ath9k_hw_private_ops(ah)->ani_reset(ah, is_scanning);
 }
 }
 
 
 #endif /* ATH9K_HW_OPS_H */
 #endif /* ATH9K_HW_OPS_H */

+ 1 - 1
drivers/net/wireless/ath/ath9k/hw.h

@@ -565,7 +565,7 @@ struct ath_hw_private_ops {
 	void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan);
 	void (*loadnf)(struct ath_hw *ah, struct ath9k_channel *chan);
 
 
 	/* ANI */
 	/* ANI */
-	void (*ani_reset)(struct ath_hw *ah);
+	void (*ani_reset)(struct ath_hw *ah, bool is_scanning);
 	void (*ani_lower_immunity)(struct ath_hw *ah);
 	void (*ani_lower_immunity)(struct ath_hw *ah);
 };
 };
 
 

+ 2 - 2
drivers/net/wireless/ath/ath9k/mac.c

@@ -757,11 +757,11 @@ void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp)
 }
 }
 EXPORT_SYMBOL(ath9k_hw_putrxbuf);
 EXPORT_SYMBOL(ath9k_hw_putrxbuf);
 
 
-void ath9k_hw_startpcureceive(struct ath_hw *ah)
+void ath9k_hw_startpcureceive(struct ath_hw *ah, bool is_scanning)
 {
 {
 	ath9k_enable_mib_counters(ah);
 	ath9k_enable_mib_counters(ah);
 
 
-	ath9k_ani_reset(ah);
+	ath9k_ani_reset(ah, is_scanning);
 
 
 	REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT));
 	REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT));
 }
 }

+ 1 - 1
drivers/net/wireless/ath/ath9k/mac.h

@@ -715,7 +715,7 @@ void ath9k_hw_setuprxdesc(struct ath_hw *ah, struct ath_desc *ds,
 			  u32 size, u32 flags);
 			  u32 size, u32 flags);
 bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set);
 bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set);
 void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp);
 void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp);
-void ath9k_hw_startpcureceive(struct ath_hw *ah);
+void ath9k_hw_startpcureceive(struct ath_hw *ah, bool is_scanning);
 void ath9k_hw_stoppcurecv(struct ath_hw *ah);
 void ath9k_hw_stoppcurecv(struct ath_hw *ah);
 void ath9k_hw_abortpcurecv(struct ath_hw *ah);
 void ath9k_hw_abortpcurecv(struct ath_hw *ah);
 bool ath9k_hw_stopdmarecv(struct ath_hw *ah);
 bool ath9k_hw_stopdmarecv(struct ath_hw *ah);

+ 2 - 2
drivers/net/wireless/ath/ath9k/recv.c

@@ -295,7 +295,7 @@ static void ath_edma_start_recv(struct ath_softc *sc)
 
 
 	ath_opmode_init(sc);
 	ath_opmode_init(sc);
 
 
-	ath9k_hw_startpcureceive(sc->sc_ah);
+	ath9k_hw_startpcureceive(sc->sc_ah, (sc->sc_flags & SC_OP_SCANNING));
 }
 }
 
 
 static void ath_edma_stop_recv(struct ath_softc *sc)
 static void ath_edma_stop_recv(struct ath_softc *sc)
@@ -501,7 +501,7 @@ int ath_startrecv(struct ath_softc *sc)
 start_recv:
 start_recv:
 	spin_unlock_bh(&sc->rx.rxbuflock);
 	spin_unlock_bh(&sc->rx.rxbuflock);
 	ath_opmode_init(sc);
 	ath_opmode_init(sc);
-	ath9k_hw_startpcureceive(ah);
+	ath9k_hw_startpcureceive(ah, (sc->sc_flags & SC_OP_SCANNING));
 
 
 	return 0;
 	return 0;
 }
 }