ath9k: fix a WEP crypto related regression

ath9k_hw: fix a RTS/CTS timeout regression
This commit is contained in:
John W. Linville 2012-02-06 11:30:40 -05:00
parent 69d2ad30b8
commit 5edcb3f1d2
3 changed files with 149 additions and 0 deletions

View File

@ -0,0 +1,66 @@
From nbd@nbd.name Sun Feb 5 15:15:47 2012
Return-path: <nbd@nbd.name>
Envelope-to: linville@tuxdriver.com
Delivery-date: Sun, 05 Feb 2012 15:15:47 -0500
Received: from [2a01:4f8:131:30e2::2] (helo=nbd.name)
by smtp.tuxdriver.com with esmtps (TLSv1:AES256-SHA:256)
(Exim 4.63)
(envelope-from <nbd@nbd.name>)
id 1Ru8Um-0004mD-I2
for linville@tuxdriver.com; Sun, 05 Feb 2012 15:15:47 -0500
Received: by nf.local (Postfix, from userid 501)
id 12D0F5BDE1DC; Sun, 5 Feb 2012 21:15:18 +0100 (CET)
From: Felix Fietkau <nbd@openwrt.org>
To: linux-wireless@vger.kernel.org
Cc: linville@tuxdriver.com,
mcgrof@qca.qualcomm.com,
mohammed@qca.qualcomm.com
Subject: [PATCH 3.3 1/2] ath9k: fix a WEP crypto related regression
Date: Sun, 5 Feb 2012 21:15:17 +0100
Message-Id: <1328472918-30012-1-git-send-email-nbd@openwrt.org>
X-Mailer: git-send-email 1.7.3.2
X-Spam-Score: -1.1 (-)
X-Spam-Status: No
Status: RO
Content-Length: 1381
Lines: 38
commit b4a82a0 "ath9k_hw: fix interpretation of the rx KeyMiss flag"
fixed the interpretation of the KeyMiss flag for keycache based lookups,
however WEP encryption uses a static index, so KeyMiss is always asserted
for it, even though frames are decrypted properly.
Fix this by clearing the ATH9K_RXERR_KEYMISS flag if no keycache based
lookup was performed.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@vger.kernel.org
Reported-by: Laurent Bonnans <bonnans.l@gmail.com>
Reported-by: Jurica Vukadin <u.ra604@googlemail.com>
---
drivers/net/wireless/ath/ath9k/recv.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 0e666fb..7e1a91a 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -822,6 +822,14 @@ static bool ath9k_rx_accept(struct ath_common *common,
(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
ATH9K_RXERR_KEYMISS));
+ /*
+ * Key miss events are only relevant for pairwise keys where the
+ * descriptor does contain a valid key index. This has been observed
+ * mostly with CCMP encryption.
+ */
+ if (rx_stats->rs_keyix == ATH9K_RXKEYIX_INVALID)
+ rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
+
if (!rx_stats->rs_datalen)
return false;
/*
--
1.7.3.2

View File

@ -0,0 +1,75 @@
From nbd@nbd.name Sun Feb 5 15:15:46 2012
Return-path: <nbd@nbd.name>
Envelope-to: linville@tuxdriver.com
Delivery-date: Sun, 05 Feb 2012 15:15:46 -0500
Received: from [2a01:4f8:131:30e2::2] (helo=nbd.name)
by smtp.tuxdriver.com with esmtps (TLSv1:AES256-SHA:256)
(Exim 4.63)
(envelope-from <nbd@nbd.name>)
id 1Ru8Um-0004mE-I0
for linville@tuxdriver.com; Sun, 05 Feb 2012 15:15:44 -0500
Received: by nf.local (Postfix, from userid 501)
id 1926D5BDE1DD; Sun, 5 Feb 2012 21:15:18 +0100 (CET)
From: Felix Fietkau <nbd@openwrt.org>
To: linux-wireless@vger.kernel.org
Cc: linville@tuxdriver.com,
mcgrof@qca.qualcomm.com,
mohammed@qca.qualcomm.com
Subject: [PATCH 3.3 2/2] ath9k_hw: fix a RTS/CTS timeout regression
Date: Sun, 5 Feb 2012 21:15:18 +0100
Message-Id: <1328472918-30012-2-git-send-email-nbd@openwrt.org>
X-Mailer: git-send-email 1.7.3.2
In-Reply-To: <1328472918-30012-1-git-send-email-nbd@openwrt.org>
References: <1328472918-30012-1-git-send-email-nbd@openwrt.org>
X-Spam-Score: -1.1 (-)
X-Spam-Status: No
Status: RO
Content-Length: 1749
Lines: 45
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@openwrt.org>
Cc: stable@vger.kernel.org
Reported-by: Seth Forshee <seth.forshee@canonical.com>
Reported-by: Marek Lindner <lindner_marek@yahoo.de>
---
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 ee77595..87db1ee 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1037,13 +1037,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.3.2

View File

@ -821,6 +821,8 @@ Patch50113: iwlwifi-don-t-mess-up-QoS-counters-with-non-QoS-fram.patch
Patch50114: mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch
Patch50200: ath9k-use-WARN_ON_ONCE-in-ath_rc_get_highest_rix.patch
Patch50201: ath9k-fix-a-WEP-crypto-related-regression.patch
Patch50202: ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
%endif
@ -1583,6 +1585,8 @@ ApplyPatch iwlwifi-don-t-mess-up-QoS-counters-with-non-QoS-fram.patch
ApplyPatch mac80211-timeout-a-single-frame-in-the-rx-reorder-bu.patch
ApplyPatch ath9k-use-WARN_ON_ONCE-in-ath_rc_get_highest_rix.patch
ApplyPatch ath9k-fix-a-WEP-crypto-related-regression.patch
ApplyPatch ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
ApplyPatch rt2x00_fix_MCU_request_failures.patch
@ -2291,6 +2295,10 @@ fi
# and build.
%changelog
* Mon Feb 06 2012 John W. Linville <linville@redhat.com>
- ath9k: fix a WEP crypto related regression
- ath9k_hw: fix a RTS/CTS timeout regression
* Sun Feb 05 2012 Dave Jones <davej@redhat.com>
- Remove unnecessary block-stray-block-put-after-teardown.patch
- readahead: fix pipeline break caused by block plug