From: Amiram Perlmutter Date: Tue, 22 Aug 2006 15:59:10 +0000 (+0300) Subject: IB/sdp: set inet's daddr and dport on active side as part of connect X-Git-Tag: v4.1.12-92~264^2~5^2~385 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d1fc1cbdc826b903f0232e3a0bca4e2e73e9cfcb;p=users%2Fjedix%2Flinux-maple.git IB/sdp: set inet's daddr and dport on active side as part of connect Signed-off-by: Amiram Perlmutter --- diff --git a/drivers/infiniband/ulp/sdp/sdp_cma.c b/drivers/infiniband/ulp/sdp/sdp_cma.c index ef64c717630e2..12bff96668709 100644 --- a/drivers/infiniband/ulp/sdp/sdp_cma.c +++ b/drivers/infiniband/ulp/sdp/sdp_cma.c @@ -137,7 +137,7 @@ int sdp_init_qp(struct sock *sk, struct rdma_cm_id *id) 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); @@ -244,9 +244,11 @@ int sdp_connect_handler(struct sock *sk, struct rdma_cm_id *id, 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; @@ -270,6 +272,11 @@ static int sdp_response_handler(struct sock *sk, struct rdma_cm_event *event) 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; } @@ -328,7 +335,7 @@ int sdp_cma_handler(struct rdma_cm_id *id, struct rdma_cm_event *event) struct sock *sk; struct sdp_hah hah; struct sdp_hh hh; - + int rc = 0; sk = id->context; @@ -418,7 +425,7 @@ int sdp_cma_handler(struct rdma_cm_id *id, struct rdma_cm_event *event) 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