aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tx.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 4cb839ae3e22..0556d139b719 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -1278,8 +1278,6 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
1278 1278
1279 memset(&info->status, 0, sizeof(info->status)); 1279 memset(&info->status, 0, sizeof(info->status));
1280 1280
1281 info->flags &= ~IEEE80211_TX_CTL_AMPDU;
1282
1283 /* inform mac80211 about what happened with the frame */ 1281 /* inform mac80211 about what happened with the frame */
1284 switch (status & TX_STATUS_MSK) { 1282 switch (status & TX_STATUS_MSK) {
1285 case TX_STATUS_SUCCESS: 1283 case TX_STATUS_SUCCESS:
@@ -1302,10 +1300,11 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
1302 (void *)(uintptr_t)le32_to_cpu(tx_resp->initial_rate); 1300 (void *)(uintptr_t)le32_to_cpu(tx_resp->initial_rate);
1303 1301
1304 /* Single frame failure in an AMPDU queue => send BAR */ 1302 /* Single frame failure in an AMPDU queue => send BAR */
1305 if (txq_id >= mvm->first_agg_queue && 1303 if (info->flags & IEEE80211_TX_CTL_AMPDU &&
1306 !(info->flags & IEEE80211_TX_STAT_ACK) && 1304 !(info->flags & IEEE80211_TX_STAT_ACK) &&
1307 !(info->flags & IEEE80211_TX_STAT_TX_FILTERED)) 1305 !(info->flags & IEEE80211_TX_STAT_TX_FILTERED))
1308 info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK; 1306 info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
1307 info->flags &= ~IEEE80211_TX_CTL_AMPDU;
1309 1308
1310 /* W/A FW bug: seq_ctl is wrong when the status isn't success */ 1309 /* W/A FW bug: seq_ctl is wrong when the status isn't success */
1311 if (status != TX_STATUS_SUCCESS) { 1310 if (status != TX_STATUS_SUCCESS) {
@@ -1340,7 +1339,7 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
1340 ieee80211_tx_status(mvm->hw, skb); 1339 ieee80211_tx_status(mvm->hw, skb);
1341 } 1340 }
1342 1341
1343 if (txq_id >= mvm->first_agg_queue) { 1342 if (iwl_mvm_is_dqa_supported(mvm) || txq_id >= mvm->first_agg_queue) {
1344 /* If this is an aggregation queue, we use the ssn since: 1343 /* If this is an aggregation queue, we use the ssn since:
1345 * ssn = wifi seq_num % 256. 1344 * ssn = wifi seq_num % 256.
1346 * The seq_ctl is the sequence control of the packet to which 1345 * The seq_ctl is the sequence control of the packet to which