mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-04 12:54:37 +08:00
iwlwifi: mvm: BT Coex - set low latency vif as primary
If a vif is in low latency mode, it should be in primary channel. Also tell BT Coex about the change when a vif enters or exits low latency mode. Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
1fb184b4a4
commit
0ee5bcdd77
@ -542,6 +542,7 @@ struct iwl_bt_iterator_data {
|
||||
bool reduced_tx_power;
|
||||
struct ieee80211_chanctx_conf *primary;
|
||||
struct ieee80211_chanctx_conf *secondary;
|
||||
bool primary_ll;
|
||||
};
|
||||
|
||||
static inline
|
||||
@ -590,7 +591,14 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
|
||||
return;
|
||||
}
|
||||
|
||||
/* SoftAP / GO will always be primary */
|
||||
/* low latency is always primary */
|
||||
if (iwl_mvm_vif_low_latency(mvmvif)) {
|
||||
data->primary_ll = true;
|
||||
|
||||
data->secondary = data->primary;
|
||||
data->primary = chanctx_conf;
|
||||
}
|
||||
|
||||
if (vif->type == NL80211_IFTYPE_AP) {
|
||||
if (!mvmvif->ap_ibss_active)
|
||||
return;
|
||||
@ -601,9 +609,17 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
|
||||
if (chanctx_conf == data->primary)
|
||||
return;
|
||||
|
||||
/* downgrade the current primary no matter what its type is */
|
||||
data->secondary = data->primary;
|
||||
data->primary = chanctx_conf;
|
||||
if (!data->primary_ll) {
|
||||
/*
|
||||
* downgrade the current primary no matter what its
|
||||
* type is.
|
||||
*/
|
||||
data->secondary = data->primary;
|
||||
data->primary = chanctx_conf;
|
||||
} else {
|
||||
/* there is low latency vif - we will be secondary */
|
||||
data->secondary = chanctx_conf;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -613,7 +629,10 @@ static void iwl_mvm_bt_notif_iterator(void *_data, u8 *mac,
|
||||
if (!vif->bss_conf.assoc)
|
||||
return;
|
||||
|
||||
/* STA / P2P Client, try to be primary if first vif */
|
||||
/*
|
||||
* STA / P2P Client, try to be primary if first vif. If we are in low
|
||||
* latency mode, we are already in primary and just don't do much
|
||||
*/
|
||||
if (!data->primary || data->primary == chanctx_conf)
|
||||
data->primary = chanctx_conf;
|
||||
else if (!data->secondary)
|
||||
|
@ -550,5 +550,8 @@ int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
|
||||
res = iwl_mvm_update_quotas(mvm, NULL);
|
||||
if (res)
|
||||
return res;
|
||||
|
||||
iwl_mvm_bt_coex_vif_change(mvm);
|
||||
|
||||
return iwl_mvm_power_update_mode(mvm, vif);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user