Search Linux Wireless

Re: [PATCH v2 1/5] wifi: mac80211: correct RX stats packet increment for multi-link

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/14/2025 1:47 AM, Ben Greear wrote:
On 2/13/25 9:32 AM, Sarika Sharma wrote:
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@xxxxxxxxxxx>
---
  net/mac80211/rx.c | 15 +++++++++++++--
  1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 1e28efe4203c..eb3e2d550c8f 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;

I think if you cannot find the link_sta_info here, you should just use deflink
so the packet is still counted?

Thanks,
Ben

Currently, we are consistently searching for link_sta, and if link_sta is not found, we return. We are not utilizing deflink when the link of link_sta is NULL. Additionally, while populating stats in station_info structure, we are checking sta_link for link stats instead of deflink.

I believe that filling the stats in deflink is not beneficial for MLO link-level stats.

May be Johannes can comment on this, if still required I believe this could be taken as separate changes.





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux