u8 update_search_tbl_counter = 0;
int ret;
- switch (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading)) {
- case IWL_BT_COEX_TRAFFIC_LOAD_NONE:
- /* nothing */
- break;
- case IWL_BT_COEX_TRAFFIC_LOAD_LOW:
- /* avoid switching to antenna B but allow MIMO */
- if (tbl->action == IWL_SISO_SWITCH_ANTENNA &&
- tbl->ant_type == ANT_A)
- tbl->action = IWL_SISO_SWITCH_MIMO2;
- break;
- case IWL_BT_COEX_TRAFFIC_LOAD_HIGH:
- case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS:
- /* A - avoid antenna B and MIMO. B - switch to A */
- if (tbl->ant_type == ANT_A)
- valid_tx_ant =
- first_antenna(iwl_fw_valid_tx_ant(mvm->fw));
+ if (tbl->action == IWL_SISO_SWITCH_MIMO2 &&
+ !iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta))
tbl->action = IWL_SISO_SWITCH_ANTENNA;
- break;
- default:
- IWL_ERR(mvm, "Invalid BT load %d",
- le32_to_cpu(mvm->last_bt_notif.bt_activity_grading));
- break;
- }
start_action = tbl->action;
while (1) {
u8 update_search_tbl_counter = 0;
int ret;
- switch (le32_to_cpu(mvm->last_bt_notif.bt_activity_grading)) {
- case IWL_BT_COEX_TRAFFIC_LOAD_NONE:
- /* nothing */
- break;
- case IWL_BT_COEX_TRAFFIC_LOAD_HIGH:
- case IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS:
- /* avoid antenna B and MIMO */
- if (tbl->action != IWL_MIMO2_SWITCH_SISO_A)
- tbl->action = IWL_MIMO2_SWITCH_SISO_A;
- break;
- case IWL_BT_COEX_TRAFFIC_LOAD_LOW:
- /* avoid antenna B unless MIMO */
- if (tbl->action == IWL_MIMO2_SWITCH_SISO_B)
- tbl->action = IWL_MIMO2_SWITCH_SISO_A;
- break;
- default:
- IWL_ERR(mvm, "Invalid BT load %d",
- le32_to_cpu(mvm->last_bt_notif.bt_activity_grading));
- break;
- }
-
start_action = tbl->action;
while (1) {
lq_sta->action_counter++;