1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-23 20:00:39 +02:00

mac80211: update rt2x00 rx_status patch

Also remove the superfluous ones for ath5k, p54.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34637 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2012-12-11 17:49:11 +00:00
parent 95a399ee5c
commit e2f1cef21f
3 changed files with 19 additions and 69 deletions

View File

@ -1,12 +1,13 @@
From 84b435b38a84c9a7e8ba33e8d02d2f967f847ce1 Mon Sep 17 00:00:00 2001
From e922d683ca8001ce9a6272d6ab12d74e72c36521 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Tue, 11 Dec 2012 14:15:53 +0100
Subject: [PATCH 1/3] rt2x00: zero-out rx_status
Subject: [PATCH v2] rt2x00: zero-out rx_status
In commit 'mac80211: support radiotap vendor namespace RX data'
new fields were added to 'struct ieee80211_rx_status'.
The rt2x00 driver does not initializes those fields and
this can cause unexpected behaviour.
new fields were added to 'struct ieee80211_rx_status' and those
fileds must be zeroed. However the rt2x00 driver stores driver
specific data in the cb array of the rx skbs, so the fields
might contain garbage and this can cause unexpected behaviour.
The rt2x00 driver from the compat-wireless-2012-12-01
tarball caused the following warning:
@ -38,15 +39,25 @@ zeroes.
Cc: <users@rt2x00.serialmonkey.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
---
drivers/net/wireless/rt2x00/rt2x00dev.c | 2 ++
1 file changed, 2 insertions(+)
v2:
- update the commit message and add a comment to the code
- drop the ath5k and p54 patches
---
drivers/net/wireless/rt2x00/rt2x00dev.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -685,6 +685,8 @@ void rt2x00lib_rxdone(struct queue_entry
@@ -685,6 +685,14 @@ void rt2x00lib_rxdone(struct queue_entry
* to mac80211.
*/
rx_status = IEEE80211_SKB_RXCB(entry->skb);
+
+ /* Ensure that all fields of rx_status are initialized
+ * properly. The skb->cb array was used for driver
+ * specific informations, so rx_status might contain
+ * garbage.
+ */
+ memset(rx_status, 0, sizeof(*rx_status));
+
rx_status->mactime = rxdesc.timestamp;

View File

@ -1,31 +0,0 @@
From 4c0faf816beeb5d4175cff09c96e668a49ad032f Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Tue, 11 Dec 2012 14:16:15 +0100
Subject: [PATCH 2/3] ath5k: zero-out rx_status
In commit 'mac80211: support radiotap vendor namespace RX data'
new fields were added to 'struct ieee80211_rx_status'.
The ath5k driver does not initializes those fields and
this can cause unexpected behaviour. The patch ensures
that each field gets initialized with zeroes.
Cc: <ath5k-devel@lists.ath5k.org>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
---
Compile tested only.
---
drivers/net/wireless/ath/ath5k/base.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1325,8 +1325,8 @@ ath5k_receive_frame(struct ath5k_hw *ah,
ath5k_remove_padding(skb);
rxs = IEEE80211_SKB_RXCB(skb);
+ memset(rxs, 0, sizeof(*rxs));
- rxs->flag = 0;
if (unlikely(rs->rs_status & AR5K_RXERR_MIC))
rxs->flag |= RX_FLAG_MMIC_ERROR;

View File

@ -1,30 +0,0 @@
From 6e73611e574ea3c8fe5afc67ee29d2c5ff777f4b Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Tue, 11 Dec 2012 14:16:29 +0100
Subject: [PATCH 3/3] p54: zero-out rx_status
In commit 'mac80211: support radiotap vendor namespace RX data'
new fields were added to 'struct ieee80211_rx_status'.
The ath5k driver does not initializes those fields and
this can cause unexpected behaviour. The patch ensures
that each field gets initialized with zeroes.
Cc: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
---
Compile tested only.
---
drivers/net/wireless/p54/txrx.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/net/wireless/p54/txrx.c
+++ b/drivers/net/wireless/p54/txrx.c
@@ -345,6 +345,8 @@ static int p54_rx_data(struct p54_common
if (!(hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_IN_FCS_GOOD)))
return 0;
+ memset(rx_status, 0, sizeof(*rx_status));
+
if (hdr->decrypt_status == P54_DECRYPT_OK)
rx_status->flag |= RX_FLAG_DECRYPTED;
if ((hdr->decrypt_status == P54_DECRYPT_FAIL_MICHAEL) ||