* [PATCH 0/2] wifi: nl80211: Document sta-info nested attribute
@ 2026-08-21 7:47 Hilal Rahmatullah
2026-08-21 7:47 ` [PATCH 1/2] wifi: nl80211: add " Hilal Rahmatullah
2026-08-21 7:47 ` [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array Hilal Rahmatullah
0 siblings, 2 replies; 5+ messages in thread
From: Hilal Rahmatullah @ 2026-08-21 7:47 UTC (permalink / raw)
To: Donald Hunter, Jakub Kicinski, David S. Miller, Eric Dumazet,
Paolo Abeni, Simon Horman
Cc: netdev, linux-kernel, Hilal Rahmatullah
There are many undocumented attribute in nl80211 specification
documentation, this patch series aims to document
NL80211_ATTR_STA_INFO nested attribute from the previous
binary type.
This patch merges/supersedes 2 related patches.
Link: https://lore.kernel.org/netdev/20260820110904.28645-1-hilalrahmatullah11@gmail.com
Link: https://lore.kernel.org/netdev/20260820072141.15779-1-hilalrahmatullah11@gmail.com
Signed-off-by: Hilal Rahmatullah <hilalrahmatullah11@gmail.com>
---
Hilal Rahmatullah (2):
wifi: nl80211: add sta-info nested attribute
net: ynl: allow u8 sub-type for indexed array
Documentation/netlink/specs/nl80211.yaml | 368 ++++++++++++++++++++++++++++++-
tools/net/ynl/pyynl/ynl_gen_c.py | 2 +-
2 files changed, 368 insertions(+), 2 deletions(-)
---
base-commit: 3d6d817622b0a9721e3cc404df3469171582be13
change-id: 20260821-work-b9d257341ca7
Best regards,
--
Hilal Rahmatullah <hilalrahmatullah11@gmail.com>
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] wifi: nl80211: add sta-info nested attribute 2026-08-21 7:47 [PATCH 0/2] wifi: nl80211: Document sta-info nested attribute Hilal Rahmatullah @ 2026-08-21 7:47 ` Hilal Rahmatullah 2026-08-25 1:36 ` Jakub Kicinski 2026-08-21 7:47 ` [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array Hilal Rahmatullah 1 sibling, 1 reply; 5+ messages in thread From: Hilal Rahmatullah @ 2026-08-21 7:47 UTC (permalink / raw) To: Donald Hunter, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman Cc: netdev, linux-kernel, Hilal Rahmatullah Add NL80211_ATTR_STA_INFO nested attribute definition, along with its related attributes and enum. Signed-off-by: Hilal Rahmatullah <hilalrahmatullah11@gmail.com> --- Documentation/netlink/specs/nl80211.yaml | 368 ++++++++++++++++++++++++++++++- 1 file changed, 367 insertions(+), 1 deletion(-) diff --git a/Documentation/netlink/specs/nl80211.yaml b/Documentation/netlink/specs/nl80211.yaml index 802097128bda..cc5ef34f8dec 100644 --- a/Documentation/netlink/specs/nl80211.yaml +++ b/Documentation/netlink/specs/nl80211.yaml @@ -211,6 +211,76 @@ definitions: - ht20 - ht40minus - ht40plus + - + name: eht-gi + type: enum + name-prefix: nl80211-rate-info-eht-gi- + entries: + - 0-8 + - 1-6 + - 3-2 + - + name: eht-ru-alloc + type: enum + name-prefix: nl80211-rate-info-he-ru-alloc- + entries: + - "26" + - "52" + - 52p26 + - "106" + - 106p26 + - "242" + - "484" + - 484p242 + - "996" + - 996p484 + - 996p484p242 + - 2x996 + - 2x996p484 + - 3x996 + - 3x996p484 + - 4x996 + - + name: he-gi + type: enum + name-prefix: nl80211-rate-info-he-gi- + entries: + - 0-8 + - 1-6 + - 3-2 + - + name: he-ru-alloc + type: enum + name-prefix: nl80211-rate-info-he-ru-alloc- + entries: + - "26" + - "52" + - "106" + - "242" + - "484" + - "996" + - 2x996 + - + name: mesh-power-mode + type: enum + name-prefix: nl80211-mesh-power- + entries: + - unknown + - active + - light-sleep + - deep-sleep + - + name: plink-state + type: enum + name-prefix: nl80211-plink- + entries: + - listen + - opn-snt + - opn-rcvd + - cnf-rcvd + - estab + - holding + - blocked - name: sta-flag-update type: struct @@ -297,7 +367,8 @@ attribute-sets: type: u32 - name: sta-info - type: binary # TODO: nest + type: nest + nested-attributes: sta-info-attrs - name: wiphy-bands type: nest @@ -1601,6 +1672,111 @@ attribute-sets: name: nan type: nest nested-attributes: frame-type-attrs + - + name: rate-info-attrs + enum-name: nl80211-rate-info + name-prefix: nl80211-rate-info- + attributes: + - + name: bitrate + type: u16 + - + name: mcs + type: u8 + - + name: 40-mhz-width + type: flag + - + name: short-gi + type: flag + - + name: bitrate32 + type: u32 + - + name: vht-mcs + type: u8 + - + name: vht-nss + type: u8 + - + name: 80-mhz-width + type: flag + - + name: 80p80-mhz-width + type: unused + - + name: 160-mhz-width + type: flag + - + name: 10-mhz-width + type: flag + - + name: 5-mhz-width + type: flag + - + name: he-mcs + type: u8 + - + name: he-nss + type: u8 + - + name: he-gi + type: u8 + enum: he-gi + - + name: he-dcm + type: u8 + - + name: he-ru-alloc + type: u8 + enum: he-ru-alloc + - + name: 320-mhz-width + type: flag + - + name: eht-mcs + type: u8 + - + name: eht-nss + type: u8 + - + name: eht-gi + type: u8 + enum: eht-gi + - + name: eht-ru-alloc + type: u8 + enum: eht-ru-alloc + - + name: s1g-mcs + type: u8 + - + name: s1g-nss + type: u8 + - + name: 1-mhz-width + type: flag + - + name: 2-mhz-width + type: flag + - + name: 4-mhz-width + type: flag + - + name: 8-mhz-width + type: flag + - + name: 16-mhz-width + type: flag + - + name: uhr-mcs + type: u8 + - + name: uhr-elr + type: flag + - + name: uhr-im + type: flag - name: sar-attributes enum-name: nl80211-sar-attrs @@ -1631,6 +1807,172 @@ attribute-sets: - name: end-freq type: u32 + - + name: sta-bss-param-attrs + enum-name: nl80211-sta-bss-param + name-prefix: nl80211-sta-bss-param- + attributes: + - + name: cts-prot + type: flag + - + name: short-preamble + type: flag + - + name: short-slot-time + type: flag + - + name: dtim-period + type: u8 + - + name: beacon-interval + type: u16 + - + name: sta-info-attrs + enum-name: nl80211-sta-info + name-prefix: nl80211-sta-info- + attributes: + - + name: inactive-time + type: u32 + - + name: rx-bytes + type: u32 + - + name: tx-bytes + type: u32 + - + name: llid + type: u16 + - + name: plid + type: u16 + - + name: plink-state + type: u8 + enum: plink-state + - + name: signal + type: u8 + - + name: tx-bitrate + type: nest + nested-attributes: rate-info-attrs + - + name: rx-packets + type: u32 + - + name: tx-packets + type: u32 + - + name: tx-retries + type: u32 + - + name: tx-failed + type: u32 + - + name: signal-avg + type: u8 + - + name: rx-bitrate + type: nest + nested-attributes: rate-info-attrs + - + name: bss-param + type: nest + nested-attributes: sta-bss-param-attrs + - + name: connected-time + type: u32 + - + name: sta-flags + type: binary + struct: sta-flag-update + - + name: beacon-loss + type: u32 + - + name: t-offset + type: s64 + - + name: local-pm + type: u32 + enum: mesh-power-mode + - + name: peer-pm + type: u32 + enum: mesh-power-mode + - + name: nonpeer-pm + type: u32 + enum: mesh-power-mode + - + name: rx-bytes64 + type: u64 + - + name: tx-bytes64 + type: u64 + - + name: chain-signal + type: indexed-array + sub-type: u8 + - + name: chain-signal-avg + type: indexed-array + sub-type: u8 + - + name: expected-throughput + type: u32 + - + name: rx-drop-misc + type: u64 + - + name: beacon-rx + type: u64 + - + name: beacon-signal-avg + type: u8 + - + name: tid-stats + type: indexed-array + sub-type: nest + nested-attributes: tid-stats-attrs + - + name: rx-duration + type: u64 + - + name: pad + type: binary + - + name: ack-signal + type: u8 + - + name: ack-signal-avg + type: s8 + - + name: rx-mpdus + type: u32 + - + name: fcs-error-count + type: u32 + - + name: connected-to-gate + type: u8 + - + name: tx-duration + type: u64 + - + name: airtime-weight + type: u16 + - + name: airtime-link-metric + type: u32 + - + name: assoc-at-boottime + type: u64 + - + name: connected-to-as + type: u8 - name: supported-iftypes enum-name: nl80211-iftype @@ -1672,6 +2014,30 @@ attribute-sets: - name: nan type: flag + - + name: tid-stats-attrs + enum-name: nl80211-tid-stats + name-prefix: nl80211-tid-stats- + attributes: + - + name: rx-msdu + type: u64 + - + name: tx-msdu + type: u64 + - + name: tx-msdu-retries + type: u64 + - + name: tx-msdu-failed + type: u64 + - + name: pad + type: binary + - + name: txq-stats + type: nest + nested-attributes: txq-stats-attrs - name: txq-stats-attrs name-prefix: nl80211-txq-stats- -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] wifi: nl80211: add sta-info nested attribute 2026-08-21 7:47 ` [PATCH 1/2] wifi: nl80211: add " Hilal Rahmatullah @ 2026-08-25 1:36 ` Jakub Kicinski 0 siblings, 0 replies; 5+ messages in thread From: Jakub Kicinski @ 2026-08-25 1:36 UTC (permalink / raw) To: hilalrahmatullah11 Cc: Jakub Kicinski, donald.hunter, davem, edumazet, pabeni, horms, netdev, linux-kernel This is an AI-generated review of your patch. The human sending this email has considered the AI review valid, or at least plausible. --- wifi: nl80211: add sta-info nested attribute This converts NL80211_ATTR_STA_INFO in the nl80211 YAML spec from an opaque binary blob into a proper nest, and adds the sta-info-attrs, rate-info-attrs, sta-bss-param-attrs and tid-stats-attrs attribute sets plus the enum definitions they reference. A few questions about the new definitions below. > diff --git a/Documentation/netlink/specs/nl80211.yaml b/Documentation/netlink/specs/nl80211.yaml > index 802097128bdae..cc5ef34f8decc 100644 > --- a/Documentation/netlink/specs/nl80211.yaml > +++ b/Documentation/netlink/specs/nl80211.yaml > @@ -211,6 +211,76 @@ definitions: > - ht20 > - ht40minus > - ht40plus [ ... ] > + - > + name: eht-ru-alloc > + type: enum > + name-prefix: nl80211-rate-info-he-ru-alloc- ^^^^ [Severity: Medium] Is the he- prefix here a copy/paste slip? The sixteen entries below match enum nl80211_eht_ru_alloc in include/uapi/linux/nl80211.h exactly in order (26, 52, 52p26, 106, 106p26, 242, 484, 484p242, 996, 996p484, 996p484p242, 2x996, 2x996p484, 3x996, 3x996p484, 4x996), and those constants are spelled NL80211_RATE_INFO_EHT_RU_ALLOC_*, so the prefix would need to be nl80211-rate-info-eht-ru-alloc- to describe the uAPI. As written, this definition and the he-ru-alloc definition a few lines further down carry the same name-prefix but assign different values to the same suffixes. The HE enum has value 2 == 106, while this list has value 2 == 52p26. Since the generator builds constant names from name-prefix: tools/net/ynl/pyynl/ynl_gen_c.py:EnumSet.__init__() { ... self.value_pfx = yaml.get('name-prefix', f"{family.ident_name}-{yaml['name']}-") ... } wouldn't a --mode uapi render emit two conflicting definitions of NL80211_RATE_INFO_HE_RU_ALLOC_26/52/106/242/484/996/2X996? The spec is installed for user space via make install-specs, so the wrong names are directly consumable. I checked the tip of the series and the he- prefix is still there, so it does not look like a later patch corrects it. > + entries: > + - "26" > + - "52" > + - 52p26 > + - "106" > + - 106p26 > + - "242" > + - "484" > + - 484p242 > + - "996" > + - 996p484 > + - 996p484p242 > + - 2x996 > + - 2x996p484 > + - 3x996 > + - 3x996p484 > + - 4x996 [ ... ] > + - > + name: he-ru-alloc > + type: enum > + name-prefix: nl80211-rate-info-he-ru-alloc- > + entries: > + - "26" > + - "52" > + - "106" > + - "242" > + - "484" > + - "996" > + - 2x996 [ ... ] > @@ -1601,6 +1672,111 @@ attribute-sets: > name: nan > type: nest > nested-attributes: frame-type-attrs > + - > + name: rate-info-attrs > + enum-name: nl80211-rate-info > + name-prefix: nl80211-rate-info- > + attributes: [ ... ] > + - > + name: eht-ru-alloc > + type: u8 > + enum: eht-ru-alloc This is the attribute that picks up the mis-prefixed definition above, so the spec currently describes EHT RU-allocation values under HE constant names. [ ... ] > @@ -1631,6 +1807,172 @@ attribute-sets: > - > name: end-freq > type: u32 [ ... ] > + - > + name: sta-info-attrs > + enum-name: nl80211-sta-info > + name-prefix: nl80211-sta-info- > + attributes: [ ... ] > + - > + name: chain-signal > + type: indexed-array > + sub-type: u8 > + - > + name: chain-signal-avg > + type: indexed-array > + sub-type: u8 [Severity: Low] Does a ynl build still work at this commit? AttrSet.new_attr() only accepts three sub-types for indexed arrays and raises otherwise: tools/net/ynl/pyynl/ynl_gen_c.py:AttrSet.new_attr() { ... elif elem['type'] == 'indexed-array' and 'sub-type' in elem: if elem["sub-type"] in ['binary', 'nest', 'u32']: t = TypeIndexedArray(self.family, self, elem, value) else: raise Exception(f'new_attr: unsupported sub-type {elem["sub-type"]}') ... } tools/net/ynl/generated/Makefile generates for every spec except conntrack and nftables, so nl80211.yaml is processed and make -C tools/net/ynl would abort here. The following patch in the series, "net: ynl: allow u8 sub-type for indexed array", adds 'u8' to that whitelist, and at the series tip the list reads ['binary', 'nest', 'u32', 'u8'], so only the intermediate commits are affected. Would swapping the order of the two patches keep the tree bisectable? [ ... ] > + - > + name: tid-stats > + type: indexed-array > + sub-type: nest > + nested-attributes: tid-stats-attrs [Severity: Medium] Should the TID index offset be recorded somewhere here? The plain indexed-array model says the entry nests have the index of the entry as their type, but the kernel does not use a 0-based index: net/wireless/nl80211.c:nl80211_send_station() { ... for (tid = 0; tid < IEEE80211_NUM_TIDS + 1; tid++) { struct cfg80211_tid_stats *tidstats = &sinfo->pertid[tid]; if (!tidstats->filled) continue; tidattr = nla_nest_start_noflag(msg, tid + 1); ... } and include/uapi/linux/nl80211.h documents it as "the inner attribute number is the TID+1 and the special TID 16 (i.e. value 17) is used for non-QoS frames". Because unfilled TIDs are skipped, the array is also sparse, and the C generator throws the entry type away: tools/net/ynl/pyynl/ynl_gen_c.py:TypeIndexedArray._attr_get() { ... get_lines = [f'attr_{self.c_name} = attr;', 'ynl_attr_for_each_nested(attr2, attr) {', '\tif (__ynl_attr_validate(yarg, attr2, type))', '\t\treturn YNL_PARSE_CB_ERROR;', f'\tn_{self.c_name}++;', '}'] ... } so a generated C consumer fills a dense array in encounter order and reports per-TID counters against the wrong TID. The Python library keeps the raw index as a dict key, so there the offset is only undocumented. Note the same construct two attributes earlier is genuinely 0-based: net/wireless/nl80211.c:nl80211_put_signal() { ... for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) { ... if (nla_put_u8(msg, i, signal[i])) ... } Can the two different index semantics be distinguished from this spec as it stands? [ ... ] Cross-instance finding from sashiko-gemini (68565e9f44913e1546bdedfd69f80fe6b57cbeb2edfb4bc54f79467c320b20e1): [Severity: Medium] The `pad` attributes in `sta-info-attrs` and `tid-stats-attrs` violate the netlink YAML policy by using type `binary` instead of `pad`. -- pw-bot: cr ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array 2026-08-21 7:47 [PATCH 0/2] wifi: nl80211: Document sta-info nested attribute Hilal Rahmatullah 2026-08-21 7:47 ` [PATCH 1/2] wifi: nl80211: add " Hilal Rahmatullah @ 2026-08-21 7:47 ` Hilal Rahmatullah 2026-08-25 1:36 ` Jakub Kicinski 1 sibling, 1 reply; 5+ messages in thread From: Hilal Rahmatullah @ 2026-08-21 7:47 UTC (permalink / raw) To: Donald Hunter, Jakub Kicinski, David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman Cc: netdev, linux-kernel, Hilal Rahmatullah add u8 to the supported sub-type for indexed array, it is needed for NL80211_STA_INFO_CHAIN_SIGNAL serialization. Signed-off-by: Hilal Rahmatullah <hilalrahmatullah11@gmail.com> --- tools/net/ynl/pyynl/ynl_gen_c.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py index cdc3646f2642..7373a48d5516 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -1158,7 +1158,7 @@ class AttrSet(SpecAttrSet): elif elem['type'] == 'nest': t = TypeNest(self.family, self, elem, value) elif elem['type'] == 'indexed-array' and 'sub-type' in elem: - if elem["sub-type"] in ['binary', 'nest', 'u32']: + if elem["sub-type"] in ['binary', 'nest', 'u32', 'u8']: t = TypeIndexedArray(self.family, self, elem, value) else: raise Exception(f'new_attr: unsupported sub-type {elem["sub-type"]}') -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array 2026-08-21 7:47 ` [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array Hilal Rahmatullah @ 2026-08-25 1:36 ` Jakub Kicinski 0 siblings, 0 replies; 5+ messages in thread From: Jakub Kicinski @ 2026-08-25 1:36 UTC (permalink / raw) To: hilalrahmatullah11 Cc: Jakub Kicinski, donald.hunter, davem, edumazet, pabeni, horms, netdev, linux-kernel This is an AI-generated review of your patch. The human sending this email has considered the AI review valid, or at least plausible. --- net: ynl: allow u8 sub-type for indexed array This adds u8 to the list of sub-types accepted by AttrSet.new_attr() for indexed-array attributes in tools/net/ynl/pyynl/ynl_gen_c.py, so that the nl80211 chain-signal attributes can be described in the YAML spec. Without it the generator rejects the sub-type outright. > diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py > index cdc3646f2642c..7373a48d5516a 100755 > --- a/tools/net/ynl/pyynl/ynl_gen_c.py > +++ b/tools/net/ynl/pyynl/ynl_gen_c.py > @@ -1158,7 +1158,7 @@ class AttrSet(SpecAttrSet): > elif elem['type'] == 'nest': > t = TypeNest(self.family, self, elem, value) > elif elem['type'] == 'indexed-array' and 'sub-type' in elem: > - if elem["sub-type"] in ['binary', 'nest', 'u32']: > + if elem["sub-type"] in ['binary', 'nest', 'u32', 'u8']: [Severity: Medium] Should this patch come before the spec change in the series? The preceding commit cb06a9dc93de ("wifi: nl80211: add sta-info nested attribute") already adds chain-signal and chain-signal-avg to Documentation/netlink/specs/nl80211.yaml: - name: chain-signal type: indexed-array sub-type: u8 SpecAttrSet.__init__() in tools/net/ynl/pyynl/lib/nlspec.py calls new_attr() for every attribute of every attribute set at spec parse time, regardless of which ops or generation mode are requested: for elem in self.yaml['attributes']: ... attr = self.new_attr(elem, val) so at the intermediate commit AttrSet.new_attr() takes the else branch and raises 'new_attr: unsupported sub-type u8'. nl80211 is part of GENS in tools/net/ynl/generated/Makefile, which globs all specs and only filters out conntrack and nftables: SPECS_PATHS=$(wildcard $(SPECS_DIR)/*.yaml) GENS_UNSUP=conntrack nftables GENS=$(filter-out ${GENS_UNSUP},$(patsubst $(SPECS_DIR)/%.yaml,%,${SPECS_PATHS})) Does that mean make -C tools/net/ynl and ynl-regen.sh fail for anyone who lands on or bisects to cb06a9dc93de? Reordering so the generator support lands first, or squashing the two, would avoid that. [Severity: Medium] Does the scalar indexed-array path lose the entry index that NL80211_STA_INFO_CHAIN_SIGNAL relies on? Documentation/userspace-api/netlink/genetlink-legacy.rst describes the entry attribute type as the index: The ``ENTRY`` nests are special and have the index of the entry as their type instead of normal attribute type. nl80211_put_signal() keys each u8 on the chain number and skips chains that are not in the mask, so the emitted index sequence can be sparse: for (i = 0; i < IEEE80211_MAX_CHAINS; i++) { if (!(mask & BIT(i))) continue; if (nla_put_u8(msg, i, signal[i])) Sparse masks do occur in practice, for example ath10k_htt_rx_h_signal() sets each bit of status->chains independently based on per-chain RSSI validity. The generated parser for scalar sub-types in _multi_parse() stores entries densely and drops ynl_attr_type(attr): elif aspec.sub_type in scalars: ri.cw.p(f"dst->{aspec.c_name}[i] = ynl_attr_get_{aspec.sub_type}(attr);") ri.cw.p('i++;') So a message carrying chains 0 and 2 is reported as _count.chain_signal = 2 with the chain-2 value sitting at index 1, and TypeIndexedArray.attr_put() would then re-serialize it as index 1: for (i = 0; i < {var}->_count.{c_name}; i++) ynl_attr_put_u8(nlh, i, {var}->{c_name}[i]); YnlFamily._decode_array_attr() in tools/net/ynl/pyynl/lib/ynl.py has the same loss since it appends item.as_scalar() to a plain list without recording item.type. The lossy path predates this patch, since only u32 indexed arrays were allowed and the in-tree u32 user arp-ip-target is dense. Is it worth carrying the index alongside the value before routing nl80211 chain-signal through this path, so per-chain values are not attributed to the wrong chain? > else: > raise Exception(f'new_attr: unsupported sub-type {elem["sub-type"]}') [Severity: Medium] One more thing on the spec added by the preceding commit of this series, in Documentation/netlink/specs/nl80211.yaml. The new eht-ru-alloc enum declares the HE name prefix: name: eht-ru-alloc type: enum name-prefix: nl80211-rate-info-he-ru-alloc- while include/uapi/linux/nl80211.h names these values with the EHT prefix: enum nl80211_eht_ru_alloc { NL80211_RATE_INFO_EHT_RU_ALLOC_26, NL80211_RATE_INFO_EHT_RU_ALLOC_52, NL80211_RATE_INFO_EHT_RU_ALLOC_52P26, The same patch adds he-ru-alloc with that identical prefix: name: he-ru-alloc type: enum name-prefix: nl80211-rate-info-he-ru-alloc- The generator builds the C enumerators straight from that prefix: self.value_pfx = yaml.get('name-prefix', f"{family.ident_name}-{yaml['name']}-") self.c_name = c_upper(self.enum_set.value_pfx + self.name) cw.p(entry.c_name + suffix) /* render_uapi() */ so uapi generation from this spec emits NL80211_RATE_INFO_HE_RU_ALLOC_26/52/106/242/484/2x996 twice, and the EHT-only entries (52p26, 106p26, 484p242, 996p484, 996p484p242, 2x996p484, 3x996, 3x996p484, 4x996) come out under NL80211_RATE_INFO_HE_RU_ALLOC_* names that do not exist in the UAPI header. No in-tree build runs --mode uapi for nl80211 today, so nothing breaks right now. Should the eht-ru-alloc prefix be nl80211-rate-info-eht-ru-alloc- instead? ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-25 1:36 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-21 7:47 [PATCH 0/2] wifi: nl80211: Document sta-info nested attribute Hilal Rahmatullah 2026-08-21 7:47 ` [PATCH 1/2] wifi: nl80211: add " Hilal Rahmatullah 2026-08-25 1:36 ` Jakub Kicinski 2026-08-21 7:47 ` [PATCH 2/2] net: ynl: allow u8 sub-type for indexed array Hilal Rahmatullah 2026-08-25 1:36 ` Jakub Kicinski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox