Thread (27 messages) 27 messages, 7 authors, 2019-04-23

Re: [RFC PATCH net-next 1/3] net: rtnetlink: Add link-down reason to RTNL messages

From: Petr Machata <hidden>
Date: 2019-03-19 10:18:10

Stephen Hemminger [off-list ref] writes:
On Mon, 18 Mar 2019 15:02:53 +0100
Andrew Lunn [off-list ref] wrote:
quoted
On Mon, Mar 18, 2019 at 01:15:41PM +0000, Petr Machata wrote:
quoted
Andrew Lunn [off-list ref] writes:
quoted
quoted
+enum rtnl_link_down_reason_major {
+	RTNL_LDR_OTHER,
Does 'other' make any sense? Seem better to just not report anything
at all, or add a comment that more reasons should be added at the end
to reflect whatever the hardware or software can determine.
You still have the minor code to give you some information.
The problem i have with OTHER, is that you know it is not NO_CABLE,
UNSUPPORTED_CABLE, AUTONEG_FAILURE, etc. But for people to know what
OTHER cannot be, they have to know all the codes.

But then later, some other driver writer does the right thing, adds a
new value to the end for a code they can detect. Say for example
SFP_OVERHEATED.  This happened to be what the previous driver was
using for OTHER. Now we have one driver returning SFP_OVERHEATED and
the older driver OTHER. So OTHER no longer actually mean 'other', it
just means something random, which could actually be the same as one
of the listed codes.

You can stop this from happening by not having OTHER. Always add a new
code if there is something you can report, but there currently is no
code for it. And the userspace tool should just print the decimal
value if it does not know what text to translate it into.
Gut feel is that enumerated values are going to grow and grow and be
long term API headache.

Would it be possible to use a string like the external ack error
message?
It would, but then if any automated tools want to make use of it beyond
just blindly displaying it, they will need to parse it with all the
usual problems. In the end the string itself becomes the API anyway.

Adding a string would make sense as an extra piece of information, not
as the primary channel. Extack is like this as well, the primary channel
there is errno.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help