126 lines
3.6 KiB
Diff
126 lines
3.6 KiB
Diff
From 06af061dd673d749d5516bea41e2becb034e00b8 Mon Sep 17 00:00:00 2001
|
|
From: Eyal Shapira <eyal@wizery.com>
|
|
Date: Sun, 16 Mar 2014 05:23:21 +0200
|
|
Subject: [PATCH 09/10] iwlwifi: mvm: rs: fix search cycle rules
|
|
|
|
commit 8930b05090acd321b1fc7c642528c697cb105c42 upstream.
|
|
|
|
We should explore all possible columns when searching to be
|
|
as resilient as possible to changing conditions. This fixes
|
|
for example a scenario where even after a sudden creation of
|
|
rssi difference between the 2 antennas we would keep doing MIMO
|
|
at a low rate instead of switching to SISO at a higher rate using
|
|
the better antenna which was the optimal configuration.
|
|
|
|
Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com>
|
|
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
drivers/net/wireless/iwlwifi/mvm/rs.c | 36 +++++++++++++++++------------------
|
|
1 file changed, 18 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
|
|
index 6abf74e..5bc8715 100644
|
|
--- a/drivers/net/wireless/iwlwifi/mvm/rs.c
|
|
+++ b/drivers/net/wireless/iwlwifi/mvm/rs.c
|
|
@@ -211,9 +211,9 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
.next_columns = {
|
|
RS_COLUMN_LEGACY_ANT_B,
|
|
RS_COLUMN_SISO_ANT_A,
|
|
+ RS_COLUMN_SISO_ANT_B,
|
|
RS_COLUMN_MIMO2,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_MIMO2_SGI,
|
|
},
|
|
},
|
|
[RS_COLUMN_LEGACY_ANT_B] = {
|
|
@@ -221,10 +221,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
.ant = ANT_B,
|
|
.next_columns = {
|
|
RS_COLUMN_LEGACY_ANT_A,
|
|
+ RS_COLUMN_SISO_ANT_A,
|
|
RS_COLUMN_SISO_ANT_B,
|
|
RS_COLUMN_MIMO2,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_MIMO2_SGI,
|
|
},
|
|
},
|
|
[RS_COLUMN_SISO_ANT_A] = {
|
|
@@ -234,8 +234,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
RS_COLUMN_SISO_ANT_B,
|
|
RS_COLUMN_MIMO2,
|
|
RS_COLUMN_SISO_ANT_A_SGI,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_SISO_ANT_B_SGI,
|
|
+ RS_COLUMN_MIMO2_SGI,
|
|
},
|
|
.checks = {
|
|
rs_siso_allow,
|
|
@@ -248,8 +248,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
RS_COLUMN_SISO_ANT_A,
|
|
RS_COLUMN_MIMO2,
|
|
RS_COLUMN_SISO_ANT_B_SGI,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_SISO_ANT_A_SGI,
|
|
+ RS_COLUMN_MIMO2_SGI,
|
|
},
|
|
.checks = {
|
|
rs_siso_allow,
|
|
@@ -263,8 +263,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
RS_COLUMN_SISO_ANT_B_SGI,
|
|
RS_COLUMN_MIMO2_SGI,
|
|
RS_COLUMN_SISO_ANT_A,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_SISO_ANT_B,
|
|
+ RS_COLUMN_MIMO2,
|
|
},
|
|
.checks = {
|
|
rs_siso_allow,
|
|
@@ -279,8 +279,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
RS_COLUMN_SISO_ANT_A_SGI,
|
|
RS_COLUMN_MIMO2_SGI,
|
|
RS_COLUMN_SISO_ANT_B,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
+ RS_COLUMN_SISO_ANT_A,
|
|
+ RS_COLUMN_MIMO2,
|
|
},
|
|
.checks = {
|
|
rs_siso_allow,
|
|
@@ -292,10 +292,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
.ant = ANT_AB,
|
|
.next_columns = {
|
|
RS_COLUMN_SISO_ANT_A,
|
|
+ RS_COLUMN_SISO_ANT_B,
|
|
+ RS_COLUMN_SISO_ANT_A_SGI,
|
|
+ RS_COLUMN_SISO_ANT_B_SGI,
|
|
RS_COLUMN_MIMO2_SGI,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
},
|
|
.checks = {
|
|
rs_mimo_allow,
|
|
@@ -307,10 +307,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
|
|
.sgi = true,
|
|
.next_columns = {
|
|
RS_COLUMN_SISO_ANT_A_SGI,
|
|
+ RS_COLUMN_SISO_ANT_B_SGI,
|
|
+ RS_COLUMN_SISO_ANT_A,
|
|
+ RS_COLUMN_SISO_ANT_B,
|
|
RS_COLUMN_MIMO2,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
- RS_COLUMN_INVALID,
|
|
},
|
|
.checks = {
|
|
rs_mimo_allow,
|
|
--
|
|
1.9.2
|
|
|