ice: report hash type such as L2/L3/L4
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Tue, 23 Feb 2021 23:47:05 +0000 (15:47 -0800)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 18 Jun 2021 15:59:46 +0000 (08:59 -0700)
commitdda90cb90a5ced4ebfb75e3f06d59fa1abb58f65
treecaa634f748ecf8a77d8eb29f09d43eb4dfd47259
parent8fe088bd4fd12f4c8899b51d5bc3daad98767d49
ice: report hash type such as L2/L3/L4

The hardware is reporting the type of the hash used for RSS
as a PTYPE field in the receive descriptor. Use this value to set
the skb packet hash type by extending the hash type table to
cover all 10-bits of possible values (requiring some variables
to be changed from u8 to u16), and then use that table to convert
to one of the possible values in enum pkt_hash_types.

While we're here, remove the unused ptype struct value, which
makes table init easier for the zero entries, and use ranged
initializer to remove a bunch of code (works with gcc and clang).

Without this change, the kernel will recalculate the hash in software,
which can consume extra CPU cycles.

Co-developed-by: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
drivers/net/ethernet/intel/ice/ice_txrx.c
drivers/net/ethernet/intel/ice/ice_txrx_lib.c
drivers/net/ethernet/intel/ice/ice_txrx_lib.h
drivers/net/ethernet/intel/ice/ice_xsk.c