summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarika Sharma <quic_sarishar@quicinc.com>2025-05-28 11:14:19 +0530
committerJohannes Berg <johannes.berg@intel.com>2025-06-24 15:19:27 +0200
commit5e9129f574d98ca1b8ed51d5d5d433344b180bd8 (patch)
treeae50c9e22d2c2fd97816e3aa89c95c6a60931f22
parent505991fba9ec112770c79a0fea56b4c49a5ad2fa (diff)
wifi: mac80211: correct RX stats packet increment for multi-link
Currently, RX stats packets are incremented for deflink member for non-ML and multi-link(ML) station case. However, for ML station, packets should be incremented based on the specific link. Therefore, if a valid link_id is present, fetch the corresponding link station information and increment the RX packets for that link. For non-MLO stations, the deflink will still be used. Signed-off-by: Sarika Sharma <quic_sarishar@quicinc.com> Link: https://patch.msgid.link/20250528054420.3050133-10-quic_sarishar@quicinc.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/rx.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index e73431549ce7..8699755081ad 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -231,8 +231,19 @@ static void __ieee80211_queue_skb_to_iface(struct ieee80211_sub_if_data *sdata,
skb_queue_tail(&sdata->skb_queue, skb);
wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
- if (sta)
- sta->deflink.rx_stats.packets++;
+ if (sta) {
+ struct link_sta_info *link_sta_info;
+
+ if (link_id >= 0) {
+ link_sta_info = rcu_dereference(sta->link[link_id]);
+ if (!link_sta_info)
+ return;
+ } else {
+ link_sta_info = &sta->deflink;
+ }
+
+ link_sta_info->rx_stats.packets++;
+ }
}
static void ieee80211_queue_skb_to_iface(struct ieee80211_sub_if_data *sdata,