ethtool development

Contact addresses

Maintainer
Ben Hutchings <bhutchings@solarflare.com>
Mailing list
netdev@vger.kernel.org

Repository

The main git repository is git://git.kernel.org/pub/scm/network/ethtool/ethtool.git (gitweb view).

User interface

The ethtool user interface leaves something to be desired. In particular, it is currently restricted to the English language. I would appreciate patches to support translation. The output for the "C" locale must not be changed, as there are undoubtedly many scripts that grep the output and depend on the current text.

The ethtool utility is intended for use by system administrators and network administrators, and not primarily by kernel developers. It should not expose unpleasant details of the ethtool API to the user if this can be avoided. For example, the user should not need to know the unfortunate history of and subtle differences between the RX n-tuple versus RX NFC commands. If the user runs ethtool -U with a filter specification that can be represented through either ETHTOOL_SRXNTUPLE or ETHTOOL_RXCLSRLINS, we will try both commands in turn.

Many existing options return exit codes indicating specific failure points. This is not sustainable, as exit codes are 8-bit and shells assign special meaning to values from 127 upward. Any new failure points must produce an exit code of 1.

All new features must be documented in the manual page (ethtool.8.in), and usually in the help text for the relevant option(s).

Coding style

Coding style is broadly similar to the kernel. You can use scripts/checkpatch.pl from the kernel to find style errors before I complain about them!

Submitting patches

Please follow the same procedure as for the kernel, including the Developer's Certificate of Origin. The relevant maintainer and mailing list addresses are shown above.

If you need new definitions from the kernel's <linux/ethtool.h>, run make headers_install in the kernel tree and copy the resulting file usr/include/linux/ethtool.h into ethtool's ethtool-copy.h. Commit this change before your other changes, including a description of the head of the kernel tree you used.

Documentation and code must be kept synchronised, i.e. when you add or change a feature you must update the help text and manual page in the same patch.