On Tue, Jan 7, 2014 at 12:27 PM, Karl Beldan <karl.beldan@xxxxxxxxx> wrote: > On Mon, Jan 06, 2014 at 08:04:03PM +0200, Eyal Shapira wrote: >> On Mon, Jan 6, 2014 at 5:07 PM, Karl Beldan <karl.beldan@xxxxxxxxx> wrote: >> > On Mon, Dec 02, 2013 at 10:59:24PM +0200, Emmanuel Grumbach wrote: >> >> From: Eyal Shapira <eyal@xxxxxxxxxx> >> >> >> >> Rewrite the search cycle state machine to use a more data >> >> oriented approach where the different Tx columns (configs) >> >> limitations and next columns to search are reprsented in >> >> tables which are easy to change. This overhaul also includes >> >> several major fixes: >> >> >> >> 1. Prevent going back to a specific Tx column in a search >> >> cycle if it was already explored. >> >> >> >> 2. Avoid switching to a Tx column that doesn't have any chance >> >> if it performs perfectly to beat the current throughput we're >> >> getting. >> >> >> >> These issues were degrading throughput as they were causing >> >> switching to "bad" Tx columns. >> >> >> >> Signed-off-by: Eyal Shapira <eyal@xxxxxxxxxx> >> >> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> >> >> --- >> >> drivers/net/wireless/iwlwifi/mvm/rs.c | 921 +++++++++++++++------------------ >> >> drivers/net/wireless/iwlwifi/mvm/rs.h | 64 +-- >> >> 2 files changed, 458 insertions(+), 527 deletions(-) >> >> >> >> @@ -1772,7 +1712,7 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm, >> > [...] >> >> - if (done_search && !lq_sta->stay_in_tbl) { >> >> + if (done_search && lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_ENDED) { >> >> /* If the "active" (non-search) mode was legacy, >> > [...] >> > >> > Hi, >> > >> > Trying -testing right now on my laptop and this commit broke aggregation. >> > >> >> Thanks Karl for the report. >> I'm seeing Tx aggregation. Note that it doesn't start off immediately >> but only after enough traffic went through for us to explore different >> Tx configurations. >> >> Some questions: >> 1. How do you see aggregation is broken ? sniffer or just lower >> throughput you're getting ? > It doesn't send any addBA action frame and traffic is not aggregated. > >> 2. What's the chip ? > AC 7260, REV=0x144 > >> 3. Do you connect in 11n or 11ac ? > Tried both > >> 4. Any chance you can set module parameter debug=0x04100000 and send the logs ? >> Configuring IWLWIFI_DEBUG is required. > Here you are. > Thanks. Seems like we decided the AP doesn't support any MIMO rates. This wasn't handled well and caused the search cycle for an optimal Tx configuration to get stuck. Can you try the attached patch ? Also, any chance you can send a traffic capture of some beacons and the assoc ? I'd like to understand why we come to the conclusion no MIMO is supported. Thanks, Eyal
From 9e1f12500a658ed38004eec0d89f0ec8beaf9a86 Mon Sep 17 00:00:00 2001 From: Eyal Shapira <eyal@xxxxxxxxxx> Date: Tue, 7 Jan 2014 18:19:35 +0200 Subject: [PATCH] iwlwifi: mvm: rs: fix handling of column switch error If we can't switch to a column because no rates are supported in that column this led to a state where the search cycle got stuck and never ended. This in turn also led to aggregation not being turned on. Fix this by marking a column as visited if we can't switch to it. Change-Id: I98fd0303d043a53ec557d1f7044ff3991ee7b481 Reported-by: Karl Beldan <karl.beldan@xxxxxxxxx> Signed-off-by: Eyal Shapira <eyalx.shapira@xxxxxxxxx> --- drivers/net/wireless/iwlwifi/mvm/rs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c index 9e1586b..5c36273 100644 --- a/drivers/net/wireless/iwlwifi/mvm/rs.c +++ b/drivers/net/wireless/iwlwifi/mvm/rs.c @@ -1588,6 +1588,8 @@ static int rs_switch_to_column(struct iwl_mvm *mvm, search_tbl->column = col_id; rs_set_expected_tpt_table(lq_sta, search_tbl); + lq_sta->visited_columns |= BIT(col_id); + /* Get the best matching rate if we're changing modes. e.g. * SISO->MIMO, LEGACY->SISO, MIMO->SISO */ @@ -1611,7 +1613,6 @@ static int rs_switch_to_column(struct iwl_mvm *mvm, IWL_DEBUG_RATE(mvm, "Switched to column %d: Index %d\n", col_id, rate->index); - lq_sta->visited_columns |= BIT(col_id); return 0; err: -- 1.7.10.4