mirror_ubuntu-kernels/drivers/net/ethernet/intel/ice
Jeff Guo 352e9bf238 ice: enable symmetric-xor RSS for Toeplitz hash function
Allow the user to set the symmetric Toeplitz hash function via:

    # ethtool -X eth0 hfunc toeplitz symmetric-xor

All existing RSS configurations will be converted to symmetric unless they
have a non-symmetric field (other than IP src/dst and L4 src/dst ports)
used for hashing. The driver will reject a new RSS configuration if such
a field is requested.

The hash function in the E800 NICs is set per-VSI and a specific AQ
command is needed to modify the hash function. Use the AQ command to
enable setting the symmetric Toeplitz RSS hash function for any VSI
in the new ice_set_rss_hfunc().

When the Symmetric Toeplitz hash function is used, the hardware sets the
input set of the RSS (Toeplitz) algorithm to be the XOR of the fields
index by HSYMM and the fields index by the INSET registers. We use this
to create a symmetric hash by setting the HSYMM registers to point to
their counterparts in the INSET registers:

 HSYMM [src_fv] = dst_fv;
 HSYMM [dst_fv] = src_fv;

where src_fv and dst_fv are the indexes of the protocol's src and dst
fields.

Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Co-developed-by: Ahmed Zaki <ahmed.zaki@intel.com>
Signed-off-by: Ahmed Zaki <ahmed.zaki@intel.com>
Link: https://lore.kernel.org/r/20231213003321.605376-8-ahmed.zaki@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2023-12-13 22:07:17 -08:00
..
ice_adminq_cmd.h ice: fix ICE_AQ_VSI_Q_OPT_RSS_* register values 2023-12-13 22:07:16 -08:00
ice_arfs.c
ice_arfs.h
ice_base.c ice: Add support in the driver for associating queue with napi 2023-12-04 18:04:05 -08:00
ice_base.h
ice_cgu_regs.h
ice_common.c ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00
ice_common.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_controlq.c
ice_controlq.h
ice_dcb_lib.c
ice_dcb_lib.h
ice_dcb_nl.c ice: enforce no DCB config changing when in bond 2023-07-27 10:56:32 -07:00
ice_dcb_nl.h
ice_dcb.c
ice_dcb.h
ice_ddp.c ice: fix DDP package download for packages without signature segment 2023-11-13 10:56:58 -08:00
ice_ddp.h ice: Add support for E830 DDP package segment 2023-10-26 20:32:39 -07:00
ice_devids.h ice: Add E830 device IDs, MAC type and registers 2023-10-26 20:32:38 -07:00
ice_devlink.c ice: add CGU info to devlink info callback 2023-12-05 11:40:12 +01:00
ice_devlink.h ice: set Tx topology every time new repr is added 2023-11-13 11:42:14 -08:00
ice_dpll.c dpll: remove leftover mode_supported() op and use mode_get() instead 2023-12-13 10:31:19 +00:00
ice_dpll.h ice: dpll: fix check for dpll input priority range 2023-11-13 10:02:15 -08:00
ice_eswitch_br.c ice: make representor code generic 2023-11-13 11:42:14 -08:00
ice_eswitch_br.h
ice_eswitch.c ice: fix error code in ice_eswitch_attach() 2023-11-28 20:09:11 -08:00
ice_eswitch.h ice: reserve number of CP queues 2023-11-13 11:42:15 -08:00
ice_ethtool_fdir.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_ethtool.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_ethtool.h ice: Add 200G speed/phy type use 2023-10-26 20:32:38 -07:00
ice_fdir.c
ice_fdir.h
ice_flex_pipe.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flex_pipe.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flex_type.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flow.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flow.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_fltr.c
ice_fltr.h
ice_fw_update.c ice: split ice_aq_wait_for_event() func into two 2023-08-17 13:59:46 -07:00
ice_fw_update.h
ice_gnss.c ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_gnss.h
ice_hw_autogen.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_hwmon.c ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00
ice_hwmon.h ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00
ice_idc_int.h
ice_idc.c
ice_irq.c
ice_irq.h
ice_lag.c ice: Fix VF Reset paths when interface in a failed over aggregate 2023-11-29 19:55:49 -08:00
ice_lag.h ice: Fix VF Reset paths when interface in a failed over aggregate 2023-11-29 19:55:49 -08:00
ice_lan_tx_rx.h
ice_lib.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_lib.h ice: Add support in the driver for associating queue with napi 2023-12-04 18:04:05 -08:00
ice_main.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_nvm.c
ice_nvm.h
ice_osdep.h
ice_pf_vsi_vlan_ops.c
ice_pf_vsi_vlan_ops.h
ice_protocol_type.h ice: Rename enum ice_pkt_flags values 2023-08-07 13:01:29 -07:00
ice_ptp_consts.h ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp_hw.c ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp_hw.h ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp.c ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp.h ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_repr.c ice: add VF representors one by one 2023-11-13 11:42:14 -08:00
ice_repr.h ice: add VF representors one by one 2023-11-13 11:42:14 -08:00
ice_sbq_cmd.h
ice_sched.c ice: drop two params of ice_aq_move_sched_elems() 2023-10-03 12:17:11 -07:00
ice_sched.h ice: drop two params of ice_aq_move_sched_elems() 2023-10-03 12:17:11 -07:00
ice_sriov.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-12-07 17:53:17 -08:00
ice_sriov.h ice: set MSI-X vector count on VF 2023-10-20 12:53:05 +01:00
ice_switch.c ice: make use of DEFINE_FLEX() in ice_switch.c 2023-10-03 12:17:11 -07:00
ice_switch.h ice: remove unused methods 2023-08-17 10:43:06 -07:00
ice_tc_lib.c ice: rename switchdev to eswitch 2023-11-13 11:42:12 -08:00
ice_tc_lib.h
ice_trace.h ice: add tracepoints for the switchdev bridge 2023-07-24 08:53:49 -07:00
ice_txrx_lib.c net: Tree wide: Replace xdp_do_flush_map() with xdp_do_flush(). 2023-10-03 07:34:51 -07:00
ice_txrx_lib.h
ice_txrx.c ice: remove ptp_tx ring parameter flag 2023-11-23 15:27:32 +01:00
ice_txrx.h ice: remove ptp_tx ring parameter flag 2023-11-23 15:27:32 +01:00
ice_type.h ice: refactor the FD and RSS flow ID generation 2023-12-13 22:07:17 -08:00
ice_vf_lib_private.h ice: refactor ice_vf_lib to make functions static 2023-08-17 10:43:53 -07:00
ice_vf_lib.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-11-30 16:11:19 -08:00
ice_vf_lib.h ice: make representor code generic 2023-11-13 11:42:14 -08:00
ice_vf_mbx.c
ice_vf_mbx.h
ice_vf_vsi_vlan_ops.c ice: Restore fix disabling RX VLAN filtering 2023-12-05 10:51:22 -08:00
ice_vf_vsi_vlan_ops.h
ice_virtchnl_allowlist.c
ice_virtchnl_allowlist.h
ice_virtchnl_fdir.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_virtchnl_fdir.h
ice_virtchnl.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_virtchnl.h
ice_vlan_mode.c
ice_vlan_mode.h
ice_vlan.h
ice_vsi_vlan_lib.c
ice_vsi_vlan_lib.h
ice_vsi_vlan_ops.c
ice_vsi_vlan_ops.h
ice_xsk.c ice: make use of DEFINE_FLEX() for struct ice_aqc_add_tx_qgrp 2023-10-03 12:17:11 -07:00
ice_xsk.h
ice.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
Makefile ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00