ethtool: Support for configurable RSS hash function

This patch extends the set/get_rxfh ethtool-options for getting or
setting the RSS hash function.

It modifies drivers implementation of set/get_rxfh accordingly.

This change also delegates the responsibility of checking whether a
modification to a certain RX flow hash parameter is supported to the
driver implementation of set_rxfh.

User-kernel API is done through the new hfunc bitmask field in the
ethtool_rxfh struct. A bit set in the hfunc field is corresponding to an
index in the new string-set ETH_SS_RSS_HASH_FUNCS.

Got approval from most of the relevant driver maintainers that their
driver is using Toeplitz, and for the few that didn't answered, also
assumed it is Toeplitz.

Cc: Tom Lendacky <[email protected]>
Cc: Ariel Elior <[email protected]>
Cc: Prashant Sreedharan <[email protected]>
Cc: Michael Chan <[email protected]>
Cc: Hariprasad S <[email protected]>
Cc: Sathya Perla <[email protected]>
Cc: Subbu Seetharaman <[email protected]>
Cc: Ajit Khaparde <[email protected]>
Cc: Jeff Kirsher <[email protected]>
Cc: Jesse Brandeburg <[email protected]>
Cc: Bruce Allan <[email protected]>
Cc: Carolyn Wyborny <[email protected]>
Cc: Don Skidmore <[email protected]>
Cc: Greg Rose <[email protected]>
Cc: Matthew Vick <[email protected]>
Cc: John Ronciak <[email protected]>
Cc: Mitch Williams <[email protected]>
Cc: Amir Vadai <[email protected]>
Cc: Solarflare linux maintainers <[email protected]>
Cc: Shradha Shah <[email protected]>
Cc: Shreyas Bhatewara <[email protected]>
Cc: "VMware, Inc." <[email protected]>
Cc: Ben Hutchings <[email protected]>
Signed-off-by: Eyal Perry <[email protected]>
Signed-off-by: Amir Vadai <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
14 files changed