diff options
author | Reinette Chatre <reinette.chatre@intel.com> | 2010-02-23 17:02:52 -0500 |
---|---|---|
committer | Reinette Chatre <reinette.chatre@intel.com> | 2010-02-23 17:02:52 -0500 |
commit | ab9bdc34d68dafc6fea0ba733231f1c9696ce9c4 (patch) | |
tree | 594f6df57abaae7e4f5c07a841d0603dcb2be1fb /drivers/net/wireless/iwlwifi/iwl-agn.c | |
parent | 4a6967b88af02eebeedfbb91bc09160750225bb5 (diff) |
Revert "iwlwifi: Monitor and recover the aggregation TX flow failure"
This reverts commit 1db5950f1d0b82e07371b211a48317b8972da063.
The goal of "iwlwifi: Monitor and recover the aggregation TX flow failure"
is to first detect when data transmission stalls and then to recover from
this situation with a reset of the radio or the firmware, depending on how
bad the transmission failures are.
Unfortunately we have found that this change causes excessive resets with
its current detection algorithm. It also performs its recovery action when
none is really needed, like when we are not associated.
Revert this change until the issues have been addressed.
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index c5b724eaf306..1fac015efc19 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -2941,21 +2941,10 @@ static int iwl_mac_ampdu_action(struct ieee80211_hw *hw, | |||
2941 | return ret; | 2941 | return ret; |
2942 | case IEEE80211_AMPDU_TX_START: | 2942 | case IEEE80211_AMPDU_TX_START: |
2943 | IWL_DEBUG_HT(priv, "start Tx\n"); | 2943 | IWL_DEBUG_HT(priv, "start Tx\n"); |
2944 | ret = iwl_tx_agg_start(priv, sta->addr, tid, ssn); | 2944 | return iwl_tx_agg_start(priv, sta->addr, tid, ssn); |
2945 | if (ret == 0) { | ||
2946 | priv->agg_tids_count++; | ||
2947 | IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n", | ||
2948 | priv->agg_tids_count); | ||
2949 | } | ||
2950 | return ret; | ||
2951 | case IEEE80211_AMPDU_TX_STOP: | 2945 | case IEEE80211_AMPDU_TX_STOP: |
2952 | IWL_DEBUG_HT(priv, "stop Tx\n"); | 2946 | IWL_DEBUG_HT(priv, "stop Tx\n"); |
2953 | ret = iwl_tx_agg_stop(priv, sta->addr, tid); | 2947 | ret = iwl_tx_agg_stop(priv, sta->addr, tid); |
2954 | if ((ret == 0) && (priv->agg_tids_count > 0)) { | ||
2955 | priv->agg_tids_count--; | ||
2956 | IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n", | ||
2957 | priv->agg_tids_count); | ||
2958 | } | ||
2959 | if (test_bit(STATUS_EXIT_PENDING, &priv->status)) | 2948 | if (test_bit(STATUS_EXIT_PENDING, &priv->status)) |
2960 | return 0; | 2949 | return 0; |
2961 | else | 2950 | else |
@@ -3376,7 +3365,6 @@ static int iwl_init_drv(struct iwl_priv *priv) | |||
3376 | priv->iw_mode = NL80211_IFTYPE_STATION; | 3365 | priv->iw_mode = NL80211_IFTYPE_STATION; |
3377 | priv->current_ht_config.smps = IEEE80211_SMPS_STATIC; | 3366 | priv->current_ht_config.smps = IEEE80211_SMPS_STATIC; |
3378 | priv->missed_beacon_threshold = IWL_MISSED_BEACON_THRESHOLD_DEF; | 3367 | priv->missed_beacon_threshold = IWL_MISSED_BEACON_THRESHOLD_DEF; |
3379 | priv->agg_tids_count = 0; | ||
3380 | 3368 | ||
3381 | /* initialize force reset */ | 3369 | /* initialize force reset */ |
3382 | priv->force_reset[IWL_RF_RESET].reset_duration = | 3370 | priv->force_reset[IWL_RF_RESET].reset_duration = |