[PATCH wireless-next 0/5] wifi: cfg80211: Add fragmented per-link station stats in MLO

Praneesh P praneesh.p at oss.qualcomm.com
Mon Jun 8 10:48:18 PDT 2026


On 6/8/2026 12:46 PM, Johannes Berg wrote:
> On Sun, 2026-06-07 at 23:29 +0530, P Praneesh wrote:
>> This series introduces fragmentation support for Multi-Link Operation
>> (MLO) station statistics in nl80211.
>>
>> The current nl80211_dump_station() implementation works well for legacy
>> (single-link) stations, but it does not scale for MLO peers. With
>> multiple links per station, dumping all per-link information in a single
>> netlink message can exceed size limits, resulting in -EMSGSIZE errors
>> and incomplete dumps.
>>
>> With 802.11be (Wi‑Fi 7), a single station may have multiple links, each
>> with its own statistics. To address this, this series introduces a
>> stateful dump mechanism that splits station information into multiple
>> messages when required.
>>
>> The dump is performed in two phases:
>>    - Phase 0: Aggregated (station-level) statistics
>>    - Phase 1: Per-link statistics sent in separate messages
> [snip]
>
> Overall, this approach seems (mostly?) right. I have a couple of
> comments reading the code itself, but also:
Thanks a lot for your quick and detailed review on this series.
>
>> Aggregated Stats (Phase 0)
>>
>> NL80211_CMD_NEW_STATION
>>   ├─ NL80211_ATTR_IFINDEX
>>   ├─ NL80211_ATTR_MAC
>>   ├─ NL80211_ATTR_GENERATION
>>   └─ NL80211_ATTR_STA_INFO
>>        ├─ <aggregated station attributes>
>>        └─ ...
>>
>> Note: No NL80211_ATTR_MLO_LINKS is included in this phase.
>> Per‑link stats are sent in Phase 1.
>>
>> Per-Link Stats (Phase 1)
>>
>> NL80211_CMD_NEW_STATION
>>    ├─ NL80211_ATTR_IFINDEX
>>    ├─ NL80211_ATTR_MAC                 (MLO MAC)
>>    ├─ NL80211_ATTR_GENERATION
>>    └─ NL80211_ATTR_STA_INFO
>>         └─ NL80211_ATTR_MLO_LINKS
>>              ├─ [link0]
>>              │    ├─ NL80211_ATTR_MLO_LINK_ID = 0
>>              │    ├─ NL80211_ATTR_MAC = <link0 MAC>
>>              │    ├─ NL80211_STA_INFO_RX_BYTES
>>              │    ├─ NL80211_STA_INFO_TX_BYTES
>>              │    └─ ... more link0 stats ...
> This description is missing another nesting level as
> NL80211_ATTR_STA_INFO no?
>
> johannes
Yes, you are right. The per-link stat attributes are wrapped in a nested
NL80211_ATTR_STA_INFO inside each link entry. The diagram incorrectly
placed them directly under [linkN]. The correct layout is:

NL80211_CMD_NEW_STATION
├─ NL80211_ATTR_IFINDEX
├─ NL80211_ATTR_MAC = (MLO MAC)
├─ NL80211_ATTR_GENERATION
└─ NL80211_ATTR_STA_INFO
      └─ NL80211_ATTR_MLO_LINKS
           └─ [linkN]
                ├─ NL80211_ATTR_MLO_LINK_ID = N
                ├─ NL80211_ATTR_MAC = <linkN MAC>
                └─ NL80211_ATTR_STA_INFO
                     ├─ NL80211_STA_INFO_RX_BYTES
                     ├─ NL80211_STA_INFO_TX_BYTES

                     └─ ...

I will correct it in the next version.

Praneesh.





More information about the ath12k mailing list