Subject: Re: [PATCH net-next 2/4] ynl: populate most of the ethtool spec

From: Jakub Kicinski <[email-masked]>
Date: Fri, 17 Mar 2023 21:33:04 -0700

On Fri, 17 Mar 2023 17:23:38 -0700 Stanislav Fomichev wrote:
> Things that are not implemented:
> - cable tests
> - bitmaks in the requests don't work (needs multi-attr support in ynl.py)
> - stats-get seems to return nonsense

Hm. What kind of nonsense?

> - notifications are not tested
> - features-nft has hard-coded value:13, not sure why it skews

ETHTOOL_MSG_FEATURES_SET_REPLY exists but there is no reply:
section in the spec.

> Signed-off-by: Stanislav Fomichev <[email-masked]>
> ---
>  Documentation/netlink/specs/ethtool.yaml | 1473 ++++++++++++++++++++--
>  1 file changed, 1362 insertions(+), 111 deletions(-)
> 
> diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml
> index 4727c067e2ba..ba9ee9b6e5ad 100644
> --- a/Documentation/netlink/specs/ethtool.yaml
> +++ b/Documentation/netlink/specs/ethtool.yaml
> @@ -6,6 +6,12 @@ protocol: genetlink-legacy
>  
>  doc: Partial family for Ethtool Netlink.
>  
> +definitions:
> +  -
> +    name: udp-tunnel-type
> +    type: enum
> +    entries: [ vxlan, geneve, vxlan_gpe ]

s/_/-/ everywhere

> +
>  attribute-sets:
>    -
>      name: header
> @@ -38,6 +44,7 @@ doc: Partial family for Ethtool Netlink.
>        -
>          name: bit
>          type: nest
> +        multi-attr: true
>          nested-attributes: bitset-bit
>    -
>      name: bitset
> @@ -53,6 +60,21 @@ doc: Partial family for Ethtool Netlink.
>          type: nest
>          nested-attributes: bitset-bits
>  
> +  -
> +    name: u64-array
> +    attributes:
> +      -
> +        name: u64
> +        type: nest
> +        multi-attr: true
> +        nested-attributes: u64
> +    name: s32-array

missing 

    -

before this line? the u64-array and s32-array should be separate?

> +    attributes:
> +      -
> +        name: s32
> +        type: nest
> +        multi-attr: true
> +        nested-attributes: s32
>    -
>      name: string
>      attributes:

> +    -
> +      name: features-get
> +      doc: Get features.
> +
> +      attribute-set: features
> +
> +      do: &feature-get-op
> +        request:
> +          attributes:
> +            - header
> +        reply:
> +          attributes: &feature
> +            - header
> +            # User-changeable features.
> +            - hw
> +            # User-requested features.
> +            - wanted
> +            # Currently active features.
> +            - active
> +            # Unchangeable features.
> +            - nochange
> +      dump: *feature-get-op
> +    -
> +      name: features-set
> +      doc: Set features.
> +
> +      attribute-set: features
> +
> +      do:
> +        request:
> +          attributes: *feature

	reply:

here. Not sure if it needs an empty attributes: or not.