I got discouraged from supporting ethtool in specs, because generating the user space C code seems a little tricky. The messages are ID'ed in a "directional" way (to and from kernel are separate ID "spaces"). There is value, however, in having the spec and being able to for example use it in Python. After paying off some technical debt - add a partial ethtool spec. Partial because the header for ethtool is almost a 1000 LoC, so converting in one sitting is tough. But adding new commands should be trivial now. Last but not least I add more docs, I realized that I've been sending a similar "instructions" email to people working on new families. It's now intro-specs.rst. v2: - spelling fixes (patch 11) - always use python3 (new patch 14) Jakub Kicinski (14): tools: ynl-gen: prevent do / dump reordering tools: ynl: move the cli and netlink code around tools: ynl: add an object hierarchy to represent parsed spec tools: ynl: use the common YAML loading and validation code tools: ynl: add support for types needed by ethtool tools: ynl: support directional enum-model in CLI tools: ynl: support multi-attr tools: ynl: support pretty printing bad attribute names tools: ynl: use operation names from spec on the CLI tools: ynl: load jsonschema on demand netlink: specs: finish up operation enum-models netlink: specs: add partial specification for ethtool docs: netlink: add a starting guide for working with specs tools: net: use python3 explicitly Documentation/netlink/genetlink-c.yaml | 4 +- Documentation/netlink/genetlink-legacy.yaml | 11 +- Documentation/netlink/genetlink.yaml | 4 +- Documentation/netlink/specs/ethtool.yaml | 392 ++++++++++++++++++ .../netlink/genetlink-legacy.rst | 82 ++++ Documentation/userspace-api/netlink/index.rst | 1 + .../userspace-api/netlink/intro-specs.rst | 80 ++++ Documentation/userspace-api/netlink/specs.rst | 3 + tools/net/ynl/{samples => }/cli.py | 17 +- tools/net/ynl/lib/__init__.py | 7 + tools/net/ynl/lib/nlspec.py | 310 ++++++++++++++ tools/net/ynl/{samples => lib}/ynl.py | 192 +++++---- tools/net/ynl/ynl-gen-c.py | 262 ++++++------ 13 files changed, 1109 insertions(+), 256 deletions(-) create mode 100644 Documentation/netlink/specs/ethtool.yaml create mode 100644 Documentation/userspace-api/netlink/intro-specs.rst rename tools/net/ynl/{samples => }/cli.py (76%) create mode 100644 tools/net/ynl/lib/__init__.py create mode 100644 tools/net/ynl/lib/nlspec.py rename tools/net/ynl/{samples => lib}/ynl.py (79%) -- 2.39.1