diff options
author | Venkataraman, Meenakshi <meenakshi.venkataraman@intel.com> | 2011-11-10 09:55:25 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-11-11 12:32:56 -0500 |
commit | 383b0874abc8c23f15a15773812fb09f23078311 (patch) | |
tree | ff4d17ceeb57821fa55e308091c88af7a0522cb6 | |
parent | 81a3de1ce2929fef2b112c048c50bc52b686f94d (diff) |
iwlwifi: fix rate-scaling algorithm for BT combo devices
iwlwifi tries to avoid using antenna B in BT combo devices when BT
is active. A bug in the rate-scaling algorithm was causing the combo
device to never attempt MIMO rates. Fix the algorithm to
opportunistically try MIMO rates when BT traffic is low.
Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c index 66118cea2af..359c47a4fce 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c | |||
@@ -1458,10 +1458,8 @@ static int rs_move_legacy_other(struct iwl_priv *priv, | |||
1458 | break; | 1458 | break; |
1459 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: | 1459 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: |
1460 | /* avoid antenna B unless MIMO */ | 1460 | /* avoid antenna B unless MIMO */ |
1461 | valid_tx_ant = | ||
1462 | first_antenna(hw_params(priv).valid_tx_ant); | ||
1463 | if (tbl->action == IWL_LEGACY_SWITCH_ANTENNA2) | 1461 | if (tbl->action == IWL_LEGACY_SWITCH_ANTENNA2) |
1464 | tbl->action = IWL_LEGACY_SWITCH_ANTENNA1; | 1462 | tbl->action = IWL_LEGACY_SWITCH_SISO; |
1465 | break; | 1463 | break; |
1466 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: | 1464 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: |
1467 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: | 1465 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: |
@@ -1636,10 +1634,8 @@ static int rs_move_siso_to_other(struct iwl_priv *priv, | |||
1636 | break; | 1634 | break; |
1637 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: | 1635 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: |
1638 | /* avoid antenna B unless MIMO */ | 1636 | /* avoid antenna B unless MIMO */ |
1639 | valid_tx_ant = | ||
1640 | first_antenna(hw_params(priv).valid_tx_ant); | ||
1641 | if (tbl->action == IWL_SISO_SWITCH_ANTENNA2) | 1637 | if (tbl->action == IWL_SISO_SWITCH_ANTENNA2) |
1642 | tbl->action = IWL_SISO_SWITCH_ANTENNA1; | 1638 | tbl->action = IWL_SISO_SWITCH_MIMO2_AB; |
1643 | break; | 1639 | break; |
1644 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: | 1640 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: |
1645 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: | 1641 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: |