Thread (13 messages) 13 messages, 2 authors, 2025-10-24

Re: [PATCH net-next 0/7] ynl: add ignore-index flag for indexed-array

From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-10-24 00:03:44
Also in: linux-doc, lkml

On Thu, 23 Oct 2025 18:37:09 +0000 Asbjørn Sloth Tønnesen wrote:
 > C code already does this, right? We just collect the attributes
 > completely ignoring the index.  

In the userspace C code, for sub-type nest the index is preserved
in struct member idx, and elided for other sub-types.
I see it now, I guess I added it for get but forgot to obey it 
for put :(
 > So why do we need to extend the spec.  

For me it's mostly the naming "indexed-array". Earlier it was
"array-nest", then we renamed it to "indexed-array" because
it doesn't always contain nests.  I think it's counter-intuitive
to elide the index by default, for something called "indexed-array".
The majority of the families using it don't care about the index.

What if we called it "ordered-array", and then always counted from 1
(for families that cares) when packing in user-space code?

 > Have you found any case where the index matters and can be
 > non-contiguous (other than the known TC kerfuffle).  

IFLA_OFFLOAD_XSTATS_HW_S_INFO could be re-defined as a nest,
IFLA_OFFLOAD_XSTATS_L3_STATS is the only index atm.
Isn't that pretty much always true? If the index is significant
the whole thing could be redefined as a nest, with names provided
in the spec?
IFLA_INET_CONF / IFLA_INET6_CONF is on input, but those are
also special by having different types depending on direction.

I found a bunch of other ones, using a static index, but they
can also be defined as a multi-attr wrapped in an additional
outer nest, like IFLA_VF_VLAN_LIST already is.
Multi-attr with an outer nest should at least solve your wg problem 
I guess? If all the attrs have type of 0 we can make it a multi-attr.
 > FWIW another concept is what TypeValue does.
 > "Inject" the index into the child nest as an extra member.
 > Most flexible but also prolly a PITA for user space to init those
 > for requests.  

Same as is done in the userspace C code for indexed-arrays with
sub-type nest. For most families it doesn't matter if the C code
inits the index or not.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help