From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
To: linux-wireless@vger.kernel.org
Cc: Eyal Shapira <eyal@wizery.com>,
Eyal Shapira <eyalx.shapira@intel.com>,
Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Subject: [PATCH 02/38] iwlwifi: mvm: rs: repeat initial legacy rates in LQ table
Date: Thu, 22 Jan 2015 22:32:53 +0200 [thread overview]
Message-ID: <1421958809-3371-2-git-send-email-emmanuel.grumbach@intel.com> (raw)
In-Reply-To: <1421958313.6424.2.camel@egrumbacBox>
From: Eyal Shapira <eyal@wizery.com>
Repeating the legacy rates avoids degrading quickly to
lower rates due to collisions which is common when doing
TCP Tx traffic in legacy.
This slightly improves TCP Tx throughput while working
in legacy in different scenarios.
Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
drivers/net/wireless/iwlwifi/mvm/constants.h | 5 +++--
drivers/net/wireless/iwlwifi/mvm/rs.c | 19 ++++++++++---------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/mvm/constants.h b/drivers/net/wireless/iwlwifi/mvm/constants.h
index 7cd1de8..2d8e7e3 100644
--- a/drivers/net/wireless/iwlwifi/mvm/constants.h
+++ b/drivers/net/wireless/iwlwifi/mvm/constants.h
@@ -103,12 +103,13 @@
#define IWL_MVM_RS_RSSI_BASED_INIT_RATE 0
#define IWL_MVM_RS_DISABLE_MIMO 0
#define IWL_MVM_RS_NUM_TRY_BEFORE_ANT_TOGGLE 1
-#define IWL_MVM_RS_LEGACY_RETRIES_PER_RATE 1
#define IWL_MVM_RS_HT_VHT_RETRIES_PER_RATE 2
#define IWL_MVM_RS_HT_VHT_RETRIES_PER_RATE_TW 1
#define IWL_MVM_RS_INITIAL_MIMO_NUM_RATES 3
#define IWL_MVM_RS_INITIAL_SISO_NUM_RATES 3
-#define IWL_MVM_RS_INITIAL_LEGACY_NUM_RATES 16
+#define IWL_MVM_RS_INITIAL_LEGACY_NUM_RATES 2
+#define IWL_MVM_RS_INITIAL_LEGACY_RETRIES 2
+#define IWL_MVM_RS_SECONDARY_LEGACY_RETRIES 1
#define IWL_MVM_RS_SECONDARY_LEGACY_NUM_RATES 16
#define IWL_MVM_RS_SECONDARY_SISO_NUM_RATES 3
#define IWL_MVM_RS_SECONDARY_SISO_RETRIES 1
diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
index 7ba6e5d..4747224 100644
--- a/drivers/net/wireless/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/iwlwifi/mvm/rs.c
@@ -2862,12 +2862,13 @@ static void rs_fill_rates_for_column(struct iwl_mvm *mvm,
int index = *rs_table_index;
for (i = 0; i < num_rates && index < end; i++) {
- ucode_rate = cpu_to_le32(ucode_rate_from_rs_rate(mvm, rate));
- for (j = 0; j < num_retries && index < end; j++, index++)
+ for (j = 0; j < num_retries && index < end; j++, index++) {
+ ucode_rate = cpu_to_le32(ucode_rate_from_rs_rate(mvm,
+ rate));
rs_table[index] = ucode_rate;
-
- if (toggle_ant)
- rs_toggle_antenna(valid_tx_ant, rate);
+ if (toggle_ant)
+ rs_toggle_antenna(valid_tx_ant, rate);
+ }
prev_rate_idx = rate->index;
bottom_reached = rs_get_lower_rate_in_column(lq_sta, rate);
@@ -2875,7 +2876,7 @@ static void rs_fill_rates_for_column(struct iwl_mvm *mvm,
break;
}
- if (!bottom_reached)
+ if (!bottom_reached && !is_legacy(rate))
rate->index = prev_rate_idx;
*rs_table_index = index;
@@ -2925,7 +2926,7 @@ static void rs_build_rates_table(struct iwl_mvm *mvm,
num_retries = IWL_MVM_RS_HT_VHT_RETRIES_PER_RATE;
} else {
num_rates = IWL_MVM_RS_INITIAL_LEGACY_NUM_RATES;
- num_retries = IWL_MVM_RS_LEGACY_RETRIES_PER_RATE;
+ num_retries = IWL_MVM_RS_INITIAL_LEGACY_RETRIES;
toggle_ant = true;
}
@@ -2941,7 +2942,7 @@ static void rs_build_rates_table(struct iwl_mvm *mvm,
lq_cmd->mimo_delim = index;
} else if (is_legacy(&rate)) {
num_rates = IWL_MVM_RS_SECONDARY_LEGACY_NUM_RATES;
- num_retries = IWL_MVM_RS_LEGACY_RETRIES_PER_RATE;
+ num_retries = IWL_MVM_RS_SECONDARY_LEGACY_RETRIES;
} else {
WARN_ON_ONCE(1);
}
@@ -2955,7 +2956,7 @@ static void rs_build_rates_table(struct iwl_mvm *mvm,
rs_get_lower_rate_down_column(lq_sta, &rate);
num_rates = IWL_MVM_RS_SECONDARY_LEGACY_NUM_RATES;
- num_retries = IWL_MVM_RS_LEGACY_RETRIES_PER_RATE;
+ num_retries = IWL_MVM_RS_SECONDARY_LEGACY_RETRIES;
rs_fill_rates_for_column(mvm, lq_sta, &rate, lq_cmd->rs_table, &index,
num_rates, num_retries, valid_tx_ant,
--
1.9.1
next prev parent reply other threads:[~2015-01-22 20:33 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 20:25 pull request: iwlwifi-next 2015-01-22 Grumbach, Emmanuel
2015-01-22 20:32 ` [PATCH 01/38] iwlwifi: mvm: don't indicate no BA if STA was in powersave Emmanuel Grumbach
2015-01-22 20:32 ` Emmanuel Grumbach [this message]
2015-01-22 20:32 ` [PATCH 03/38] iwlwifi: mvm: make sure state isn't in d0i3 when collecting fw dbg Emmanuel Grumbach
2015-01-22 20:32 ` [PATCH 04/38] iwlwifi: add new config and PCI IDs for 4165 series Emmanuel Grumbach
2015-01-22 20:32 ` [PATCH 05/38] iwlwifi: mvm: Add debugfs entry to enable scan offload notification Emmanuel Grumbach
2015-01-22 20:32 ` [PATCH 06/38] iwlwifi: mvm: make sure state isn't in d0i3 when stopping fw monitor Emmanuel Grumbach
2015-01-22 20:32 ` [PATCH 07/38] iwlwifi: mvm: allow to collect debug data from non-sleepable context Emmanuel Grumbach
2015-01-22 20:32 ` [PATCH 08/38] iwlwifi: mvm: rs: allow to disable MIMO for P2P only Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 09/38] iwlwifi: mvm: set max_out_time equal to frag_passive_dwell in fragmented scan Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 10/38] iwlwifi: mvm: add print of he nvm version Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 11/38] iwlwifi: remove unused TLV capability flags Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 12/38] iwlwifi: mvm: scan dwell time corrections Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 13/38] iwlwifi: mvm: let the firmware configure the scheduler Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 14/38] iwlwifi: mvm: add debugfs file for misbehaving U-APSD AP Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 15/38] iwlwifi: mvm: add support for dumping a secondary SRAM Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 16/38] iwlwifi: mvm: add rxf and txf to dump data Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 17/38] iwlwifi: correctly set the NMI register Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 18/38] iwlwifi: mvm: sync statistics firmware API Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 19/38] iwlwifi: mvm: move statistics API to new header file Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 20/38] iwlwifi: mvm: generate statistics debugfs code Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 21/38] iwlwifi: mvm: rs: cleanup unuseful and overflowing traces Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 22/38] iwlwifi: mvm: ignore temperature updates in the RX statistics notification Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 23/38] iwlwifi: mvm: move U-APSD decision to authentication Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 24/38] iwlwifi: mvm: BT Coex - fine tune the MPLUT register Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 25/38] iwlwifi: mvm: add support for new LTR command Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 26/38] Revert "iwlwifi: mvm: drop non VO frames when flushing" Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 27/38] iwlwifi: mvm: rs: use STBC regardless of power save mode Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 28/38] iwlwifi: mvm: document switch case fall-through in iwl_mvm_send_sta_key Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 29/38] iwlwifi: pcie: init ref_lock Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 30/38] iwlwifi: mvm: support family 8000 C step Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 31/38] iwlwifi: mvm: BT Coex - set all the co-running values to 0 Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 32/38] iwlwifi: mvm: Do not consider invalid HW queues in queue mask Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 33/38] iwlwifi: mvm: really disable TDLS queues Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 34/38] iwlwifi: mvm: rs: refactor ht/vht init Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 35/38] iwlwifi: mvm: use a new API for enabling STBC Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 36/38] iwlwifi: mvm: rs: remove stats argument from functions Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 37/38] iwlwifi: pcie: support secured boot flow for family 8000 B step Emmanuel Grumbach
2015-01-22 20:33 ` [PATCH 38/38] iwlwifi: mvm: fix rx chains configuration in phy ctxt cmd Emmanuel Grumbach
2015-01-23 15:56 ` pull request: iwlwifi-next 2015-01-22 Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1421958809-3371-2-git-send-email-emmanuel.grumbach@intel.com \
--to=emmanuel.grumbach@intel.com \
--cc=eyal@wizery.com \
--cc=eyalx.shapira@intel.com \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).