aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2011-01-30 07:22:41 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-01-31 15:06:24 -0500
commita45f369d477c0e1b15b77c7b09ccfa043097e9ab (patch)
tree23724f1c97db44831efdac9f13a96b945025ec7d /drivers/net
parent21957c31f6b388c7feaac59e56f765b5cc41377d (diff)
rt2x00: Fix WPA TKIP Michael MIC failures.
As reported and found by Johannes Stezenbach: rt2800{pci,usb} do not report the Michael MIC in RXed frames, but do check the Michael MIC in hardware. Therefore we have to report to mac80211 that the received frame does not include the Michael MIC. Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 208ea5e966ed..8f4dfc3d8023 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -675,6 +675,12 @@ static void rt2800pci_fill_rxdone(struct queue_entry *entry,
675 */ 675 */
676 rxdesc->flags |= RX_FLAG_IV_STRIPPED; 676 rxdesc->flags |= RX_FLAG_IV_STRIPPED;
677 677
678 /*
679 * The hardware has already checked the Michael Mic and has
680 * stripped it from the frame. Signal this to mac80211.
681 */
682 rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
683
678 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) 684 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
679 rxdesc->flags |= RX_FLAG_DECRYPTED; 685 rxdesc->flags |= RX_FLAG_DECRYPTED;
680 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) 686 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 3d2a944814bc..5d91561e0de7 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -484,6 +484,12 @@ static void rt2800usb_fill_rxdone(struct queue_entry *entry,
484 */ 484 */
485 rxdesc->flags |= RX_FLAG_IV_STRIPPED; 485 rxdesc->flags |= RX_FLAG_IV_STRIPPED;
486 486
487 /*
488 * The hardware has already checked the Michael Mic and has
489 * stripped it from the frame. Signal this to mac80211.
490 */
491 rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
492
487 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) 493 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
488 rxdesc->flags |= RX_FLAG_DECRYPTED; 494 rxdesc->flags |= RX_FLAG_DECRYPTED;
489 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) 495 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)