Example #1
0
ucs_status_t uct_ud_mlx5_ep_connect_to_ep(uct_ep_h tl_ep,
                                          const struct sockaddr *addr)
{
    ucs_status_t status;
    uct_ud_mlx5_ep_t *ep = ucs_derived_of(tl_ep, uct_ud_mlx5_ep_t);
    uct_ud_mlx5_iface_t *iface = ucs_derived_of(tl_ep->iface,
                                                uct_ud_mlx5_iface_t);
    const uct_sockaddr_ib_t *if_addr = (const uct_sockaddr_ib_t *)addr;

    ucs_trace_func("");
    status = uct_ud_ep_connect_to_ep(&ep->super, addr);
    if (status != UCS_OK) {
        return status;
    }

    status = uct_ud_mlx5_ep_create_ah(iface, ep, if_addr);
    if (status != UCS_OK) {
        return status;
    }

    return UCS_OK;
}
Example #2
0
ucs_status_t uct_ud_verbs_ep_connect_to_ep(uct_ep_h tl_ep,
                                           const struct sockaddr *addr)
{
    ucs_status_t status;
    struct ibv_ah *ah;
    uct_ud_verbs_ep_t *ep = ucs_derived_of(tl_ep, uct_ud_verbs_ep_t);
    uct_ib_iface_t *iface = ucs_derived_of(tl_ep->iface, uct_ib_iface_t);
    const uct_sockaddr_ib_t *if_addr = (const uct_sockaddr_ib_t *)addr;

    status = uct_ud_ep_connect_to_ep(&ep->super, addr);
    if (status != UCS_OK) {
        return status;
    }

    ucs_assert_always(ep->ah == NULL);
    ah = uct_ib_create_ah(iface, if_addr->lid);
    if (ah == NULL) {
        ucs_error("failed to create address handle: %m");
        return UCS_ERR_INVALID_ADDR;
    }
    ep->ah = ah;
    return UCS_OK;
}