diff options
author | Eyal Shapira <eyal@wizery.com> | 2013-07-28 19:02:47 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-10-02 12:00:37 -0400 |
commit | 22f6642c52e9e02732f620f9cde952cbfa87dfc8 (patch) | |
tree | a09f613aaa4e982275567bf870803ad20fd96654 /drivers/net/wireless/iwlwifi/mvm/rs.c | |
parent | 889b169650c5b2cfeac8bcf34137af84a85b1cb8 (diff) |
iwlwifi: mvm: fix switch from shared antenna in case of BT load
Current code didn't handle well the case where we're in SISO using
ANT B and there's a BT load. Switch to ANT A in this case.
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/rs.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/rs.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c index 3cfcea547458..ffcc63539c3a 100644 --- a/drivers/net/wireless/iwlwifi/mvm/rs.c +++ b/drivers/net/wireless/iwlwifi/mvm/rs.c | |||
@@ -1324,17 +1324,18 @@ static int rs_move_siso_to_other(struct iwl_mvm *mvm, | |||
1324 | /* nothing */ | 1324 | /* nothing */ |
1325 | break; | 1325 | break; |
1326 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: | 1326 | case IWL_BT_COEX_TRAFFIC_LOAD_LOW: |
1327 | /* avoid antenna B unless MIMO */ | 1327 | /* avoid switching to antenna B but allow MIMO */ |
1328 | if (tbl->action == IWL_SISO_SWITCH_ANTENNA) | 1328 | if (tbl->action == IWL_SISO_SWITCH_ANTENNA && |
1329 | tbl->ant_type == ANT_A) | ||
1329 | tbl->action = IWL_SISO_SWITCH_MIMO2; | 1330 | tbl->action = IWL_SISO_SWITCH_MIMO2; |
1330 | break; | 1331 | break; |
1331 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: | 1332 | case IWL_BT_COEX_TRAFFIC_LOAD_HIGH: |
1332 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: | 1333 | case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS: |
1333 | /* avoid antenna B and MIMO */ | 1334 | /* A - avoid antenna B and MIMO. B - switch to A */ |
1334 | valid_tx_ant = | 1335 | if (tbl->ant_type == ANT_A) |
1335 | first_antenna(iwl_fw_valid_tx_ant(mvm->fw)); | 1336 | valid_tx_ant = |
1336 | if (tbl->action != IWL_SISO_SWITCH_ANTENNA) | 1337 | first_antenna(iwl_fw_valid_tx_ant(mvm->fw)); |
1337 | tbl->action = IWL_SISO_SWITCH_ANTENNA; | 1338 | tbl->action = IWL_SISO_SWITCH_ANTENNA; |
1338 | break; | 1339 | break; |
1339 | default: | 1340 | default: |
1340 | IWL_ERR(mvm, "Invalid BT load %d", | 1341 | IWL_ERR(mvm, "Invalid BT load %d", |