• Brett Creeley's avatar
    ice: Fix MSI-X vector fallback logic · f3fe97f6
    Brett Creeley authored
    The current MSI-X enablement logic tries to enable best-case MSI-X
    vectors and if that fails we only support a bare-minimum set. This
    includes a single MSI-X for 1 Tx and 1 Rx queue and a single MSI-X
    for the OICR interrupt. Unfortunately, the driver fails to load when we
    don't get as many MSI-X as requested for a couple reasons.
    
    First, the code to allocate MSI-X in the driver tries to allocate
    num_online_cpus() MSI-X for LAN traffic without caring about the number
    of MSI-X actually enabled/requested from the kernel for LAN traffic.
    So, when calling ice_get_res() for the PF VSI, it returns failure
    because the number of available vectors is less than requested. Fix
    this by not allowing the PF VSI to allocation  more than
    pf->num_lan_msix MSI-X vectors and pf->num_lan_msix Rx/Tx queues.
    Limiting the number of queues is done because we don't want more than
    1 Tx/Rx queue per interrupt due to performance conerns.
    
    Second, the driver assigns pf->num_lan_msix = 2, to account for LAN
    traffic and the OICR. However, pf->num_lan_msix is only meant for LAN
    MSI-X. This is causing a failure when the PF VSI tries to
    allocate/reserve the minimum pf->num_lan_msix because the OICR MSI-X has
    already been reserved, so there may not be enough MSI-X vectors left.
    Fix this by setting pf->num_lan_msix = 1 for the failure case. Then the
    ICE_MIN_MSIX accounts for the LAN MSI-X and the OICR MSI-X needed for
    the failure case.
    
    Update the related defines used in ice_ena_msix_range() to align with
    the above behavior and remove the unused RDMA defines because RDMA is
    currently not supported. Also, remove the now incorrect comment.
    
    Fixes: 152b978a ("ice: Rework ice_ena_msix_range")
    Signed-off-by: default avatarBrett Creeley <brett.creeley@intel.com>
    Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    f3fe97f6
ice_lib.c 81.2 KB