• Alexander Duyck's avatar
    ixgbe: Allocate rings as part of the q_vector · de88eeeb
    Alexander Duyck authored
    This patch makes the rings a part of the q_vector directly instead of
    indirectly.  Specifically on x86 systems this helps to avoid any cache
    set conflicts between the q_vector, the tx_rings, and the rx_rings as the
    critical stride is 4K and in order to cross that boundary you would need to
    have over 15 rings on a single q_vector.
    
    In addition this allows for smarter allocations when Flow Director is
    enabled.  Previously Flow Director would set the irq_affinity hints based
    on the CPU and was still using a node interleaving approach which on some
    systems would end up with the two values mismatched.  With the new approach
    we can set the affinity for the irq_vector and use the CPU for that
    affinity to determine the node value for the node and the rings.
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
    Tested-by: default avatarStephen Ko <stephen.s.ko@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    de88eeeb
ixgbe_main.c 224 KB