wifi: iwlwifi: mld: trigger mlo scan only when not in EMLSR

When beacon loss happens or the RSSI drops, trigger MLO scan only
if not in EMLSR. The link switch was meant to be done when we are
not in EMLSR and we can try to switch to a better link.
If in EMLSR, we exit first and then trigger MLO scan.

Signed-off-by: Somashekhar Puttagangaiah <somashekhar.puttagangaiah@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250826184046.f6ae8e3882cf.I60901c16487371b8e62019bd0bf25c45ab23752f@changeid
This commit is contained in:
Somashekhar Puttagangaiah 2025-08-26 18:54:51 +03:00 committed by Miri Korenblit
parent da70749568
commit 14a4aca568
2 changed files with 12 additions and 6 deletions

View File

@ -572,8 +572,11 @@ void iwl_mld_handle_missed_beacon_notif(struct iwl_mld *mld,
if (missed_bcon_since_rx > IWL_MLD_MISSED_BEACONS_THRESHOLD) {
ieee80211_cqm_beacon_loss_notify(vif, GFP_ATOMIC);
/* try to switch links, no-op if we don't have MLO */
iwl_mld_int_mlo_scan(mld, vif);
/* Not in EMLSR and we can't hear the link.
* Try to switch to a better link. EMLSR case is handled below.
*/
if (!iwl_mld_emlsr_active(vif))
iwl_mld_int_mlo_scan(mld, vif);
}
/* no more logic if we're not in EMLSR */

View File

@ -379,11 +379,14 @@ static void iwl_mld_update_link_sig(struct ieee80211_vif *vif, int sig,
/* TODO: task=statistics handle CQM notifications */
if (sig < IWL_MLD_LOW_RSSI_MLO_SCAN_THRESH)
iwl_mld_int_mlo_scan(mld, vif);
if (!iwl_mld_emlsr_active(vif))
if (!iwl_mld_emlsr_active(vif)) {
/* We're not in EMLSR and our signal is bad,
* try to switch link maybe. EMLSR will be handled below.
*/
if (sig < IWL_MLD_LOW_RSSI_MLO_SCAN_THRESH)
iwl_mld_int_mlo_scan(mld, vif);
return;
}
/* We are in EMLSR, check if we need to exit */
exit_emlsr_thresh =