aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h1
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.c11
5 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index 2725f3c4442e..d38acf4b65e1 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1641,6 +1641,7 @@ static int rt2400pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1641 */ 1641 */
1642 __set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); 1642 __set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags);
1643 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags); 1643 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
1644 __set_bit(DRIVER_REQUIRE_SW_SEQNO, &rt2x00dev->flags);
1644 1645
1645 /* 1646 /*
1646 * Set the rssi offset. 1647 * Set the rssi offset.
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 3ef1fb4185c0..b00e4d483c58 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1959,6 +1959,7 @@ static int rt2500pci_probe_hw(struct rt2x00_dev *rt2x00dev)
1959 */ 1959 */
1960 __set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); 1960 __set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags);
1961 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags); 1961 __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
1962 __set_bit(DRIVER_REQUIRE_SW_SEQNO, &rt2x00dev->flags);
1962 1963
1963 /* 1964 /*
1964 * Set the rssi offset. 1965 * Set the rssi offset.
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 01f385d5846c..b71df29436e7 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1795,6 +1795,7 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev)
1795 __set_bit(DRIVER_REQUIRE_COPY_IV, &rt2x00dev->flags); 1795 __set_bit(DRIVER_REQUIRE_COPY_IV, &rt2x00dev->flags);
1796 } 1796 }
1797 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags); 1797 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags);
1798 __set_bit(DRIVER_REQUIRE_SW_SEQNO, &rt2x00dev->flags);
1798 1799
1799 /* 1800 /*
1800 * Set the rssi offset. 1801 * Set the rssi offset.
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 2f5d8de5ef14..9067c917c659 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -662,6 +662,7 @@ enum rt2x00_flags {
662 DRIVER_REQUIRE_L2PAD, 662 DRIVER_REQUIRE_L2PAD,
663 DRIVER_REQUIRE_TXSTATUS_FIFO, 663 DRIVER_REQUIRE_TXSTATUS_FIFO,
664 DRIVER_REQUIRE_TASKLET_CONTEXT, 664 DRIVER_REQUIRE_TASKLET_CONTEXT,
665 DRIVER_REQUIRE_SW_SEQNO,
665 666
666 /* 667 /*
667 * Driver features 668 * Driver features
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index b32ca31de7e8..eebb564ee4da 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -224,10 +224,14 @@ static void rt2x00queue_create_tx_descriptor_seq(struct queue_entry *entry,
224 if (!(tx_info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)) 224 if (!(tx_info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ))
225 return; 225 return;
226 226
227 __set_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags);
228
229 if (!test_bit(DRIVER_REQUIRE_SW_SEQNO, &entry->queue->rt2x00dev->flags))
230 return;
231
227 /* 232 /*
228 * Hardware should insert sequence counter. 233 * The hardware is not able to insert a sequence number. Assign a
229 * FIXME: We insert a software sequence counter first for 234 * software generated one here.
230 * hardware that doesn't support hardware sequence counting.
231 * 235 *
232 * This is wrong because beacons are not getting sequence 236 * This is wrong because beacons are not getting sequence
233 * numbers assigned properly. 237 * numbers assigned properly.
@@ -245,7 +249,6 @@ static void rt2x00queue_create_tx_descriptor_seq(struct queue_entry *entry,
245 249
246 spin_unlock_irqrestore(&intf->seqlock, irqflags); 250 spin_unlock_irqrestore(&intf->seqlock, irqflags);
247 251
248 __set_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags);
249} 252}
250 253
251static void rt2x00queue_create_tx_descriptor_plcp(struct queue_entry *entry, 254static void rt2x00queue_create_tx_descriptor_plcp(struct queue_entry *entry,