diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.h | 1 |
3 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 59302faec395..769c05c0cbaa 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -687,6 +687,9 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status) | |||
687 | mcs = real_mcs; | 687 | mcs = real_mcs; |
688 | } | 688 | } |
689 | 689 | ||
690 | if (aggr == 1 || ampdu == 1) | ||
691 | __set_bit(TXDONE_AMPDU, &txdesc.flags); | ||
692 | |||
690 | /* | 693 | /* |
691 | * Ralink has a retry mechanism using a global fallback | 694 | * Ralink has a retry mechanism using a global fallback |
692 | * table. We setup this fallback table to try the immediate | 695 | * table. We setup this fallback table to try the immediate |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index a98c43485239..83252d94c2b7 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -353,10 +353,14 @@ void rt2x00lib_txdone(struct queue_entry *entry, | |||
353 | * which would allow the rc algorithm to better decide on | 353 | * which would allow the rc algorithm to better decide on |
354 | * which rates are suitable. | 354 | * which rates are suitable. |
355 | */ | 355 | */ |
356 | if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) { | 356 | if (test_bit(TXDONE_AMPDU, &txdesc->flags) || |
357 | tx_info->flags & IEEE80211_TX_CTL_AMPDU) { | ||
357 | tx_info->flags |= IEEE80211_TX_STAT_AMPDU; | 358 | tx_info->flags |= IEEE80211_TX_STAT_AMPDU; |
358 | tx_info->status.ampdu_len = 1; | 359 | tx_info->status.ampdu_len = 1; |
359 | tx_info->status.ampdu_ack_len = success ? 1 : 0; | 360 | tx_info->status.ampdu_ack_len = success ? 1 : 0; |
361 | |||
362 | if (!success) | ||
363 | tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK; | ||
360 | } | 364 | } |
361 | 365 | ||
362 | if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) { | 366 | if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) { |
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h index 0c8b0c699679..6ae820093997 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.h +++ b/drivers/net/wireless/rt2x00/rt2x00queue.h | |||
@@ -217,6 +217,7 @@ enum txdone_entry_desc_flags { | |||
217 | TXDONE_FALLBACK, | 217 | TXDONE_FALLBACK, |
218 | TXDONE_FAILURE, | 218 | TXDONE_FAILURE, |
219 | TXDONE_EXCESSIVE_RETRY, | 219 | TXDONE_EXCESSIVE_RETRY, |
220 | TXDONE_AMPDU, | ||
220 | }; | 221 | }; |
221 | 222 | ||
222 | /** | 223 | /** |