aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2011-10-10 10:27:09 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-10-14 14:48:12 -0400
commitef082cb1e5f57fd3435fd9ccdf67e9d1c6bb7b17 (patch)
treebee8477abe14cfe8b0c6735b45ecb96d2bf176cf
parent8921d4cab903a0578663d8c924d9054e96c2a0fa (diff)
iwlagn: don't stop rts/cts until last aggregation queue close
Once enable rts/cts for aggregation queue, do not disable until the last aggregation queue closed. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index afd4b4c9b3f2..f00484ea1b21 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2418,11 +2418,6 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
2418 case IEEE80211_AMPDU_TX_START: 2418 case IEEE80211_AMPDU_TX_START:
2419 IWL_DEBUG_HT(priv, "start Tx\n"); 2419 IWL_DEBUG_HT(priv, "start Tx\n");
2420 ret = iwlagn_tx_agg_start(priv, vif, sta, tid, ssn); 2420 ret = iwlagn_tx_agg_start(priv, vif, sta, tid, ssn);
2421 if (ret == 0) {
2422 priv->agg_tids_count++;
2423 IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
2424 priv->agg_tids_count);
2425 }
2426 break; 2421 break;
2427 case IEEE80211_AMPDU_TX_STOP: 2422 case IEEE80211_AMPDU_TX_STOP:
2428 IWL_DEBUG_HT(priv, "stop Tx\n"); 2423 IWL_DEBUG_HT(priv, "stop Tx\n");
@@ -2434,7 +2429,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
2434 } 2429 }
2435 if (test_bit(STATUS_EXIT_PENDING, &priv->shrd->status)) 2430 if (test_bit(STATUS_EXIT_PENDING, &priv->shrd->status))
2436 ret = 0; 2431 ret = 0;
2437 if (priv->cfg->ht_params && 2432 if (!priv->agg_tids_count && priv->cfg->ht_params &&
2438 priv->cfg->ht_params->use_rts_for_aggregation) { 2433 priv->cfg->ht_params->use_rts_for_aggregation) {
2439 /* 2434 /*
2440 * switch off RTS/CTS if it was previously enabled 2435 * switch off RTS/CTS if it was previously enabled
@@ -2481,6 +2476,9 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
2481 sta_priv->lq_sta.lq.general_params.flags |= 2476 sta_priv->lq_sta.lq.general_params.flags |=
2482 LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK; 2477 LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK;
2483 } 2478 }
2479 priv->agg_tids_count++;
2480 IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n",
2481 priv->agg_tids_count);
2484 2482
2485 sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit = 2483 sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit =
2486 sta_priv->max_agg_bufsize; 2484 sta_priv->max_agg_bufsize;