X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=ath%2Fif_ath.c;h=288966a4b8afbc5dd4d18bd953dfff141316bd10;hb=c0c7d05e2ff56f9b04d1aeb960f953f71448be5f;hp=6e16801f513c1b380785a00289989211b28df76d;hpb=c6eac77db1b115437e0ca5dd1bbaa5fa08587541;p=madwifi%2F.git diff --git a/ath/if_ath.c b/ath/if_ath.c index 6e16801..288966a 100644 --- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -869,6 +869,11 @@ ath_attach(u_int16_t devid, struct net_device *dev, HAL_BUS_TAG tag) */ sc->sc_hasveol = ath_hal_hasveol(ah); + /* Interference mitigation/ambient noise immunity (ANI). + * In modes other than HAL_M_STA, it causes receive sensitivity + * problems for OFDM. */ + sc->sc_hasintmit = ath_hal_hasintmit(ah); + /* get mac address from hardware */ ath_hal_getmac(ah, ic->ic_myaddr); if (sc->sc_hasbmask) { @@ -2018,6 +2023,10 @@ ath_init(struct net_device *dev) if (sc->sc_softled) ath_hal_gpioCfgOutput(ah, sc->sc_ledpin); + + if ((sc->sc_opmode != HAL_M_STA) && sc->sc_hasintmit) + ath_hal_setintmit(ah, 0); + /* * This is needed only to setup initial state * but it's best done after a reset. @@ -2273,6 +2282,10 @@ ath_reset(struct net_device *dev) if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_TRUE, &status)) printk("%s: %s: unable to reset hardware: '%s' (HAL status %u)\n", DEV_NAME(dev), __func__, ath_get_hal_status_desc(status), status); + + if ((sc->sc_opmode != HAL_M_STA) && sc->sc_hasintmit) + ath_hal_setintmit(ah, 0); + ath_update_txpow(sc); /* update tx power state */ if (ath_startrecv(sc) != 0) /* restart recv */ printk("%s: %s: unable to start recv logic\n", @@ -7960,6 +7973,9 @@ ath_chan_set(struct ath_softc *sc, struct ieee80211_channel *chan) if (sc->sc_softled) ath_hal_gpioCfgOutput(ah, sc->sc_ledpin); + if ((sc->sc_opmode != HAL_M_STA) && sc->sc_hasintmit) + ath_hal_setintmit(ah, 0); + sc->sc_curchan = hchan; ath_update_txpow(sc); /* update tx power state */