• Dave Ertman's avatar
    ice: Correctly deal with PFs that do not support RDMA · bfe84435
    Dave Ertman authored
    There are two cases where the current PF does not support RDMA
    functionality.  The first is if the NVM loaded on the device is set
    to not support RDMA (common_caps.rdma is false).  The second is if
    the kernel bonding driver has included the current PF in an active
    link aggregate.
    
    When the driver has determined that this PF does not support RDMA, then
    auxiliary devices should not be created on the auxiliary bus.  Without
    a device on the auxiliary bus, even if the irdma driver is present, there
    will be no RDMA activity attempted on this PF.
    
    Currently, in the reset flow, an attempt to create auxiliary devices is
    performed without regard to the ability of the PF.  There needs to be a
    check in ice_aux_plug_dev (as the central point that creates auxiliary
    devices) to see if the PF is in a state to support the functionality.
    
    When disabling and re-enabling RDMA due to the inclusion/removal of the PF
    in a link aggregate, we also need to set/clear the bit which controls
    auxiliary device creation so that a reset recovery in a link aggregate
    situation doesn't try to create auxiliary devices when it shouldn't.
    
    Fixes: f9f5301e ("ice: Register auxiliary device to provide RDMA")
    Reported-by: default avatarYongxin Liu <yongxin.liu@windriver.com>
    Signed-off-by: default avatarDave Ertman <david.m.ertman@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    bfe84435
ice_idc.c 7.29 KB