diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2018-02-28 15:30:38 -0500 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2018-04-10 16:06:22 -0400 |
commit | 8a14793e7aa718d16382e18cadec92e2e531e62a (patch) | |
tree | d6e6c1ec9fccc63aa33b49a069e905aa61c4135e | |
parent | b7e85fff52eec510eac147462615fd6bc580969a (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.c | 6 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/verbs.c | 2 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/xprt_rdma.h | 1 |
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; |
277 | connected: | 279 | connected: |
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 { | |||
334 | struct rpcrdma_buffer; | 334 | struct rpcrdma_buffer; |
335 | struct rpcrdma_req { | 335 | struct 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; |