aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaftali Goldstein <naftali.goldstein@intel.com>2017-07-11 03:07:32 -0400
committerLuca Coelho <luciano.coelho@intel.com>2017-08-09 03:05:01 -0400
commit20fc690f38d17b8f961101a477a9aa0841fb6e20 (patch)
treeb4b1d2f3b94ebdaef58ac1eb9db1d5b530d8f72a
parent04c2cf34362f133be09878bd752f8b014318b59a (diff)
iwlwifi: mvm: send delba upon rx ba session timeout
When an RX block-ack session times out, the firmware, which offloads RX reordering but not the BA session negotiation, stops the session but doesn't send a DELBA. This causes the the session to remain active in the remote device, so no more BA sessions will be established, causing a severe throughput degradation due to the lack of aggregation. Use the new ieee80211_rx_ba_timer_expired API when the ba session timer expires, since this will tear down the ba session and also send a delba. The previous API used is intended for drivers that offload the addba/delba negotiation, but not the rx reordering, while our driver does the opposite. This patch depends on "mac80211: add api to start ba session timer expired flow". Signed-off-by: Naftali Goldstein <naftali.goldstein@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/sta.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index dcaef7c043ac..027ee5e72172 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -291,8 +291,8 @@ static void iwl_mvm_rx_agg_session_expired(unsigned long data)
291 goto unlock; 291 goto unlock;
292 292
293 mvm_sta = iwl_mvm_sta_from_mac80211(sta); 293 mvm_sta = iwl_mvm_sta_from_mac80211(sta);
294 ieee80211_stop_rx_ba_session_offl(mvm_sta->vif, 294 ieee80211_rx_ba_timer_expired(mvm_sta->vif,
295 sta->addr, ba_data->tid); 295 sta->addr, ba_data->tid);
296unlock: 296unlock:
297 rcu_read_unlock(); 297 rcu_read_unlock();
298} 298}