Search Linux Wireless

Re: [PATCH 2/9] ath9k_hw: fix OFDM weak signal detection handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux