summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Sharon <sara.sharon@intel.com>2018-05-01 15:12:08 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-11-20 19:59:45 +0300
commit92d88fa66fb7240480037963e1443120c1bd4b2f (patch)
tree811e002200a2bef854c71a2c044d589d0865d25b
parent4c337b4ff09fa549415409d8564af9559f9a28f9 (diff)
downloadlinux-92d88fa66fb7240480037963e1443120c1bd4b2f.tar.xz
iwlwifi: mvm: avoid sending too many BARs
[ Upstream commit 1a19c139be18ed4d6d681049cc48586fae070120 ] When we receive TX response, we may release a few packets due to a hole that was closed in the transmission window. However, if that frame failed, we will mark all the released frames as failed and will send multiple BARs. This affects statistics badly, and cause unnecessary frames transmission. Instead, mark all the following packets as success, with the desired result of sending a bar for the failed frame only. Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tx.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index efef28012a6b..ac1e05b93a9a 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -1378,6 +1378,14 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
break;
}
+ /*
+ * If we are freeing multiple frames, mark all the frames
+ * but the first one as acked, since they were acknowledged
+ * before
+ * */
+ if (skb_freed > 1)
+ info->flags |= IEEE80211_TX_STAT_ACK;
+
iwl_mvm_tx_status_check_trigger(mvm, status);
info->status.rates[0].count = tx_resp->failure_frame + 1;