aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/305-rt2x00-Detect-cypher-type-during-RX-rt2800usb.patch
blob: 831dda0015b30c541239e7a84f4d529da5915d63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From 35c7358f5f7ba03daeecdf1fdceabd48ebcd029a Mon Sep 17 00:00:00 2001
From: Ivo van Doorn <IvDoorn@gmail.com>
Date: Tue, 3 Mar 2009 20:15:17 +0100
Subject: [PATCH] rt2x00: Detect cypher type during RX (rt2800usb)

Use UDF field in WCID entry to pass the cipher type
to the RXWI fields. This will allow keeping track of
the number of frames received with a particular cipher type
which is exported through debugfs.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
 drivers/net/wireless/rt2x00/rt2800usb.c |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)

--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -366,7 +366,7 @@ static void rt2800usb_config_wcid_attr(s
 	rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_CIPHER, crypto->cipher);
 	rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_BSS_IDX,
 			   (crypto->cmd == SET_KEY) * crypto->bssidx);
-	rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_RX_WIUDF, 0);
+	rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_RX_WIUDF, crypto->cipher);
 	rt2x00usb_register_write(rt2x00dev, offset, reg);
 
 	offset = MAC_IVEIV_ENTRY(key->hw_key_idx);
@@ -2149,12 +2149,7 @@ static void rt2800usb_fill_rxdone(struct
 		rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC;
 
 	if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) {
-		/*
-		 * Unfortunately we don't know the cipher type used during
-		 * decryption. This prevents us from correct providing
-		 * correct statistics through debugfs.
-		 */
-		rxdesc->cipher = CIPHER_NONE;
+		rxdesc->cipher = rt2x00_get_field32(rxwi0, RXWI_W0_UDF);
 		rxdesc->cipher_status =
 		    rt2x00_get_field32(rxd0, RXD_W0_CIPHER_ERROR);
 	}