* Stop ANI durring reset to prevent false PHY error reports
Signed-off-by: Nick Kossifidis <[email protected]>
---
drivers/net/wireless/ath/ath5k/base.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 047b2a0..6edfa9f 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -2504,7 +2504,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
bool skip_pcu)
{
struct ath5k_hw *ah = sc->ah;
- int ret;
+ int ret, ani_mode;
ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "resetting\n");
@@ -2512,6 +2512,12 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
synchronize_irq(sc->pdev->irq);
stop_tasklets(sc);
+ /* Save ani mode and disable ANI durring
+ * reset. If we don't we might get false
+ * PHY error interrupts. */
+ ani_mode = ah->ah_sc->ani_state.ani_mode;
+ ath5k_ani_init(ah, ATH5K_ANI_MODE_OFF);
+
/* We are going to empty hw queues
* so we should also free any remaining
* tx buffers */
@@ -2533,7 +2539,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
goto err;
}
- ath5k_ani_init(ah, ah->ah_sc->ani_state.ani_mode);
+ ath5k_ani_init(ah, ani_mode);
ah->ah_cal_next_full = jiffies;
ah->ah_cal_next_ani = jiffies;
Tested-by: Sedat Dilek <[email protected]>
On Fri, Dec 3, 2010 at 5:07 AM, Nick Kossifidis <[email protected]> wrote:
> * Stop ANI durring reset to prevent false PHY error reports
>
> Signed-off-by: Nick Kossifidis <[email protected]>
>
> ---
> drivers/net/wireless/ath/ath5k/base.c | 10 ++++++++--
> 1 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index 047b2a0..6edfa9f 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -2504,7 +2504,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
> bool skip_pcu)
> {
> struct ath5k_hw *ah = sc->ah;
> - int ret;
> + int ret, ani_mode;
>
> ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "resetting\n");
>
> @@ -2512,6 +2512,12 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
> synchronize_irq(sc->pdev->irq);
> stop_tasklets(sc);
>
> + /* Save ani mode and disable ANI durring
> + * reset. If we don't we might get false
> + * PHY error interrupts. */
> + ani_mode = ah->ah_sc->ani_state.ani_mode;
> + ath5k_ani_init(ah, ATH5K_ANI_MODE_OFF);
> +
> /* We are going to empty hw queues
> * so we should also free any remaining
> * tx buffers */
> @@ -2533,7 +2539,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
> goto err;
> }
>
> - ath5k_ani_init(ah, ah->ah_sc->ani_state.ani_mode);
> + ath5k_ani_init(ah, ani_mode);
>
> ah->ah_cal_next_full = jiffies;
> ah->ah_cal_next_ani = jiffies;
>