diff options
author | Sarika Sharma <quic_sarishar@quicinc.com> | 2025-05-28 11:14:19 +0530 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2025-06-24 15:19:27 +0200 |
commit | 5e9129f574d98ca1b8ed51d5d5d433344b180bd8 (patch) | |
tree | ae50c9e22d2c2fd97816e3aa89c95c6a60931f22 | |
parent | 505991fba9ec112770c79a0fea56b4c49a5ad2fa (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.c | 15 |
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, |