Hangbin Liu
e396694055
tools: ynl: avoid print_field when there is no reply
...
When request a none support device operation, there will be no reply.
In this case, the len(desc) check will always be true, causing print_field
to enter an infinite loop and crash the program. Example reproducer:
# ethtool.py -c veth0
To fix this, return immediately if there is no reply.
Fixes: f3d07b02b2 ("tools: ynl: ethtool testing tool")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com >
Link: https://patch.msgid.link/20251024125853.102916-1-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-10-27 18:16:49 -07:00
Matthieu Baerts (NGI0)
389712b0da
tools: ynl: remove unused imports
...
These imports are not used according to Ruff, and can be safely removed.
This is linked to Ruff error F401 [1]:
Unused imports add a performance overhead at runtime, and risk
creating import cycles. They also increase the cognitive load of
reading the code.
There is one exception with 'YnlDocGenerator' which is added in __all__:
it is used by ynl_gen_rst.py.
Link: https://docs.astral.sh/ruff/rules/unused-import/ [1]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org >
Reviewed-by: Donald Hunter <donald.hunter@gmail.com >
Reviewed-by: Asbjørn Sloth Tønnesen <ast@fiberby.net >
Link: https://patch.msgid.link/20250909-net-next-ynl-ruff-v1-5-238c2bccdd99@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-09-10 18:08:59 -07:00
Matthieu Baerts (NGI0)
d8e0e25406
tools: ynl: remove f-string without any placeholders
...
'f-strings' without any placeholders don't need to be marked as such
according to Ruff. This 'f' can be safely removed.
This is linked to Ruff error F541 [1]:
f-strings are a convenient way to format strings, but they are not
necessary if there are no placeholder expressions to format. In this
case, a regular string should be used instead, as an f-string without
placeholders can be confusing for readers, who may expect such a
placeholder to be present.
Link: https://docs.astral.sh/ruff/rules/f-string-missing-placeholders/ [1]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org >
Reviewed-by: Donald Hunter <donald.hunter@gmail.com >
Reviewed-by: Asbjørn Sloth Tønnesen <ast@fiberby.net >
Link: https://patch.msgid.link/20250909-net-next-ynl-ruff-v1-4-238c2bccdd99@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-09-10 18:08:59 -07:00
Matthieu Baerts (NGI0)
02962ddb39
tools: ynl: remove assigned but never used variable
...
These variables are assigned but never used according to Ruff. They can
then be safely removed.
This is linked to Ruff error F841 [1]:
A variable that is defined but not used is likely a mistake, and
should be removed to avoid confusion.
Link: https://docs.astral.sh/ruff/rules/unused-variable/ [1]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org >
Reviewed-by: Donald Hunter <donald.hunter@gmail.com >
Reviewed-by: Asbjørn Sloth Tønnesen <ast@fiberby.net >
Link: https://patch.msgid.link/20250909-net-next-ynl-ruff-v1-3-238c2bccdd99@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-09-10 18:08:59 -07:00
Matthieu Baerts (NGI0)
287bc89bb4
tools: ynl: avoid bare except
...
This 'except' was used without specifying the exception class according
to Ruff. Here, only the ValueError class is expected and handled.
This is linked to Ruff error E722 [1]:
A bare except catches BaseException which includes KeyboardInterrupt,
SystemExit, Exception, and others. Catching BaseException can make it
hard to interrupt the program (e.g., with Ctrl-C) and can disguise
other problems.
Link: https://docs.astral.sh/ruff/rules/bare-except/ [1]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org >
Reviewed-by: Donald Hunter <donald.hunter@gmail.com >
Reviewed-by: Asbjørn Sloth Tønnesen <ast@fiberby.net >
Link: https://patch.msgid.link/20250909-net-next-ynl-ruff-v1-2-238c2bccdd99@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-09-10 18:08:59 -07:00
Hangbin Liu
45375814eb
tools/net/ynl: ethtool: fix crash when Hardware Clock info is missing
...
Fix a crash in the ethtool YNL implementation when Hardware Clock information
is not present in the response. This ensures graceful handling of devices or
drivers that do not provide this optional field. e.g.
Traceback (most recent call last):
File "/net/tools/net/ynl/pyynl/./ethtool.py", line 438, in <module>
main()
~~~~^^
File "/net/tools/net/ynl/pyynl/./ethtool.py", line 341, in main
print(f'PTP Hardware Clock: {tsinfo["phc-index"]}')
~~~~~~^^^^^^^^^^^^^
KeyError: 'phc-index'
Fixes: f3d07b02b2 ("tools: ynl: ethtool testing tool")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com >
Acked-by: Stanislav Fomichev <sdf@fomichev.me >
Link: https://patch.msgid.link/20250508035414.82974-1-liuhangbin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-05-09 15:03:07 -07:00
Donald Hunter
b1b62d6d33
tools/net/ynl: ethtool: support spec load from install location
...
Replace hard-coded paths for spec and schema with lookup functions so
that ethtool.py will work in-tree or when installed.
Signed-off-by: Donald Hunter <donald.hunter@gmail.com >
Link: https://patch.msgid.link/20250111154803.7496-2-donald.hunter@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-01-13 19:06:10 -08:00
Jan Stancek
ab88c2b373
tools: ynl: move python code to separate sub-directory
...
Move python code to a separate directory so it can be
packaged as a python module. Updates existing references
in selftests and docs.
Also rename ynl-gen-[c|rst] to ynl_gen_[c|rst], avoid
dashes as these prevent easy imports for entrypoints.
Signed-off-by: Jan Stancek <jstancek@redhat.com >
Reviewed-by: Donald Hunter <donald.hunter@gmail.com >
Link: https://patch.msgid.link/a4151bad0e6984e7164d395125ce87fd2e048bf1.1736343575.git.jstancek@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2025-01-09 12:53:27 -08:00