diff options
author | Daniel Halperin <dhalperi@cs.washington.edu> | 2011-03-16 22:16:36 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-03-25 09:57:50 -0400 |
commit | 374920cb0512f5938fdf1f5af4f9afa7502dd0f9 (patch) | |
tree | 8de1e768991818253240181ad4814d89ed2cd434 /drivers | |
parent | c8823ec1337017e23b99fb0814e2f3d62537f811 (diff) |
iwlwifi: limit number of attempts for highest HT rate
When filling out its rate scale table, iwlwifi repeats the first HT rate
IWL_HT_NUMBER_TRY times. The hardware scheduler will stop using
aggregation for any frame that fails LINK_QUAL_AGG_DISABLE_START_DEF
times. Currently, both these constants equal 3.
If iwlwifi probes a faster rate than the link supports, all frames in a
(potentially tens of frames large) batch will fail IWL_HT_NUMBER_TRY
times. Because this happens to be as large as
LINK_QUAL_AGG_DISABLE_START_DEF, all frames will then be sent
individually. This leads to a short, but performance-degrading window
where the legacy stop-and-wait MAC takes over.
Bounding the initial rate by (LINK_QUAL_AGG_DISABLE_START_DEF-1)
attempts makes the third try use a lower rate and hence more be likely
to succeed. This somewhat mitigates the above described behavior.
Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index d03b4734c892..63b58ecb0dc6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | |||
@@ -2912,7 +2912,8 @@ static void rs_fill_link_cmd(struct iwl_priv *priv, | |||
2912 | ant_toggle_cnt = 1; | 2912 | ant_toggle_cnt = 1; |
2913 | repeat_rate = IWL_NUMBER_TRY; | 2913 | repeat_rate = IWL_NUMBER_TRY; |
2914 | } else { | 2914 | } else { |
2915 | repeat_rate = IWL_HT_NUMBER_TRY; | 2915 | repeat_rate = min(IWL_HT_NUMBER_TRY, |
2916 | LINK_QUAL_AGG_DISABLE_START_DEF - 1); | ||
2916 | } | 2917 | } |
2917 | 2918 | ||
2918 | lq_cmd->general_params.mimo_delimiter = | 2919 | lq_cmd->general_params.mimo_delimiter = |