aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index 027a3b07d329..0004535c0188 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -211,9 +211,14 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id,
211 /* Save client advertised inbound read limit for use later in accept. */ 211 /* Save client advertised inbound read limit for use later in accept. */
212 newxprt->sc_ord = param->initiator_depth; 212 newxprt->sc_ord = param->initiator_depth;
213 213
214 /* Set the local and remote addresses in the transport */
215 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; 214 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr;
216 svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa)); 215 svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa));
216 /* The remote port is arbitrary and not under the control of the
217 * client ULP. Set it to a fixed value so that the DRC continues
218 * to be effective after a reconnect.
219 */
220 rpc_set_port((struct sockaddr *)&newxprt->sc_xprt.xpt_remote, 0);
221
217 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; 222 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr;
218 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); 223 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa));
219 224