[Intel-wired-lan] [PATCH S42 7/7] ice: Implement aRFS

Bowers, AndrewX andrewx.bowers at intel.com
Tue May 19 16:38:05 UTC 2020


> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf Of
> Tony Nguyen
> Sent: Monday, May 11, 2020 6:02 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH S42 7/7] ice: Implement aRFS
> 
> From: Brett Creeley <brett.creeley at intel.com>
> 
> Enable accelerated Receive Flow Steering (aRFS). It is used to steer Rx flows
> to a specific queue. This functionality is triggerred 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 at intel.com>
> Signed-off-by: Madhu Chittim <madhu.chittim at intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen at intel.com>
> ---
>  drivers/net/ethernet/intel/ice/Makefile       |   1 +
>  drivers/net/ethernet/intel/ice/ice.h          |  14 +
>  drivers/net/ethernet/intel/ice/ice_arfs.c     | 663 ++++++++++++++++++
>  drivers/net/ethernet/intel/ice/ice_arfs.h     |  82 +++
>  .../net/ethernet/intel/ice/ice_ethtool_fdir.c |   8 +-
>  drivers/net/ethernet/intel/ice/ice_lib.c      |   1 +
>  drivers/net/ethernet/intel/ice/ice_main.c     |  48 +-
>  7 files changed, 805 insertions(+), 12 deletions(-)  create mode 100644
> drivers/net/ethernet/intel/ice/ice_arfs.c
>  create mode 100644 drivers/net/ethernet/intel/ice/ice_arfs.h

Tested-by: Andrew Bowers <andrewx.bowers at intel.com>




More information about the Intel-wired-lan mailing list