Commit 8fe72311 authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by John W. Linville

iwlwifi: HT performance improvement changes

During rate scaling, checking for 0 retry count before decrement
the count by 1, this can avoid the retry count to become 255 (0xff),
which will cause the rate to drop faster than what we expect during good
condition (receive 0 retry packet). also change the algorithm to make
the rate not drop faster than what we like.
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 86b4766b
...@@ -801,7 +801,10 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband, ...@@ -801,7 +801,10 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
!(info->flags & IEEE80211_TX_STAT_AMPDU)) !(info->flags & IEEE80211_TX_STAT_AMPDU))
return; return;
retries = info->status.rates[0].count - 1; if (info->flags & IEEE80211_TX_STAT_AMPDU)
retries = 0;
else
retries = info->status.rates[0].count - 1;
if (retries > 15) if (retries > 15)
retries = 15; retries = 15;
...@@ -1897,7 +1900,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv, ...@@ -1897,7 +1900,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
if (high != IWL_RATE_INVALID && sr >= IWL_RATE_INCREASE_TH) if (high != IWL_RATE_INVALID && sr >= IWL_RATE_INCREASE_TH)
scale_action = 1; scale_action = 1;
else if (low != IWL_RATE_INVALID) else if (low != IWL_RATE_INVALID)
scale_action = -1; scale_action = 0;
} }
/* Both adjacent throughputs are measured, but neither one has better /* Both adjacent throughputs are measured, but neither one has better
...@@ -1918,9 +1921,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv, ...@@ -1918,9 +1921,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
sr >= IWL_RATE_INCREASE_TH) { sr >= IWL_RATE_INCREASE_TH) {
scale_action = 1; scale_action = 1;
} else { } else {
IWL_DEBUG_RATE(priv, scale_action = 0;
"decrease rate because of high tpt\n");
scale_action = -1;
} }
/* Lower adjacent rate's throughput is measured */ /* Lower adjacent rate's throughput is measured */
......
...@@ -231,7 +231,7 @@ enum { ...@@ -231,7 +231,7 @@ enum {
#define IWL_RS_GOOD_RATIO 12800 /* 100% */ #define IWL_RS_GOOD_RATIO 12800 /* 100% */
#define IWL_RATE_SCALE_SWITCH 10880 /* 85% */ #define IWL_RATE_SCALE_SWITCH 10880 /* 85% */
#define IWL_RATE_HIGH_TH 10880 /* 85% */ #define IWL_RATE_HIGH_TH 10880 /* 85% */
#define IWL_RATE_INCREASE_TH 8960 /* 70% */ #define IWL_RATE_INCREASE_TH 6400 /* 50% */
#define IWL_RATE_DECREASE_TH 1920 /* 15% */ #define IWL_RATE_DECREASE_TH 1920 /* 15% */
/* possible actions when in legacy mode */ /* possible actions when in legacy mode */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment