aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2018-02-28 15:30:38 -0500
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2018-04-10 16:06:22 -0400
commit8a14793e7aa718d16382e18cadec92e2e531e62a (patch)
treed6e6c1ec9fccc63aa33b49a069e905aa61c4135e
parentb7e85fff52eec510eac147462615fd6bc580969a (diff)
xprtrdma: Remove xprt-specific connect cookie
Clean up: The generic rq_connect_cookie is sufficient to detect RPC Call retransmission. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r--net/sunrpc/xprtrdma/transport.c6
-rw-r--r--net/sunrpc/xprtrdma/verbs.c2
-rw-r--r--net/sunrpc/xprtrdma/xprt_rdma.h1
3 files changed, 3 insertions, 6 deletions
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
index f86021e3b853..47b4604e820a 100644
--- a/net/sunrpc/xprtrdma/transport.c
+++ b/net/sunrpc/xprtrdma/transport.c
@@ -236,8 +236,6 @@ rpcrdma_connect_worker(struct work_struct *work)
236 struct rpc_xprt *xprt = &r_xprt->rx_xprt; 236 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
237 237
238 spin_lock_bh(&xprt->transport_lock); 238 spin_lock_bh(&xprt->transport_lock);
239 if (++xprt->connect_cookie == 0) /* maintain a reserved value */
240 ++xprt->connect_cookie;
241 if (ep->rep_connected > 0) { 239 if (ep->rep_connected > 0) {
242 if (!xprt_test_and_set_connected(xprt)) 240 if (!xprt_test_and_set_connected(xprt))
243 xprt_wake_pending_tasks(xprt, 0); 241 xprt_wake_pending_tasks(xprt, 0);
@@ -650,7 +648,6 @@ xprt_rdma_allocate(struct rpc_task *task)
650 if (!rpcrdma_get_recvbuf(r_xprt, req, rqst->rq_rcvsize, flags)) 648 if (!rpcrdma_get_recvbuf(r_xprt, req, rqst->rq_rcvsize, flags))
651 goto out_fail; 649 goto out_fail;
652 650
653 req->rl_connect_cookie = 0; /* our reserved value */
654 rpcrdma_set_xprtdata(rqst, req); 651 rpcrdma_set_xprtdata(rqst, req);
655 rqst->rq_buffer = req->rl_sendbuf->rg_base; 652 rqst->rq_buffer = req->rl_sendbuf->rg_base;
656 rqst->rq_rbuffer = req->rl_recvbuf->rg_base; 653 rqst->rq_rbuffer = req->rl_recvbuf->rg_base;
@@ -721,9 +718,8 @@ xprt_rdma_send_request(struct rpc_task *task)
721 rpcrdma_recv_buffer_get(req); 718 rpcrdma_recv_buffer_get(req);
722 719
723 /* Must suppress retransmit to maintain credits */ 720 /* Must suppress retransmit to maintain credits */
724 if (req->rl_connect_cookie == xprt->connect_cookie) 721 if (rqst->rq_connect_cookie == xprt->connect_cookie)
725 goto drop_connection; 722 goto drop_connection;
726 req->rl_connect_cookie = xprt->connect_cookie;
727 723
728 __set_bit(RPCRDMA_REQ_F_PENDING, &req->rl_flags); 724 __set_bit(RPCRDMA_REQ_F_PENDING, &req->rl_flags);
729 if (rpcrdma_ep_post(&r_xprt->rx_ia, &r_xprt->rx_ep, req)) 725 if (rpcrdma_ep_post(&r_xprt->rx_ia, &r_xprt->rx_ep, req))
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index 7cc346599384..520e7e4fe203 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -255,6 +255,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
255 /* Return 1 to ensure the core destroys the id. */ 255 /* Return 1 to ensure the core destroys the id. */
256 return 1; 256 return 1;
257 case RDMA_CM_EVENT_ESTABLISHED: 257 case RDMA_CM_EVENT_ESTABLISHED:
258 ++xprt->rx_xprt.connect_cookie;
258 connstate = 1; 259 connstate = 1;
259 rpcrdma_update_connect_private(xprt, &event->param.conn); 260 rpcrdma_update_connect_private(xprt, &event->param.conn);
260 goto connected; 261 goto connected;
@@ -273,6 +274,7 @@ rpcrdma_conn_upcall(struct rdma_cm_id *id, struct rdma_cm_event *event)
273 connstate = -EAGAIN; 274 connstate = -EAGAIN;
274 goto connected; 275 goto connected;
275 case RDMA_CM_EVENT_DISCONNECTED: 276 case RDMA_CM_EVENT_DISCONNECTED:
277 ++xprt->rx_xprt.connect_cookie;
276 connstate = -ECONNABORTED; 278 connstate = -ECONNABORTED;
277connected: 279connected:
278 xprt->rx_buf.rb_credits = 1; 280 xprt->rx_buf.rb_credits = 1;
diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h
index 430a6de8300e..29ea0b4e98f9 100644
--- a/net/sunrpc/xprtrdma/xprt_rdma.h
+++ b/net/sunrpc/xprtrdma/xprt_rdma.h
@@ -334,7 +334,6 @@ enum {
334struct rpcrdma_buffer; 334struct rpcrdma_buffer;
335struct rpcrdma_req { 335struct rpcrdma_req {
336 struct list_head rl_list; 336 struct list_head rl_list;
337 unsigned int rl_connect_cookie;
338 struct rpcrdma_buffer *rl_buffer; 337 struct rpcrdma_buffer *rl_buffer;
339 struct rpcrdma_rep *rl_reply; 338 struct rpcrdma_rep *rl_reply;
340 struct xdr_stream rl_stream; 339 struct xdr_stream rl_stream;