• Alan Brady's avatar
    i40evf: fix ring to vector mapping · c97fc9b6
    Alan Brady authored
    The current implementation for mapping queues to vectors is broken
    because it attempts to map each Tx and Rx ring to its own vector,
    however we use combined queues so we should actually be mapping the
    Tx/Rx rings together on one vector.
    
    Also in the current implementation, in the case where we have more
    queues than vectors, we attempt to group the queues together into
    'chunks' and map each 'chunk' of queues to a vector.  Chunking them
    together would be more ideal if, and only if, we only had RSS because of
    the way the hashing algorithm works but in the case of a future patch
    that enables VF ADq, round robin assignment is better and still works
    with RSS.
    
    This patch resolves both those issues and simplifies the code needed to
    accomplish this.  Instead of treating the case where we have more queues
    than vectors as special, if we notice our vector index is greater than
    vectors, reset the vector index to zero and continue mapping.  This
    should ensure that in both cases, whether we have enough vectors for
    each queue or not, the queues get appropriately mapped.
    Signed-off-by: default avatarAlan Brady <alan.brady@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    c97fc9b6
i40evf_main.c 84.1 KB