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; }
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; }