diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-10-10 10:27:09 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-10-14 14:48:12 -0400 |
commit | ef082cb1e5f57fd3435fd9ccdf67e9d1c6bb7b17 (patch) | |
tree | bee8477abe14cfe8b0c6735b45ecb96d2bf176cf | |
parent | 8921d4cab903a0578663d8c924d9054e96c2a0fa (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.c | 10 |
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; |