]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: cfg80211: clear sinfo->filled for MLO station statistics
authorSarika Sharma <quic_sarishar@quicinc.com>
Wed, 28 May 2025 05:44:17 +0000 (11:14 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 24 Jun 2025 13:19:26 +0000 (15:19 +0200)
Currently, sinfo->filled is for set in sta_set_sinfo() after filling
the corresponding fields in station_info structure for station statistics.

For non-ML stations, the fields are correctly filled from sta->deflink
and corresponding sinfo->filled bit are set, but for MLO any one of
link's data is filled and corresponding sinfo->filled bit is set.

For MLO before embed NL message, fields of sinfo structure like
bytes, packets, signal are updated with accumulated, best, least of all
links data. But some of fields like rssi, pertid don't make much sense
at MLO level.

Hence, to prevent misinterpretation, clear sinfo->filled for fields
which don't make much sense at MLO level. This will prevent filling
misleading values in NL message.

Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com>
Link: https://patch.msgid.link/20250528054420.3050133-8-quic_sarishar@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/nl80211.c

index 5137824520a11540ae88b29ed3ef5def4393d222..9ef618baac9e7c5aaca065cd0b99e09aa54774e3 100644 (file)
@@ -7356,6 +7356,12 @@ static void cfg80211_sta_set_mld_sinfo(struct station_info *sinfo)
                                BIT(NL80211_TID_STATS_TX_MSDU_FAILED);
                }
        }
+
+       /* Reset sinfo->filled bits to exclude fields which don't make
+        * much sense at the MLO level.
+        */
+       sinfo->filled &= ~BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL);
+       sinfo->filled &= ~BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG);
 }
 
 static int nl80211_dump_station(struct sk_buff *skb,