Re: Use of ENOTSUPP in drivers?
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2014-01-12 21:19:40
Le dimanche 12 janvier 2014, 20:47:02 Ben Hutchings a écrit :
On Sun, 2014-01-12 at 19:57 +0100, Sabrina Dubroca wrote:quoted
Thu, 2 Jan 2014 12:01:31 +0000, Ben Hutchings wrote:quoted
Never return error code ENOTSUPP; it's *not* the same thing as ENOTSUP in userland and is not part of the userland ABI. I would use EINVAL here.I've found a few ethernet drivers that return -ENOTSUPP in various functions. In particular, some ethtool functions or ioctl's. Ben's message makes me think that the ethtool functions and ioctl's should be modified. There are other occurences, mostly in functions related to device initialization. I didn't manage to track down exactly from where some of them are called, and I don't know if ENOTSUPP is okay in these. I've included the complete list of occurences (based on net-next) from drivers/net/ethernet in patch form at the end, if that's more convenient than the file/function list. This is not meant to be applied. Do these (or part of them) need to be patched? Or is there something I'm missing?[...] I believe they should all be patched. According to include/linux/errno.h, ENOTSUPP is meant for use in the NFSv3 code only. (But it's apparently erroneously used *all over* the tree, not just in net drivers!)
Most other drivers use -EOPNOTSUPP, which is arguably as bad as -ENOTSUPP, since the comment about it says: * Operation not supported on transport endpoint * But at least changing -ENOTSUPP to -EOPNOTSUPP until something better which is not protocol/endpoint specific is agreed on might be better for consistency? -- Florian