wifi: mac80211: handle non-MLO mode as well in ieee80211_num_beaconing_links()
authorAditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Thu, 15 May 2025 18:01:21 +0000 (23:31 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 16 May 2025 08:51:44 +0000 (10:51 +0200)
Currently, ieee80211_num_beaconing_links() returns 0 when the interface
operates in non-ML mode. However, non-MLO mode is equivalent to having a
single link. Therefore, the function can handle the non-MLO case as well.
This adjustment will also eliminate the need for deflink usage in certain
scenarios.

Hence, implement changes to handle the non-MLO case as well. There is
no change in functionality, and no existing user-visible bug is getting
fixed. This update simply makes the function generic to handle all cases.

Suggested-by: Johannes Berg <johannes@sipsolutions.net>
Link: https://lore.kernel.org/linux-wireless/16499ad8e4b060ee04c8a8b3615fe8952aa7b07b.camel@sipsolutions.net/
Signed-off-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Link: https://patch.msgid.link/20250515-fix_num_beaconing_links-v1-1-4a39e2704314@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c

index 2cd8731d8275b2f67c1b1305ec0bafc368a4498a..05b7296b152cfbe1e81f8981eee52d72f711706c 100644 (file)
@@ -1290,9 +1290,9 @@ static u8 ieee80211_num_beaconing_links(struct ieee80211_sub_if_data *sdata)
            sdata->vif.type != NL80211_IFTYPE_P2P_GO)
                return num;
 
-       if (!sdata->vif.valid_links)
-               return num;
-
+       /* non-MLO mode of operation also uses link_id 0 in sdata so it is
+        * safe to directly proceed with the below loop
+        */
        for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) {
                link = sdata_dereference(sdata->link[link_id], sdata);
                if (!link)