aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVijayakumar Durai <vijayakumar.durai1@vivint.com>2019-02-26 19:29:30 +0530
committerDaniel Golle <daniel@makrotopia.org>2019-03-05 03:54:39 +0100
commitd0b969eee85aada1bbb9e4aee6b11f0b098f74b7 (patch)
tree3116b7caf9ae08095b2db89695109df8b90d35fd
parent40530c8eb42aa4b98de10621b6c1c89030f00d0a (diff)
downloadupstream-d0b969eee85aada1bbb9e4aee6b11f0b098f74b7.tar.gz
upstream-d0b969eee85aada1bbb9e4aee6b11f0b098f74b7.tar.bz2
upstream-d0b969eee85aada1bbb9e4aee6b11f0b098f74b7.zip
mac80211: rt2x00: do not increment sequence number while re-transmitting
Currently STA+AP re-transmitting the management frames with incremented sequence number if hardware is assigning the sequence. Fix is to assign the sequence number for Beacon by hardware and for other Management frames software will assign the sequence number Signed-off-by: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
-rw-r--r--package/kernel/mac80211/patches/rt2x00/987-rt2x00-do-not-increment-management-frame-sequence-number-while-retry.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/rt2x00/987-rt2x00-do-not-increment-management-frame-sequence-number-while-retry.patch b/package/kernel/mac80211/patches/rt2x00/987-rt2x00-do-not-increment-management-frame-sequence-number-while-retry.patch
new file mode 100644
index 0000000000..9ef168d3e9
--- /dev/null
+++ b/package/kernel/mac80211/patches/rt2x00/987-rt2x00-do-not-increment-management-frame-sequence-number-while-retry.patch
@@ -0,0 +1,55 @@
+From c92df3d93ad09f219e0728b39d40dc0a69d0760f Mon Sep 17 00:00:00 2001
+From: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
+Date: Tue Feb 26 19:29:30 2019 +0530
+Subject: [PATCH] rt2x00: do not increment sequence number while
+ re-transmitting
+
+Currently STA+AP re-transmitting the management frames with
+incremented sequence number if hardware is assigning the sequence.
+
+Fix is to assign the sequence number for Beacon by hardware
+and for other Management frames software will assign the
+sequence number
+
+Signed-off-by: Vijayakumar Durai <vijayakumar.durai1@vivint.com>
+---
+ .../net/wireless/ralink/rt2x00/rt2x00queue.c | 26 +++++++++----------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
+@@ -207,22 +207,20 @@ static void rt2x00queue_create_tx_descri
+ */
+ if (test_bit(CONFIG_QOS_DISABLED, &rt2x00dev->flags))
+ __clear_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags);
+- else
+- /* H/W will generate sequence number */
+- return;
++ else {
++ /*
++ * rt2800 has a beacon problem(beacon is sent with same sequence
++ * number more than once)with software generated sequence number.
++ * So for beacons,hardware will generate sequence number and for
++ * other Management frames software will generate sequence number.
++ */
++ if (ieee80211_is_beacon(hdr->frame_control))
++ return;
++ else
++ __clear_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags);
++ }
+ }
+
+- /*
+- * The hardware is not able to insert a sequence number. Assign a
+- * software generated one here.
+- *
+- * This is wrong because beacons are not getting sequence
+- * numbers assigned properly.
+- *
+- * A secondary problem exists for drivers that cannot toggle
+- * sequence counting per-frame, since those will override the
+- * sequence counter given by mac80211.
+- */
+ if (test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags))
+ seqno = atomic_add_return(0x10, &intf->seqno);
+ else