From: Ilan Peer <ilan.peer@xxxxxxxxx> When an interface usage notification indicates that a P2P group interface is about to be started and there is an ongoing MLD connection with active EMLSR, exit EMLSR. Signed-off-by: Ilan Peer <ilan.peer@xxxxxxxxx> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@xxxxxxxxx> Reviewed-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- depends on the patchs adding this API in the mac80211 patchset .../net/wireless/intel/iwlwifi/mvm/mld-mac80211.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c index d972fcbc2cf7..68cd5b621ed8 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c @@ -1354,6 +1354,20 @@ iwl_mvm_mld_mac_pre_channel_switch(struct ieee80211_hw *hw, return ret; } +static void iwl_mvm_mld_iface_usage(struct ieee80211_hw *hw, + struct cfg80211_iface_usage *iface_usage) +{ + struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); + u32 p2p_iftypes = BIT(NL80211_IFTYPE_P2P_GO) | + BIT(NL80211_IFTYPE_P2P_CLIENT); + + IWL_DEBUG_MAC80211(mvm, "iface_usage_notif: mask=0x%x\n", + iface_usage->types_mask); + + if (iface_usage->types_mask & p2p_iftypes) + iwl_mvm_esr_non_bss_link(mvm, NULL, 0, true); +} + const struct ieee80211_ops iwl_mvm_mld_hw_ops = { .tx = iwl_mvm_mac_tx, .wake_tx_queue = iwl_mvm_mac_wake_tx_queue, @@ -1450,4 +1464,5 @@ const struct ieee80211_ops iwl_mvm_mld_hw_ops = { .change_sta_links = iwl_mvm_mld_change_sta_links, .can_activate_links = iwl_mvm_mld_can_activate_links, .can_neg_ttlm = iwl_mvm_mld_can_neg_ttlm, + .iface_usage = iwl_mvm_mld_iface_usage, }; -- 2.34.1