Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[pandora-kernel.git] / drivers / net / wireless / ath / carl9170 / tx.c
index 0ef70b6..cb70ed7 100644 (file)
@@ -383,6 +383,7 @@ static void carl9170_tx_status_process_ampdu(struct ar9170 *ar,
 
        if (sta_info->stats[tid].clear) {
                sta_info->stats[tid].clear = false;
+               sta_info->stats[tid].req = false;
                sta_info->stats[tid].ampdu_len = 0;
                sta_info->stats[tid].ampdu_ack_len = 0;
        }
@@ -391,10 +392,16 @@ static void carl9170_tx_status_process_ampdu(struct ar9170 *ar,
        if (txinfo->status.rates[0].count == 1)
                sta_info->stats[tid].ampdu_ack_len++;
 
+       if (!(txinfo->flags & IEEE80211_TX_STAT_ACK))
+               sta_info->stats[tid].req = true;
+
        if (super->f.mac_control & cpu_to_le16(AR9170_TX_MAC_IMM_BA)) {
                super->s.rix = sta_info->stats[tid].ampdu_len;
                super->s.cnt = sta_info->stats[tid].ampdu_ack_len;
                txinfo->flags |= IEEE80211_TX_STAT_AMPDU;
+               if (sta_info->stats[tid].req)
+                       txinfo->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
+
                sta_info->stats[tid].clear = true;
        }
        spin_unlock_bh(&tid_info->lock);