• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

linux-3.0.x for AP-SH4A-0A Board


Commit MetaInfo

Revisão79db0af8b41b543e1fa684a4eb5949663aa52ae4 (tree)
Hora2011-08-05 13:58:33
AutorSenthil Balasubramanian <senthilb@qca....>
CommiterGreg Kroah-Hartman

Mensagem de Log

ath9k_hw: Fix incorrect key_miss handling

commit 0472ade031b5c0c69c21cf96acf64c50eb9ba3c2 upstream.

Decryping frames on key_miss handling shouldn't be done for Michael
MIC failed frames as h/w would have already decrypted such frames
successfully anyway.

Also leaving CRC and PHY error(where the frame is going to be dropped
anyway), we are left to prcoess Decrypt error for which s/w decrypt is
selected anway and so having key_miss as a separate check doesn't serve
anything. So making key_miss handling mutually exlusive with other RX
status handling makes much more sense.

This patch addresses an issue with STA not reporting MIC failure events
resulting in STA being disconnected immediately.

Signed-off-by: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Mudança Sumário

Diff

--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -629,8 +629,7 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs,
629629 rxs->rs_status |= ATH9K_RXERR_DECRYPT;
630630 else if (rxsp->status11 & AR_MichaelErr)
631631 rxs->rs_status |= ATH9K_RXERR_MIC;
632-
633- if (rxsp->status11 & AR_KeyMiss)
632+ else if (rxsp->status11 & AR_KeyMiss)
634633 rxs->rs_status |= ATH9K_RXERR_DECRYPT;
635634 }
636635
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -645,8 +645,7 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
645645 rs->rs_status |= ATH9K_RXERR_DECRYPT;
646646 else if (ads.ds_rxstatus8 & AR_MichaelErr)
647647 rs->rs_status |= ATH9K_RXERR_MIC;
648-
649- if (ads.ds_rxstatus8 & AR_KeyMiss)
648+ else if (ads.ds_rxstatus8 & AR_KeyMiss)
650649 rs->rs_status |= ATH9K_RXERR_DECRYPT;
651650 }
652651