Commit 847d7353 authored by Shaul Triebitz's avatar Shaul Triebitz Committed by Johannes Berg

wifi: iwlwifi: mvm: consider having one active link

Do not call iwl_mvm_mld_get_primary_link if only one link
is active.
In that case, the sole active link should be used.

iwl_mvm_mld_get_primary_link returns -1 if only one link
is active causing a warning.

Fixes: 8c9bef26 ("wifi: iwlwifi: mvm: d3: implement suspend with MLO")
Signed-off-by: default avatarShaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240311081938.6c50061bf69b.I05b0ac7fa7149eabaa5570a6f65b0d9bfb09a6f1@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent bbe806c2
...@@ -1260,15 +1260,15 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw, ...@@ -1260,15 +1260,15 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
if (IS_ERR_OR_NULL(vif)) if (IS_ERR_OR_NULL(vif))
return 1; return 1;
if (ieee80211_vif_is_mld(vif) && vif->cfg.assoc) { if (hweight16(vif->active_links) > 1) {
/* /*
* Select the 'best' link. May need to revisit, it seems * Select the 'best' link.
* better to not optimize for throughput but rather range, * May need to revisit, it seems better to not optimize
* reliability and power here - and select 2.4 GHz ... * for throughput but rather range, reliability and
* power here - and select 2.4 GHz ...
*/ */
primary_link = primary_link = iwl_mvm_mld_get_primary_link(mvm, vif,
iwl_mvm_mld_get_primary_link(mvm, vif, vif->active_links);
vif->active_links);
if (WARN_ONCE(primary_link < 0, "no primary link in 0x%x\n", if (WARN_ONCE(primary_link < 0, "no primary link in 0x%x\n",
vif->active_links)) vif->active_links))
...@@ -1277,6 +1277,8 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw, ...@@ -1277,6 +1277,8 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
ret = ieee80211_set_active_links(vif, BIT(primary_link)); ret = ieee80211_set_active_links(vif, BIT(primary_link));
if (ret) if (ret)
return ret; return ret;
} else if (vif->active_links) {
primary_link = __ffs(vif->active_links);
} else { } else {
primary_link = 0; primary_link = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment