59d814f0 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: generate static descriptions of notifications
Notifications may come in at any time. The family must be always ready to parse a random incoming notification. Generate notification ta
tools: ynl-gen: generate static descriptions of notifications
Notifications may come in at any time. The family must be always ready to parse a random incoming notification. Generate notification table for parsing and tell YNL which request we're processing to distinguish responses from notifications.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
8cb6afb3 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: switch to family struct
We'll want to store static info about the family soon. Generate a struct. This changes creation from, e.g.:
ys = ynl_sock_create("netdev", &yerr); to: ys
tools: ynl-gen: switch to family struct
We'll want to store static info about the family soon. Generate a struct. This changes creation from, e.g.:
ys = ynl_sock_create("netdev", &yerr); to: ys = ynl_sock_create(&ynl_netdev_family, &yerr);
on user's side.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
5d58f911 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: generate alloc and free helpers for req
We expect user to allocate requests with calloc(), make things a bit more consistent and provide helpers. Generate free calls, too.
Signed-of
tools: ynl-gen: generate alloc and free helpers for req
We expect user to allocate requests with calloc(), make things a bit more consistent and provide helpers. Generate free calls, too.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
dc0956c9 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: move the response reading logic into YNL
We generate send() and recv() calls and all msg handling for each operation. It's a lot of repeated code and will only grow with notification
tools: ynl-gen: move the response reading logic into YNL
We generate send() and recv() calls and all msg handling for each operation. It's a lot of repeated code and will only grow with notification handling. Call back to a helper YNL lib instead.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
21b6e302 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: generate enum-to-string helpers
It's sometimes useful to print the name of an enum value, flag or name of the op. Python can do it, add C helper code gen for getting names of things.
tools: ynl-gen: generate enum-to-string helpers
It's sometimes useful to print the name of an enum value, flag or name of the op. Python can do it, add C helper code gen for getting names of things.
Example:
static const char * const netdev_xdp_act_strmap[] = { [0] = "basic", [1] = "redirect", [2] = "ndo-xmit", [3] = "xsk-zerocopy", [4] = "hw-offload", [5] = "rx-sg", [6] = "ndo-xmit-sg", };
const char *netdev_xdp_act_str(enum netdev_xdp_act value) { value = ffs(value) - 1; if (value < 0 || value >= (int)MNL_ARRAY_SIZE(netdev_xdp_act_strmap)) return NULL; return netdev_xdp_act_strmap[value]; }
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
eef9b794 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: add error checking for nested structs
Parsing nested types may return an error, propagate it. Not marking as a fix, because nothing uses YNL upstream.
Signed-off-by: Jakub Kicinski
tools: ynl-gen: add error checking for nested structs
Parsing nested types may return an error, propagate it. Not marking as a fix, because nothing uses YNL upstream.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
5605f102 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: loosen type consistency check for events
Both event and notify types are always consistent. Rewrite the condition checking if we can reuse reply types to be less picky and let notify
tools: ynl-gen: loosen type consistency check for events
Both event and notify types are always consistent. Rewrite the condition checking if we can reuse reply types to be less picky and let notify thru.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
67c65ce7 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: don't override pure nested struct
For pure structs (parsed nested attributes) we track what forms of the struct exist in request and reply directions. Make sure we don't overwrite th
tools: ynl-gen: don't override pure nested struct
For pure structs (parsed nested attributes) we track what forms of the struct exist in request and reply directions. Make sure we don't overwrite the recorded struct each time, otherwise the information is lost.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
6ad49839 | 01-Jun-2023 |
Jakub Kicinski <kuba@kernel.org> |
tools: ynl-gen: fix unused / pad attribute handling
Unused and Pad attributes don't carry information. Unused should never exist, and be rejected. Pad should be silently skipped.
Signed-off-by: Jak
tools: ynl-gen: fix unused / pad attribute handling
Unused and Pad attributes don't carry information. Unused should never exist, and be rejected. Pad should be silently skipped.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
85a4abed | 12-Apr-2023 |
Rahul Rameshbabu <rrameshbabu@nvidia.com> |
tools: ynl: Rename ethtool to ethtool.py
Make it explicit that this tool is not a drop-in replacement for ethtool. This tool is intended for testing ethtool functionality implemented in the kernel a
tools: ynl: Rename ethtool to ethtool.py
Make it explicit that this tool is not a drop-in replacement for ethtool. This tool is intended for testing ethtool functionality implemented in the kernel and should use a name that differentiates it from the ethtool utility.
Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> Link: https://lore.kernel.org/r/20230413012252.184434-2-rrameshbabu@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
f3d07b02 | 29-Mar-2023 |
Stanislav Fomichev <sdf@google.com> |
tools: ynl: ethtool testing tool
This is what I've been using to see whether the spec makes sense. A small subset of getters (mostly the unprivileged ones) is implemented. Some setters (channels) al
tools: ynl: ethtool testing tool
This is what I've been using to see whether the spec makes sense. A small subset of getters (mostly the unprivileged ones) is implemented. Some setters (channels) also work. Setters for messages with bitmasks are not implemented.
Initially I was trying to make this tool look 1:1 like real ethtool, but eventually gave up :-)
Sample output:
$ ./tools/net/ynl/ethtool enp0s31f6 Settings for enp0s31f6: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: no Supports auto-negotiation: yes Supported FEC modes: Not reported Speed: Unknown! Duplex: Unknown! (255) Auto-negotiation: on Port: Twisted Pair PHYAD: 2 Transceiver: Internal MDI-X: Unknown (auto) Current message level: drv probe link Link detected: no
Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
48993e22 | 29-Mar-2023 |
Stanislav Fomichev <sdf@google.com> |
tools: ynl: replace print with NlError
Instead of dumping the error on the stdout, make the callee and opportunity to decide what to do with it. This is mostly for the ethtool testing.
Signed-off-b
tools: ynl: replace print with NlError
Instead of dumping the error on the stdout, make the callee and opportunity to decide what to do with it. This is mostly for the ethtool testing.
Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
f036d936 | 27-Mar-2023 |
Donald Hunter <donald.hunter@gmail.com> |
tools: ynl: Add fixed-header support to ynl
Add support for netlink families that add an optional fixed header structure after the genetlink header and before any attributes. The fixed-header can be
tools: ynl: Add fixed-header support to ynl
Add support for netlink families that add an optional fixed header structure after the genetlink header and before any attributes. The fixed-header can be specified on a per op basis, or once for all operations, which serves as a default value that can be overridden.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|
b423c3c8 | 27-Mar-2023 |
Donald Hunter <donald.hunter@gmail.com> |
tools: ynl: Add C array attribute decoding to ynl
Add support for decoding C arrays from binay blobs in genetlink-legacy messages.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com> Reviewed-by
tools: ynl: Add C array attribute decoding to ynl
Add support for decoding C arrays from binay blobs in genetlink-legacy messages.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com> Reviewed-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
show more ...
|