aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.h1
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/**