• Alexander Duyck's avatar
    i40e/i40evf: Clean up logic for adaptive ITR · 71dc3719
    Alexander Duyck authored
    The logic for dynamic ITR update is confusing at best as there were odd
    paths chosen for how to find the rings associated with a given queue based
    on the vector index and other inconsistencies throughout the code.
    
    This patch is an attempt to clean up the logic so that we can more easily
    understand what is going on. Specifically if there is a Rx or Tx ring that
    is enabled in dynamic mode on the q_vector it is allowed to override the
    other side of the interrupt moderation. While it isn't correct all this
    patch is doing is cleaning up the logic for now so that when we come
    through and fix it we can more easily identify that this is wrong.
    
    The other big change made here is that we replace references to:
    	vsi->rx_rings[q_vector->v_idx]->itr_setting
    with:
    	q_vector->rx.ring->itr_setting
    
    The general idea is we can avoid the long pointer chase since just
    accessing q_vector->rx.ring is a single pointer access versus having to
    chase down vsi->rx_rings, and then finding the pointer in the array, and
    finally chasing down the itr_setting from there.
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    71dc3719
i40e_txrx.c 64.7 KB