[kernel/f16] ath9k: fix a WEP crypto related regression ath9k_hw: fix a RTS/CTS timeout regression

John W. Linville linville at fedoraproject.org
Mon Feb 6 16:32:02 UTC 2012


commit 5edcb3f1d26991119352a33729d0e837b2a9ef89
Author: John W. Linville <linville at tuxdriver.com>
Date:   Mon Feb 6 11:30:40 2012 -0500

    ath9k: fix a WEP crypto related regression
    ath9k_hw: fix a RTS/CTS timeout regression

 ath9k-fix-a-WEP-crypto-related-regression.patch |   66 ++++++++++++++++++++
 ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch |   75 +++++++++++++++++++++++
 kernel.spec                                     |    8 +++
 3 files changed, 149 insertions(+), 0 deletions(-)
---
diff --git a/ath9k-fix-a-WEP-crypto-related-regression.patch b/ath9k-fix-a-WEP-crypto-related-regression.patch
new file mode 100644
index 0000000..0ddbbe0
--- /dev/null
+++ b/ath9k-fix-a-WEP-crypto-related-regression.patch
@@ -0,0 +1,66 @@
+From nbd at nbd.name Sun Feb  5 15:15:47 2012
+Return-path: <nbd at nbd.name>
+Envelope-to: linville at 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 at nbd.name>)
+	id 1Ru8Um-0004mD-I2
+	for linville at 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 at openwrt.org>
+To: linux-wireless at vger.kernel.org
+Cc: linville at tuxdriver.com,
+	mcgrof at qca.qualcomm.com,
+	mohammed at 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 at 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 at openwrt.org>
+Cc: stable at vger.kernel.org
+Reported-by: Laurent Bonnans <bonnans.l at gmail.com>
+Reported-by: Jurica Vukadin <u.ra604 at 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
+
+
+
diff --git a/ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch b/ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
new file mode 100644
index 0000000..2ad6574
--- /dev/null
+++ b/ath9k_hw-fix-a-RTS-CTS-timeout-regression.patch
@@ -0,0 +1,75 @@
+From nbd at nbd.name Sun Feb  5 15:15:46 2012
+Return-path: <nbd at nbd.name>
+Envelope-to: linville at 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 at nbd.name>)
+	id 1Ru8Um-0004mE-I0
+	for linville at 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 at openwrt.org>
+To: linux-wireless at vger.kernel.org
+Cc: linville at tuxdriver.com,
+	mcgrof at qca.qualcomm.com,
+	mohammed at 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 at openwrt.org>
+X-Mailer: git-send-email 1.7.3.2
+In-Reply-To: <1328472918-30012-1-git-send-email-nbd at openwrt.org>
+References: <1328472918-30012-1-git-send-email-nbd at 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 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>
+---
+ 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
+
+
+
diff --git a/kernel.spec b/kernel.spec
index 84f278c..30d53ba 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -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 at redhat.com>
+- ath9k: fix a WEP crypto related regression
+- ath9k_hw: fix a RTS/CTS timeout regression
+
 * Sun Feb 05 2012 Dave Jones <davej at redhat.com>
 - Remove unnecessary block-stray-block-put-after-teardown.patch
 - readahead: fix pipeline break caused by block plug


More information about the scm-commits mailing list