diff options
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 7 |
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 |