[Applied][PATCH][Precise] UBUNTU: (pre-stable): ath9k_hw: fix a RTS/CTS timeout regression

Leann Ogasawara leann.ogasawara at canonical.com
Mon Feb 13 18:38:15 UTC 2012


Applied to Precise master-next.

Thanks,
Leann

On Mon, 2012-02-13 at 12:09 -0600, Seth Forshee wrote:
> From: Felix Fietkau <nbd at openwrt.org>
> 
> commit adb5066 "ath9k_hw: do not apply the 2.4 ghz ack timeout
> workaround to cts" reduced the hardware CTS timeout to the normal
> values specified by the standard, but it turns out while it doesn't
> need the same extra time that it needs for the ACK timeout, it
> does need more than the value specified in the standard, but only
> for 2.4 GHz.
> 
> This patch brings the CTS timeout value in sync with the initialization
> values, while still allowing adjustment for bigger distances.
> 
> Signed-off-by: Felix Fietkau <nbd at openwrt.org>
> Cc: stable at vger.kernel.org
> Reported-by: Seth Forshee <seth.forshee at canonical.com>
> Reported-by: Marek Lindner <lindner_marek at yahoo.de>
> Signed-off-by: John W. Linville <linville at tuxdriver.com>
> (cherry picked from commit 55a2bb4a6d5e8c7b324d003e130fd9aaf33be4e6)
> BugLink: http://bugs.launchpad.net/bugs/925602
> Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
> ---
>  drivers/net/wireless/ath/ath9k/hw.c |    7 +++++--
>  1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
> index 8873c6e..8b0c2ca 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -1034,13 +1034,16 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
>  
>  	/*
>  	 * Workaround for early ACK timeouts, add an offset to match the
> -	 * initval's 64us ack timeout value.
> +	 * initval's 64us ack timeout value. Use 48us for the CTS timeout.
>  	 * This was initially only meant to work around an issue with delayed
>  	 * BA frames in some implementations, but it has been found to fix ACK
>  	 * timeout issues in other cases as well.
>  	 */
> -	if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ)
> +	if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ) {
>  		acktimeout += 64 - sifstime - ah->slottime;
> +		ctstimeout += 48 - sifstime - ah->slottime;
> +	}
> +
>  
>  	ath9k_hw_set_sifs_time(ah, sifstime);
>  	ath9k_hw_setslottime(ah, slottime);
> -- 
> 1.7.9
> 
> 






More information about the kernel-team mailing list