2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/net/ethernet/intel/ice
Jakub Buchocki ae67389c53 ice: Implement 'flow-type ether' rules
Add support for 'flow-type ether' Flow Director rules via ethtool.

Create packet segment info for filter configuration based on ethtool
command parameters. Reuse infrastructure already created for
ipv4 and ipv6 flows to convert packet segment into
extraction sequence, which is later used to program the filter
inside Flow Director block of the Rx pipeline.

Rules not containing masks are processed by the Flow Director,
and support the following set of input parameters in all combinations:
src, dst, proto, vlan-etype, vlan, action.

It is possible to specify address mask in ethtool parameters but only
00:00:00:00:00 and FF:FF:FF:FF:FF are valid.
The same applies to proto, vlan-etype and vlan masks:
only 0x0000 and 0xffff masks are valid.

Testing:
  (DUT) iperf3 -s
  (DUT) ethtool -U ens785f0np0 flow-type ether dst <ens785f0np0 mac> \
        action 10
  (DUT) watch 'ethtool -S ens785f0np0 | grep rx_queue'
  (LP)  iperf3 -c ${DUT_IP}

  Counters increase only for:
    'rx_queue_10_packets'
    'rx_queue_10_bytes'

Signed-off-by: Jakub Buchocki <jakubx.buchocki@intel.com>
Co-developed-by: Mateusz Pacuszka <mateuszx.pacuszka@intel.com>
Signed-off-by: Mateusz Pacuszka <mateuszx.pacuszka@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Lukasz Plachno <lukasz.plachno@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2024-04-12 10:34:24 -07:00
..
devlink ice: hold devlink lock for whole init/cleanup 2024-04-01 09:06:36 -07:00
ice_adapter.c ice: avoid the PTP hardware semaphore in gettimex64 path 2024-04-01 08:58:09 -07:00
ice_adapter.h ice: avoid the PTP hardware semaphore in gettimex64 path 2024-04-01 08:58:09 -07:00
ice_adminq_cmd.h ice: Add switch recipe reusing feature 2024-04-01 08:58:09 -07:00
ice_arfs.c net: introduce include/net/rps.h 2024-03-07 21:12:43 -08:00
ice_arfs.h
ice_base.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2024-03-28 22:50:22 -07:00
ice_base.h ice: make ice_vsi_cfg_txq() static 2024-02-02 09:13:13 -08:00
ice_cgu_regs.h
ice_common.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-04-04 18:01:07 -07:00
ice_common.h ice: cleanup line splitting for context set functions 2024-03-04 10:28:15 -08:00
ice_controlq.c ice: Add helper function ice_is_generic_mac 2024-02-12 10:06:18 -08:00
ice_controlq.h ice: reduce initial wait for control queue messages 2023-06-22 10:23:44 -07:00
ice_dcb_lib.c ice: move ice_devlink.[ch] to devlink folder 2024-04-01 08:58:09 -07:00
ice_dcb_lib.h
ice_dcb_nl.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_dcb_nl.h
ice_dcb.c ice: cleanup inconsistent code 2023-12-18 11:20:43 -08:00
ice_dcb.h
ice_ddp.c ice: Add support for PFCP hardware offload in switchdev 2024-04-01 10:49:29 +01:00
ice_ddp.h ice: Add support for E830 DDP package segment 2023-10-26 20:32:39 -07:00
ice_debugfs.c ice: Fix debugfs with devlink reload 2024-02-12 10:12:42 -08:00
ice_devids.h ice: introduce new E825C devices family 2024-02-12 09:57:06 -08:00
ice_dpll.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-03-07 10:29:36 -08: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: implement static version of ageing 2023-07-24 08:53:42 -07:00
ice_eswitch.c ice: move ice_devlink.[ch] to devlink folder 2024-04-01 08:58:09 -07:00
ice_eswitch.h ice: do switchdev slow-path Rx using PF VSI 2024-03-25 13:08:47 -07:00
ice_ethtool_fdir.c ice: Implement 'flow-type ether' rules 2024-04-12 10:34:24 -07:00
ice_ethtool.c ice: Fix freeing uninitialized pointers 2024-04-03 09:15:18 -07:00
ice_ethtool.h ice: Add 200G speed/phy type use 2023-10-26 20:32:38 -07:00
ice_fdir.c ice: Implement 'flow-type ether' rules 2024-04-12 10:34:24 -07:00
ice_fdir.h ice: Implement 'flow-type ether' rules 2024-04-12 10:34:24 -07:00
ice_flex_pipe.c ice: field prep conversion 2023-12-18 11:20:26 -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: Add support for PFCP hardware offload in switchdev 2024-04-01 10:49:29 +01: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: Implement RSS settings for GTP using ethtool 2024-03-06 09:31:49 -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_fwlog.c ice: Fix debugfs with devlink reload 2024-02-12 10:12:42 -08:00
ice_fwlog.h ice: add ability to read and configure FW log data 2023-12-14 09:50:58 -08:00
ice_gnss.c ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_gnss.h ice: make writes to /dev/gnssX synchronous 2023-06-07 10:51:58 +01:00
ice_hw_autogen.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -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: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_irq.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_irq.h ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_lag.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2024-03-28 22:50:22 -07:00
ice_lag.h ice: control default Tx rule in lag 2024-03-25 13:08:05 -07:00
ice_lan_tx_rx.h ice: Support RX hash XDP hint 2023-12-13 16:16:40 -08:00
ice_lib.c ice: move devlink port code to a separate file 2024-04-01 09:06:28 -07:00
ice_lib.h ice: do not disable Tx queues twice in ice_down() 2024-03-04 10:33:44 -08:00
ice_main.c Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2024-04-02 19:15:35 -07:00
ice_nvm.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_nvm.h
ice_osdep.h net: intel: fix old compiler regressions 2024-02-07 09:15:27 -08:00
ice_pf_vsi_vlan_ops.c
ice_pf_vsi_vlan_ops.h
ice_protocol_type.h ice: Add support for PFCP hardware offload in switchdev 2024-04-01 10:49:29 +01:00
ice_ptp_consts.h ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp_hw.c ice: avoid the PTP hardware semaphore in gettimex64 path 2024-04-01 08:58:09 -07:00
ice_ptp_hw.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -08:00
ice_ptp.c ice: fold ice_ptp_read_time into ice_ptp_gettimex64 2024-04-01 08:58:09 -07:00
ice_ptp.h ice: factor out ice_ptp_rebuild_owner() 2024-01-30 11:49:04 +01:00
ice_repr.c ice: move devlink port code to a separate file 2024-04-01 09:06:28 -07:00
ice_repr.h ice: count representor stats 2024-03-25 13:09:36 -07:00
ice_sbq_cmd.h
ice_sched.c overflow: Change DEFINE_FLEX to take __counted_by member 2024-03-22 16:25:31 -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 ice: remove eswitch changing queues algorithm 2024-03-25 13:08:04 -07:00
ice_sriov.h ice: set MSI-X vector count on VF 2023-10-20 12:53:05 +01:00
ice_switch.c ice: Add switch recipe reusing feature 2024-04-01 08:58:09 -07:00
ice_switch.h ice: Add switch recipe reusing feature 2024-04-01 08:58:09 -07:00
ice_tc_lib.c ice: Add support for PFCP hardware offload in switchdev 2024-04-01 10:49:29 +01:00
ice_tc_lib.h ice: Add support for PFCP hardware offload in switchdev 2024-04-01 10:49:29 +01:00
ice_trace.h ice: add tracepoints for the switchdev bridge 2023-07-24 08:53:49 -07:00
ice_txrx_lib.c ice: count representor stats 2024-03-25 13:09:36 -07:00
ice_txrx_lib.h ice: work on pre-XDP prog frag count 2024-01-24 16:24:06 -08:00
ice_txrx.c net: remove gfp_mask from napi_alloc_skb() 2024-03-28 18:30:40 -07:00
ice_txrx.h ice: do switchdev slow-path Rx using PF VSI 2024-03-25 13:08:47 -07:00
ice_type.h ice: Implement 'flow-type ether' rules 2024-04-12 10:34:24 -07:00
ice_vf_lib_private.h ice: replace ice_vf_recreate_vsi() with ice_vf_reconfig_vsi() 2024-01-02 11:18:32 -08:00
ice_vf_lib.c ice: remove vf->lan_vsi_num field 2024-03-04 10:25:07 -08:00
ice_vf_lib.h ice: remove vf->lan_vsi_num field 2024-03-04 10:25:07 -08:00
ice_vf_mbx.c
ice_vf_mbx.h
ice_vf_vsi_vlan_ops.c ice: fix enabling RX VLAN filtering 2024-04-03 09:16:19 -07:00
ice_vf_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_virtchnl_allowlist.c ice: virtchnl: stop pretending to support RSS over AQ or registers 2024-03-05 09:49:21 -08:00
ice_virtchnl_allowlist.h
ice_virtchnl_fdir.c ice: remove unnecessary duplicate checks for VF VSI ID 2024-03-04 10:23:19 -08:00
ice_virtchnl_fdir.h
ice_virtchnl.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-03-07 10:29:36 -08:00
ice_virtchnl.h ice: use relative VSI index for VFs instead of PF VSI number 2024-03-04 10:24:13 -08:00
ice_vlan_mode.c ice: define meta data to match in switch 2023-05-19 08:57:43 -07:00
ice_vlan_mode.h
ice_vlan.h
ice_vsi_vlan_lib.c ice: fix pre-shifted bit usage 2023-12-18 11:20:43 -08:00
ice_vsi_vlan_lib.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_vsi_vlan_ops.c ice: remove switchdev control plane VSI 2024-03-25 13:08:05 -07:00
ice_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_xsk.c net: remove gfp_mask from napi_alloc_skb() 2024-03-28 18:30:40 -07:00
ice_xsk.h
ice.h ice: add ice_adapter for shared data across PFs on the same NIC 2024-04-01 08:58:09 -07:00
Makefile ice: move devlink port code to a separate file 2024-04-01 09:06:28 -07:00