diff options
Diffstat (limited to 'drivers/net/wireless/ralink/rt2x00/rt2x00queue.c')
-rw-r--r-- | drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c index 92ddc19e7bf7..4834b4eb0206 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | |||
@@ -201,15 +201,18 @@ static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, | |||
201 | if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_SW_SEQNO)) { | 201 | if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_SW_SEQNO)) { |
202 | /* | 202 | /* |
203 | * rt2800 has a H/W (or F/W) bug, device incorrectly increase | 203 | * rt2800 has a H/W (or F/W) bug, device incorrectly increase |
204 | * seqno on retransmited data (non-QOS) frames. To workaround | 204 | * seqno on retransmitted data (non-QOS) and management frames. |
205 | * the problem let's generate seqno in software if QOS is | 205 | * To workaround the problem let's generate seqno in software. |
206 | * disabled. | 206 | * Except for beacons which are transmitted periodically by H/W |
207 | * hence hardware has to assign seqno for them. | ||
207 | */ | 208 | */ |
208 | if (test_bit(CONFIG_QOS_DISABLED, &rt2x00dev->flags)) | 209 | if (ieee80211_is_beacon(hdr->frame_control)) { |
209 | __clear_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags); | 210 | __set_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags); |
210 | else | ||
211 | /* H/W will generate sequence number */ | 211 | /* H/W will generate sequence number */ |
212 | return; | 212 | return; |
213 | } | ||
214 | |||
215 | __clear_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags); | ||
213 | } | 216 | } |
214 | 217 | ||
215 | /* | 218 | /* |