[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