On Fri, Jun 15, 2012 at 03:25:20PM +0200, Felix Fietkau wrote: > Commit "ath9k_hw: improve ANI processing and rx desensitizing parameters" > was unifying some code related to overriding OFDM weak signal detection, > but seems to have gotten some of the original intent wrong, probably > because of a misnamed variable. > > The beacon RSSI is only valid in station mode, and the main reason to check > it in ath9k_hw_set_ofdm_nil is to make sure that OFDM weak signal detection > stays enabled if the RSSI is low, even when the OFDM noise immunity entry > is supposed to disable it. > > The above commit removed the mode checks and changed the code so that > OFDM weak signal detection would only be changed if the rssi is high, which > is wrong for everything but client mode. > > This patch restores the old behavior in a simplified form. > > Signed-off-by: Felix Fietkau <nbd@xxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath9k/ani.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c > index 18ce69d..cf31050 100644 > --- a/drivers/net/wireless/ath/ath9k/ani.c > +++ b/drivers/net/wireless/ath/ath9k/ani.c > @@ -265,6 +265,7 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel) > struct ath_common *common = ath9k_hw_common(ah); > const struct ani_ofdm_level_entry *entry_ofdm; > const struct ani_cck_level_entry *entry_cck; > + bool weak_sig; > > ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", > aniState->ofdmNoiseImmunityLevel, > @@ -290,13 +291,15 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel) > ATH9K_ANI_FIRSTEP_LEVEL, > entry_ofdm->fir_step_level); > > - if (BEACON_RSSI(ah) >= aniState->rssiThrHigh && > - (!aniState->ofdmWeakSigDetectOff != > - entry_ofdm->ofdm_weak_signal_on)) { > + weak_sig = entry_ofdm->ofdm_weak_signal_on; > + if (ah->opmode == NL80211_IFTYPE_STATION && > + BEACON_RSSI(ah) <= aniState->rssiThrHigh) > + weak_sig = true; > + > + if (!aniState->ofdmWeakSigDetectOff != weak_sig) beacon rssi is updated and used in both station and ibss mode. isn't it? -Rajkumar -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html