[PATCH net-next 4/7] ynl: add missing pieces to ethtool spec to better match uapi header

Stanislav Fomichev posted 7 patches 1 week, 2 days ago
There is a newer version of this series
[PATCH net-next 4/7] ynl: add missing pieces to ethtool spec to better match uapi header
Posted by Stanislav Fomichev 1 week, 2 days ago
- __ETHTOOL_UDP_TUNNEL_TYPE_CNT and render max
- skip rendering stringset (empty enum)
- skip rendering c33-pse-ext-state (defined in ethtool.h)
- rename header flags to ethtool-flag-
- add attr-cnt-name to each attribute to use XXX_CNT instead of XXX_MAX
- add unspec 0 entry to each attribute
- carry some doc entries from the existing header
- tcp-header-split

Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
 Documentation/netlink/specs/ethtool.yaml | 354 ++++++++++++++++++++++-
 1 file changed, 343 insertions(+), 11 deletions(-)

diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml
index 93369f0eb816..83adaf8bf9a7 100644
--- a/Documentation/netlink/specs/ethtool.yaml
+++ b/Documentation/netlink/specs/ethtool.yaml
@@ -5,6 +5,7 @@ name: ethtool
 protocol: genetlink-legacy
 
 doc: Partial family for Ethtool Netlink.
+uapi-header: linux/ethetool_netlink_generated.h
 
 definitions:
   -
@@ -12,43 +13,97 @@ doc: Partial family for Ethtool Netlink.
     enum-name:
     type: enum
     entries: [ vxlan, geneve, vxlan-gpe ]
+    attr-cnt-name: __ETHTOOL_UDP_TUNNEL_TYPE_CNT
+    render-max: true
   -
     name: stringset
     type: enum
     entries: []
+    render: false
   -
     name: header-flags
     type: flags
-    entries: [ compact-bitsets, omit-reply, stats ]
+    name-prefix: ethtool-flag-
+    entries:
+      -
+        name: compact-bitsets
+        doc: use compact bitsets in reply
+      -
+        name: omit-reply
+        doc: provide optional reply for SET or ACT requests
+      -
+        name: stats
+        doc: request statistics, if supported by the driver
   -
     name: module-fw-flash-status
     type: enum
-    entries: [ started, in_progress, completed, error ]
+    doc: plug-in module firmware flashing status
+    render: false
+    entries:
+      -
+        name: started
+        doc: The firmware flashing process has started.
+      -
+        name: in_progress
+        doc: The firmware flashing process is in progress.
+      -
+        name: completed
+        doc: The firmware flashing process was completed successfully.
+      -
+        name: error
+        doc: The firmware flashing process was stopped due to an error.
   -
     name: c33-pse-ext-state
-    enum-name:
+    enum-name: c33-pse-ext-state
+    doc: "groups of PSE extended states functions. IEEE 802.3-2022 33.2.4.4 Variables"
     type: enum
     name-prefix: ethtool-c33-pse-ext-state-
+    render: false
     entries:
         - none
-        - error-condition
-        - mr-mps-valid
-        - mr-pse-enable
-        - option-detect-ted
-        - option-vport-lim
-        - ovld-detected
-        - power-not-available
-        - short-detected
+        -
+          name: error-condition
+          doc: Group of error_condition states
+        -
+          name: mr-mps-valid
+          doc: Group of mr_mps_valid states
+        -
+          name: mr-pse-enable
+          doc: Group of mr_pse_enable states
+        -
+          name: option-detect-ted
+          doc: Group of option_detect_ted states
+        -
+          name: option-vport-lim
+          doc: Group of option_vport_lim states
+        -
+          name: ovld-detected
+          doc: Group of ovld_detected states
+        -
+          name: power-not-available
+          doc: Group of power_not_available states
+        -
+          name: short-detected
+          doc: Group of short_detected states
   -
     name: phy-upstream-type
     enum-name:
     type: enum
     entries: [ mac, phy ]
+  -
+    name: tcp-data-split
+    type: enum
+    entries: [ unknown, disabled, enabled ]
 
 attribute-sets:
   -
     name: header
+    attr-cnt-name: __ETHTOOL_A_HEADER_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: dev-index
         type: u32
@@ -65,7 +120,12 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: bitset-bit
+    attr-cnt-name: __ETHTOOL_A_BITSET_BIT_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: index
         type: u32
@@ -77,7 +137,12 @@ doc: Partial family for Ethtool Netlink.
         type: flag
   -
     name: bitset-bits
+    attr-cnt-name: __ETHTOOL_A_BITSET_BITS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: bit
         type: nest
@@ -85,7 +150,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: bitset-bit
   -
     name: bitset
+    attr-cnt-name: __ETHTOOL_A_BITSET_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: nomask
         type: flag
@@ -104,7 +174,12 @@ doc: Partial family for Ethtool Netlink.
         type: binary
   -
     name: string
+    attr-cnt-name: __ETHTOOL_A_STRING_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: index
         type: u32
@@ -113,7 +188,16 @@ doc: Partial family for Ethtool Netlink.
         type: string
   -
     name: strings
+    attr-cnt-name: __ETHTOOL_A_STRINGS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: string
         type: nest
@@ -121,7 +205,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: string
   -
     name: stringset
+    attr-cnt-name: __ETHTOOL_A_STRINGSET_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: id
         type: u32
@@ -135,7 +224,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: strings
   -
     name: stringsets
+    attr-cnt-name: __ETHTOOL_A_STRINGSETS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: stringset
         type: nest
@@ -143,7 +237,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: stringset
   -
     name: strset
+    attr-cnt-name: __ETHTOOL_A_STRSET_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -158,7 +257,12 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: privflags
+    attr-cnt-name: __ETHTOOL_A_PRIVFLAGS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -170,7 +274,12 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: rings
+    attr-cnt-name: __ETHTOOL_A_RINGS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -205,6 +314,7 @@ doc: Partial family for Ethtool Netlink.
       -
         name: tcp-data-split
         type: u8
+        enum: tcp-data-split
       -
         name: cqe-size
         type: u32
@@ -223,31 +333,48 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: mm-stat
+    attr-cnt-name: __ETHTOOL_A_MM_STAT_CNT
+    doc: MAC Merge (802.3)
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pad
         type: pad
       -
         name: reassembly-errors
+        doc: aMACMergeFrameAssErrorCount
         type: u64
       -
         name: smd-errors
+        doc: aMACMergeFrameSmdErrorCount
         type: u64
       -
         name: reassembly-ok
+        doc: aMACMergeFrameAssOkCount
         type: u64
       -
         name: rx-frag-count
+        doc: aMACMergeFragCountRx
         type: u64
       -
         name: tx-frag-count
+        doc: aMACMergeFragCountTx
         type: u64
       -
         name: hold-count
+        doc: aMACMergeHoldCount
         type: u64
   -
     name: mm
+    attr-cnt-name: __ETHTOOL_A_MM_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -285,7 +412,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: mm-stat
   -
     name: linkinfo
+    attr-cnt-name: __ETHTOOL_A_LINKINFO_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -307,7 +439,12 @@ doc: Partial family for Ethtool Netlink.
         type: u8
   -
     name: linkmodes
+    attr-cnt-name: __ETHTOOL_A_LINKMODES_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -343,7 +480,12 @@ doc: Partial family for Ethtool Netlink.
         type: u8
   -
     name: linkstate
+    attr-cnt-name: __ETHTOOL_A_LINKSTATE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -368,7 +510,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: debug
+    attr-cnt-name: __ETHTOOL_A_DEBUG_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -379,7 +526,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: bitset
   -
     name: wol
+    attr-cnt-name: __ETHTOOL_A_WOL_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -393,7 +545,12 @@ doc: Partial family for Ethtool Netlink.
         type: binary
   -
     name: features
+    attr-cnt-name: __ETHTOOL_A_FEATURES_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -416,7 +573,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: bitset
   -
     name: channels
+    attr-cnt-name: __ETHTOOL_A_CHANNELS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -448,7 +610,12 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: irq-moderation
+    attr-cnt-name: __ETHTOOL_A_IRQ_MODERATION_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: usec
         type: u32
@@ -460,7 +627,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: profile
+    attr-cnt-name: __ETHTOOL_A_PROFILE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: irq-moderation
         type: nest
@@ -468,7 +640,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: irq-moderation
   -
     name: coalesce
+    attr-cnt-name: __ETHTOOL_A_COALESCE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -565,7 +742,12 @@ doc: Partial family for Ethtool Netlink.
 
   -
     name: pause-stat
+    attr-cnt-name: __ETHTOOL_A_PAUSE_STAT_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pad
         type: pad
@@ -577,7 +759,12 @@ doc: Partial family for Ethtool Netlink.
         type: u64
   -
     name: pause
+    attr-cnt-name: __ETHTOOL_A_PAUSE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -600,7 +787,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: eee
+    attr-cnt-name: __ETHTOOL_A_EEE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -627,7 +819,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: ts-stat
+    attr-cnt-name: __ETHTOOL_A_TS_STAT_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: tx-pkts
         type: uint
@@ -639,7 +836,12 @@ doc: Partial family for Ethtool Netlink.
         type: uint
   -
     name: tsinfo
+    attr-cnt-name: __ETHTOOL_A_TSINFO_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -665,19 +867,32 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: ts-stat
   -
     name: cable-result
+    attr-cnt-name: __ETHTOOL_A_CABLE_RESULT_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pair
+        doc: ETHTOOL_A_CABLE_PAIR_
         type: u8
       -
         name: code
+        doc: ETHTOOL_A_CABLE_RESULT_CODE_
         type: u8
       -
         name: src
+        doc: ETHTOOL_A_CABLE_INF_SRC_
         type: u32
   -
     name: cable-fault-length
+    attr-cnt-name: __ETHTOOL_A_CABLE_FAULT_LENGTH_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pair
         type: u8
@@ -689,7 +904,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: cable-nest
+    attr-cnt-name: __ETHTOOL_A_CABLE_NEST_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: result
         type: nest
@@ -700,20 +920,31 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: cable-fault-length
   -
     name: cable-test
+    attr-cnt-name: __ETHTOOL_A_CABLE_TEST_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
         nested-attributes: header
   -
     name: cable-test-ntf
+    attr-cnt-name: __ETHTOOL_A_CABLE_TEST_NTF_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
         nested-attributes: header
       -
         name: status
+        doc: _STARTED/_COMPLETE
         type: u8
       -
         name: nest
@@ -721,7 +952,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: cable-nest
   -
     name: cable-test-tdr-cfg
+    attr-cnt-name: __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: first
         type: u32
@@ -736,7 +972,12 @@ doc: Partial family for Ethtool Netlink.
         type: u8
   -
     name: cable-test-tdr-ntf
+    attr-cnt-name: __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -750,7 +991,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: cable-nest
   -
     name: cable-test-tdr
+    attr-cnt-name: __ETHTOOL_A_CABLE_TEST_TDR_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -761,7 +1007,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: cable-test-tdr-cfg
   -
     name: tunnel-udp-entry
+    attr-cnt-name: __ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: port
         type: u16
@@ -772,7 +1023,12 @@ doc: Partial family for Ethtool Netlink.
         enum: udp-tunnel-type
   -
     name: tunnel-udp-table
+    attr-cnt-name: __ETHTOOL_A_TUNNEL_UDP_TABLE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: size
         type: u32
@@ -787,14 +1043,24 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: tunnel-udp-entry
   -
     name: tunnel-udp
+    attr-cnt-name: __ETHTOOL_A_TUNNEL_UDP_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: table
         type: nest
         nested-attributes: tunnel-udp-table
   -
     name: tunnel-info
+    attr-cnt-name: __ETHTOOL_A_TUNNEL_INFO_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -805,7 +1071,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: tunnel-udp
   -
     name: fec-stat
+    attr-cnt-name: __ETHTOOL_A_FEC_STAT_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pad
         type: pad
@@ -823,7 +1094,12 @@ doc: Partial family for Ethtool Netlink.
         sub-type: u64
   -
     name: fec
+    attr-cnt-name: __ETHTOOL_A_FEC_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -844,7 +1120,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: fec-stat
   -
     name: module-eeprom
+    attr-cnt-name: __ETHTOOL_A_MODULE_EEPROM_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -869,7 +1150,12 @@ doc: Partial family for Ethtool Netlink.
         type: binary
   -
     name: stats-grp
+    attr-cnt-name: __ETHTOOL_A_STATS_GRP_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pad
         type: pad
@@ -912,7 +1198,12 @@ doc: Partial family for Ethtool Netlink.
         name: hist-val
   -
     name: stats
+    attr-cnt-name: __ETHTOOL_A_STATS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: pad
         type: pad
@@ -933,7 +1224,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: phc-vclocks
+    attr-cnt-name: __ETHTOOL_A_PHC_VCLOCKS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -947,7 +1243,12 @@ doc: Partial family for Ethtool Netlink.
         sub-type: s32
   -
     name: module
+    attr-cnt-name: __ETHTOOL_A_MODULE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -960,7 +1261,13 @@ doc: Partial family for Ethtool Netlink.
         type: u8
   -
     name: c33-pse-pw-limit
+    attr-cnt-name: __ETHTOOL_A_C33_PSE_PW_LIMIT_CNT
+    attr-max-name: __ETHTOOL_A_C33_PSE_PW_LIMIT_MAX
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: min
         type: u32
@@ -969,7 +1276,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: pse
+    attr-cnt-name: __ETHTOOL_A_PSE_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -1027,7 +1339,12 @@ doc: Partial family for Ethtool Netlink.
         nested-attributes: c33-pse-pw-limit
   -
     name: rss
+    attr-cnt-name: __ETHTOOL_A_RSS_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -1053,7 +1370,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: plca
+    attr-cnt-name: __ETHTOOL_A_PLCA_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -1084,7 +1406,12 @@ doc: Partial family for Ethtool Netlink.
         type: u32
   -
     name: module-fw-flash
+    attr-cnt-name: __ETHTOOL_A_MODULE_FW_FLASH_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
@@ -1110,7 +1437,12 @@ doc: Partial family for Ethtool Netlink.
         type: uint
   -
     name: phy
+    attr-cnt-name: __ETHTOOL_A_PHY_CNT
     attributes:
+      -
+        name: unspec
+        type: unused
+        value: 0
       -
         name: header
         type: nest
-- 
2.47.0
Re: [PATCH net-next 4/7] ynl: add missing pieces to ethtool spec to better match uapi header
Posted by Jakub Kicinski 1 week, 2 days ago
On Wed, 13 Nov 2024 10:10:20 -0800 Stanislav Fomichev wrote:
> +    attr-cnt-name: __ETHTOOL_UDP_TUNNEL_TYPE_CNT

--ethtool-udp-tunnel-type-cnt ?
or possibly
__ethtool-udp-tunnel-type-cnt

but let the codegen do the char conversion via c_upper()
Re: [PATCH net-next 4/7] ynl: add missing pieces to ethtool spec to better match uapi header
Posted by Stanislav Fomichev 1 week, 2 days ago
On 11/13, Jakub Kicinski wrote:
> On Wed, 13 Nov 2024 10:10:20 -0800 Stanislav Fomichev wrote:
> > +    attr-cnt-name: __ETHTOOL_UDP_TUNNEL_TYPE_CNT
> 
> --ethtool-udp-tunnel-type-cnt ?
> or possibly
> __ethtool-udp-tunnel-type-cnt
> 
> but let the codegen do the char conversion via c_upper()

The latter (__) seems more like a variable vs the first one that is more
like a flag. I'll try to stick to the __ form, but no strong preference
either.