Thread (9 messages) 9 messages, 4 authors, 2012-02-03
  • (no subject) · Laurent Bonnans <hidden> · 2012-01-30
  • Re: · Mohammed Shafi <hidden> · 2012-01-31
  • Re: · Mohammed Shafi <hidden> · 2012-02-01
  • Re: · John W. Linville <hidden> · 2012-02-01
  • Re: · Felix Fietkau <hidden> · 2012-02-01
  • Re: · Mohammed Shafi <hidden> · 2012-02-02
  • Re: · Felix Fietkau <hidden> · 2012-02-02
  • Re: · Mohammed Shafi <hidden> · 2012-02-03
  • Re: · Laurent Bonnans <hidden> · 2012-02-03

Re:

From: Felix Fietkau <hidden>
Date: 2012-02-01 17:04:58

On 2012-02-01 5:27 PM, John W. Linville wrote:
On Wed, Feb 01, 2012 at 04:44:08PM +0530, Mohammed Shafi wrote:
quoted
On Tue, Jan 31, 2012 at 11:28 AM, Mohammed Shafi
[off-list ref] wrote:
quoted
On Tue, Jan 31, 2012 at 1:13 AM, Laurent Bonnans [off-list ref] wrote:
quoted
Since the update from linux 3.2.1 to 3.2.2, dhcp stopped working on
some APs on my laptop with an AR9285 Wireless card.

dhcp works fine on an open wifi network but receives no response on a
wep network I use. I haven't been able to test it on a third network
for now.
 reverting  "ath9k_hw: fix interpretation of the rx KeyMiss flag" does
helps.  i  need to analyze
if it exposes some real issue which need to be fixed.
this seems to be a problem in WEP alone, where the key miss is always
set for this case and RX_FLAG_DECRYPTED is not set. mac80211 trys to
decrypt,  but fails due to ICV mismatch.
OK...any way to differentiate this case at that point in the code?

John
Please try this patch:

---
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -823,6 +823,15 @@ static bool ath9k_rx_accept(struct ath_c
 		(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
 		 ATH9K_RXERR_KEYMISS));
 
+	/*
+	 * First 4 slots are reserved for WEP, and for packets using them,
+	 * ATH9K_RXERR_KEYMISS can be reported even though decryption was
+	 * successful, since no MAC address based key cache lookup was
+	 * performed.
+	 */
+	if (rx_stats->rs_keyix < 4)
+		rx_stats->rs_status &= ~ATH9K_RXERR_KEYMISS;
+
 	if (!rx_stats->rs_datalen)
 		return false;
         /*
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help