aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
diff options
context:
space:
mode:
authorMatti Gottlieb <matti.gottlieb@intel.com>2016-05-17 03:50:08 -0400
committerLuca Coelho <luciano.coelho@intel.com>2016-07-05 18:18:06 -0400
commitff7a68d0e7a7da411d0f87f57dde7e276e01ac92 (patch)
tree733c1ed6ac7a6556b53e49daca00d8a1a5a52dfb /drivers/net/wireless/intel/iwlwifi/mvm/rs.c
parentd7fdd0e528c5184fd22153a317683549f0c58a19 (diff)
iwlwifi: mvm: Do not open aggregations for null data packets
Currently we try to open an aggregation for every packet (given that one is not already open). This causes redundant overhead (addba/delba) for null data packets. Do not open an aggregation for null data packets. Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/rs.c')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rs.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
index 81dd2f6a48a5..7aecf46e2ab8 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
@@ -399,7 +399,7 @@ static int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)
399static void rs_rate_scale_perform(struct iwl_mvm *mvm, 399static void rs_rate_scale_perform(struct iwl_mvm *mvm,
400 struct ieee80211_sta *sta, 400 struct ieee80211_sta *sta,
401 struct iwl_lq_sta *lq_sta, 401 struct iwl_lq_sta *lq_sta,
402 int tid); 402 int tid, bool ndp);
403static void rs_fill_lq_cmd(struct iwl_mvm *mvm, 403static void rs_fill_lq_cmd(struct iwl_mvm *mvm,
404 struct ieee80211_sta *sta, 404 struct ieee80211_sta *sta,
405 struct iwl_lq_sta *lq_sta, 405 struct iwl_lq_sta *lq_sta,
@@ -1161,7 +1161,7 @@ static u8 rs_get_tid(struct ieee80211_hdr *hdr)
1161} 1161}
1162 1162
1163void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, 1163void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1164 int tid, struct ieee80211_tx_info *info) 1164 int tid, struct ieee80211_tx_info *info, bool ndp)
1165{ 1165{
1166 int legacy_success; 1166 int legacy_success;
1167 int retries; 1167 int retries;
@@ -1384,7 +1384,7 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1384done: 1384done:
1385 /* See if there's a better rate or modulation mode to try. */ 1385 /* See if there's a better rate or modulation mode to try. */
1386 if (sta->supp_rates[info->band]) 1386 if (sta->supp_rates[info->band])
1387 rs_rate_scale_perform(mvm, sta, lq_sta, tid); 1387 rs_rate_scale_perform(mvm, sta, lq_sta, tid, ndp);
1388} 1388}
1389 1389
1390/* 1390/*
@@ -1407,7 +1407,8 @@ static void rs_mac80211_tx_status(void *mvm_r,
1407 info->flags & IEEE80211_TX_CTL_NO_ACK) 1407 info->flags & IEEE80211_TX_CTL_NO_ACK)
1408 return; 1408 return;
1409 1409
1410 iwl_mvm_rs_tx_status(mvm, sta, rs_get_tid(hdr), info); 1410 iwl_mvm_rs_tx_status(mvm, sta, rs_get_tid(hdr), info,
1411 ieee80211_is_qos_nullfunc(hdr->frame_control));
1411} 1412}
1412 1413
1413/* 1414/*
@@ -2213,7 +2214,7 @@ static bool rs_tpc_perform(struct iwl_mvm *mvm,
2213static void rs_rate_scale_perform(struct iwl_mvm *mvm, 2214static void rs_rate_scale_perform(struct iwl_mvm *mvm,
2214 struct ieee80211_sta *sta, 2215 struct ieee80211_sta *sta,
2215 struct iwl_lq_sta *lq_sta, 2216 struct iwl_lq_sta *lq_sta,
2216 int tid) 2217 int tid, bool ndp)
2217{ 2218{
2218 int low = IWL_RATE_INVALID; 2219 int low = IWL_RATE_INVALID;
2219 int high = IWL_RATE_INVALID; 2220 int high = IWL_RATE_INVALID;
@@ -2512,7 +2513,7 @@ lq_update:
2512 (lq_sta->tx_agg_tid_en & (1 << tid)) && 2513 (lq_sta->tx_agg_tid_en & (1 << tid)) &&
2513 (tid != IWL_MAX_TID_COUNT)) { 2514 (tid != IWL_MAX_TID_COUNT)) {
2514 tid_data = &sta_priv->tid_data[tid]; 2515 tid_data = &sta_priv->tid_data[tid];
2515 if (tid_data->state == IWL_AGG_OFF) { 2516 if (tid_data->state == IWL_AGG_OFF && !ndp) {
2516 IWL_DEBUG_RATE(mvm, 2517 IWL_DEBUG_RATE(mvm,
2517 "try to aggregate tid %d\n", 2518 "try to aggregate tid %d\n",
2518 tid); 2519 tid);