• Brett Creeley's avatar
    ice: Implement aRFS · 28bf2672
    Brett Creeley authored
    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: default avatarBrett Creeley <brett.creeley@intel.com>
    Signed-off-by: default avatarMadhu Chittim <madhu.chittim@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    28bf2672
ice_arfs.c 18.9 KB