sdp_warn(sk, "Unable to allocate PD: %d.\n", rc);
goto err_pd;
}
-
+
mr = ib_get_dma_mr(pd, IB_ACCESS_LOCAL_WRITE);
if (IS_ERR(mr)) {
rc = PTR_ERR(mr);
return 0;
}
-static int sdp_response_handler(struct sock *sk, struct rdma_cm_event *event)
+static int sdp_response_handler(struct sock *sk, struct rdma_cm_id *id,
+ struct rdma_cm_event *event)
{
struct sdp_hah *h;
+ struct sockaddr_in *dst_addr;
sdp_dbg(sk, "%s\n", __func__);
sk->sk_state = TCP_ESTABLISHED;
sk->sk_state_change(sk);
sk_wake_async(sk, 0, POLL_OUT);
+
+ dst_addr = (struct sockaddr_in *)&id->route.addr.dst_addr;
+ inet_sk(sk)->dport = dst_addr->sin_port;
+ inet_sk(sk)->daddr = dst_addr->sin_addr.s_addr;
+
return 0;
}
struct sock *sk;
struct sdp_hah hah;
struct sdp_hh hh;
-
+
int rc = 0;
sk = id->context;
break;
case RDMA_CM_EVENT_CONNECT_RESPONSE:
sdp_dbg(sk, "RDMA_CM_EVENT_CONNECT_RESPONSE\n");
- rc = sdp_response_handler(sk, event);
+ rc = sdp_response_handler(sk, id, event);
if (rc)
rdma_reject(id, NULL, 0);
else