linux/drivers/net/ethernet/intel/ice
Brett Creeley 28bf26724f ice: Implement aRFS
Enable accelerated Receive Flow Steering (aRFS). It is used to steer Rx
flows to a specific queue. This functionality is triggered by the network
stack through ndo_rx_flow_steer and requires Flow Director (ntuple on) to
function.

The fltr_info is used to add/remove/update flow rules in the HW, the
fltr_state is used to determine what to do with the filter with respect
to HW and/or SW, and the flow_id is used in co-ordination with the
network stack.

The work for aRFS is split into two paths: the ndo_rx_flow_steer
operation and the ice_service_task. The former is where the kernel hands
us an Rx SKB among other items to setup aRFS and the latter is where
the driver adds/updates/removes filter rules from HW and updates filter
state.

In the Rx path the following things can happen:
        1. New aRFS entries are added to the hash table and the state is
           set to ICE_ARFS_INACTIVE so the filter can be updated in HW
           by the ice_service_task path.
        2. aRFS entries have their Rx Queue updated if we receive a
           pre-existing flow_id and the filter state is ICE_ARFS_ACTIVE.
           The state is set to ICE_ARFS_INACTIVE so the filter can be
           updated in HW by the ice_service_task path.
        3. aRFS entries marked as ICE_ARFS_TODEL are deleted

In the ice_service_task path the following things can happen:
        1. New aRFS entries marked as ICE_ARFS_INACTIVE are added or
           updated in HW.
           and their state is updated to ICE_ARFS_ACTIVE.
        2. aRFS entries are deleted from HW and their state is updated
           to ICE_ARFS_TODEL.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Madhu Chittim <madhu.chittim@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2020-05-22 22:02:34 -07:00
..
ice_adminq_cmd.h ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_arfs.c ice: Implement aRFS 2020-05-22 22:02:34 -07:00
ice_arfs.h ice: Implement aRFS 2020-05-22 22:02:34 -07:00
ice_base.c ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_base.h ice: Add support to enable/disable all Rx queues before waiting 2020-02-15 16:39:55 -08:00
ice_common.c ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_common.h ice: add board identifier info to devlink .info_get 2020-03-21 01:02:19 -07:00
ice_controlq.c ice: Fix casting issues 2020-05-21 22:10:04 -07:00
ice_controlq.h ice: Update FW API minor version 2019-11-22 13:43:46 -08:00
ice_dcb_lib.c ice: Fix check for contiguous TCs 2020-05-21 22:10:04 -07:00
ice_dcb_lib.h ice: Don't reset and rebuild for Tx timeout on PFC enabled queue 2020-05-21 22:10:03 -07:00
ice_dcb_nl.c ice: SW DCB, report correct max TC value 2020-02-19 13:09:20 -08:00
ice_dcb_nl.h ice: Implement DCBNL support 2019-11-08 12:02:14 -08:00
ice_dcb.c ice: Trivial fixes 2020-02-12 11:49:12 -08:00
ice_dcb.h ice: Allow for delayed LLDP MIB change registration 2019-09-05 08:13:41 -07:00
ice_devids.h ice: fix define for E822 backplane device 2020-02-19 13:39:33 -08:00
ice_devlink.c ice: report netlist version in .info_get 2020-05-21 22:10:03 -07:00
ice_devlink.h ice: add a devlink region for dumping NVM contents 2020-03-26 19:39:26 -07:00
ice_ethtool_fdir.c ice: Implement aRFS 2020-05-22 22:02:34 -07:00
ice_ethtool.c ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_fdir.c ice: Enable flex-bytes support 2020-05-22 21:44:48 -07:00
ice_fdir.h ice: Enable flex-bytes support 2020-05-22 21:44:48 -07:00
ice_flex_pipe.c ice: Support IPv6 Flow Director filters 2020-05-22 21:42:20 -07:00
ice_flex_pipe.h ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_flex_type.h ice: Add support for tunnel offloads 2020-05-21 22:10:03 -07:00
ice_flow.c ice: Enable flex-bytes support 2020-05-22 21:44:48 -07:00
ice_flow.h ice: Enable flex-bytes support 2020-05-22 21:44:48 -07:00
ice_fltr.c ice: refactor filter functions 2020-05-21 22:10:04 -07:00
ice_fltr.h ice: refactor filter functions 2020-05-21 22:10:04 -07:00
ice_hw_autogen.h ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_lan_tx_rx.h ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_lib.c ice: Implement aRFS 2020-05-22 22:02:34 -07:00
ice_lib.h ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_main.c ice: Implement aRFS 2020-05-22 22:02:34 -07:00
ice_nvm.c ice: report netlist version in .info_get 2020-05-21 22:10:03 -07:00
ice_nvm.h ice: add board identifier info to devlink .info_get 2020-03-21 01:02:19 -07:00
ice_osdep.h
ice_protocol_type.h ice: Enable flex-bytes support 2020-05-22 21:44:48 -07:00
ice_sched.c ice: Fix casting issues 2020-05-21 22:10:04 -07:00
ice_sched.h ice: Add NDO callback to set the maximum per-queue bitrate 2019-11-08 11:58:49 -08:00
ice_sriov.c ice: remove unnecessary fallthrough comments 2020-02-15 16:56:48 -08:00
ice_sriov.h
ice_status.h ice: Populate TCAM filter software structures 2020-01-25 21:34:36 -08:00
ice_switch.c ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_switch.h ice: Initialize Flow Director resources 2020-05-22 21:26:37 -07:00
ice_txrx_lib.c ice: Rename build_ctob to ice_build_ctob 2020-05-21 22:10:04 -07:00
ice_txrx_lib.h ice: Rename build_ctob to ice_build_ctob 2020-05-21 22:10:04 -07:00
ice_txrx.c ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_txrx.h ice: Support IPv4 Flow Director filters 2020-05-22 21:36:27 -07:00
ice_type.h ice: Support IPv6 Flow Director filters 2020-05-22 21:42:20 -07:00
ice_virtchnl_pf.c ice: refactor filter functions 2020-05-21 22:10:04 -07:00
ice_virtchnl_pf.h ice: cleanup vf_id signedness 2020-05-21 22:10:04 -07:00
ice_xsk.c ice: Rename build_ctob to ice_build_ctob 2020-05-21 22:10:04 -07:00
ice_xsk.h ice: Use EOPNOTSUPP instead of ENOTSUPP 2020-03-10 13:10:53 -07:00
ice.h ice: Implement aRFS 2020-05-22 22:02:34 -07:00
Makefile ice: Implement aRFS 2020-05-22 22:02:34 -07:00