|
@@ -1002,6 +1002,7 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
|
|
|
union cma_ip_addr *src, *dst;
|
|
|
__be16 port;
|
|
|
u8 ip_ver;
|
|
|
+ int ret;
|
|
|
|
|
|
if (cma_get_net_info(ib_event->private_data, listen_id->ps,
|
|
|
&ip_ver, &port, &src, &dst))
|
|
@@ -1026,10 +1027,11 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
|
|
|
if (rt->num_paths == 2)
|
|
|
rt->path_rec[1] = *ib_event->param.req_rcvd.alternate_path;
|
|
|
|
|
|
- ib_addr_set_sgid(&rt->addr.dev_addr, &rt->path_rec[0].sgid);
|
|
|
ib_addr_set_dgid(&rt->addr.dev_addr, &rt->path_rec[0].dgid);
|
|
|
- ib_addr_set_pkey(&rt->addr.dev_addr, be16_to_cpu(rt->path_rec[0].pkey));
|
|
|
- rt->addr.dev_addr.dev_type = RDMA_NODE_IB_CA;
|
|
|
+ ret = rdma_translate_ip(&id->route.addr.src_addr,
|
|
|
+ &id->route.addr.dev_addr);
|
|
|
+ if (ret)
|
|
|
+ goto destroy_id;
|
|
|
|
|
|
id_priv = container_of(id, struct rdma_id_private, id);
|
|
|
id_priv->state = CMA_CONNECT;
|