• Yossi Etigin's avatar
    RDMA/cma: Create cm id even when IB port is down · d2ca39f2
    Yossi Etigin authored
    When doing rdma_resolve_addr(), if the relevant IB port is down, the
    function fails and the cm_id is not bound to the correct device.
    Therefore, application does not have a device handle and cannot wait
    for the port to become active.  The function fails because the
    underlying IPoIB interface is not joined to the broadcast group and
    therefore the SA does not have a multicast record to take a Q_Key
    from.
    
    The fix is to use lazy Q_Key resolution - cma_set_qkey() will set
    id_priv->qkey if it was not set, and will be called just before the
    Q_Key is really required.
    Signed-off-by: default avatarYossi Etigin <yosefe@voltaire.com>
    Acked-by: default avatarSean Hefty <sean.hefty@intel.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    d2ca39f2
cma.c 74.2 KB