Stephen Hemminger <step...@networkplumber.org> writes:
> On Tue, 19 Mar 2019 10:18:00 +0000 > Petr Machata <pe...@mellanox.com> wrote: > >> Stephen Hemminger <step...@networkplumber.org> writes: >> >> > On Mon, 18 Mar 2019 15:02:53 +0100 >> > Andrew Lunn <and...@lunn.ch> wrote: >> > >> >> On Mon, Mar 18, 2019 at 01:15:41PM +0000, Petr Machata wrote: >> >> > >> >> > Andrew Lunn <and...@lunn.ch> writes: >> >> > >> >> > >> +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. > > The problem with codes is that without some standard (like IETF) the > values are very system specific and likely to get lots of of version churn. I think this would be even worse with just strings.