diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2019-10-17 14:31:18 -0400 | 
|---|---|---|
| committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2019-10-24 10:30:40 -0400 | 
| commit | f995879ec4aa8b50c3924fda3014b0ab9acad7bd (patch) | |
| tree | e1aafebbddaed6b42bf456f0deeda09df5386924 | |
| parent | 15d9b015d3d1c997893472cb42d9f225a60a9219 (diff) | |
xprtrdma: Remove rpcrdma_sendctx::sc_xprt
Micro-optimization: Save eight bytes in a frequently allocated
structure.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
| -rw-r--r-- | net/sunrpc/xprtrdma/verbs.c | 19 | ||||
| -rw-r--r-- | net/sunrpc/xprtrdma/xprt_rdma.h | 2 | 
2 files changed, 10 insertions, 11 deletions
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index c79d8620d9c8..3ab086aa69bb 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c @@ -74,7 +74,8 @@  /*   * internal functions   */ -static void rpcrdma_sendctx_put_locked(struct rpcrdma_sendctx *sc); +static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt, +				       struct rpcrdma_sendctx *sc);  static void rpcrdma_reqs_reset(struct rpcrdma_xprt *r_xprt);  static void rpcrdma_reps_destroy(struct rpcrdma_buffer *buf);  static void rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt); @@ -124,7 +125,7 @@ rpcrdma_qp_event_handler(struct ib_event *event, void *context)  /**   * rpcrdma_wc_send - Invoked by RDMA provider for each polled Send WC - * @cq:	completion queue (ignored) + * @cq:	completion queue   * @wc:	completed WR   *   */ @@ -137,7 +138,7 @@ rpcrdma_wc_send(struct ib_cq *cq, struct ib_wc *wc)  	/* WARNING: Only wr_cqe and status are reliable at this point */  	trace_xprtrdma_wc_send(sc, wc); -	rpcrdma_sendctx_put_locked(sc); +	rpcrdma_sendctx_put_locked((struct rpcrdma_xprt *)cq->cq_context, sc);  }  /** @@ -518,7 +519,7 @@ int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt)  	init_waitqueue_head(&ep->rep_connect_wait);  	ep->rep_receive_count = 0; -	sendcq = ib_alloc_cq_any(ia->ri_id->device, NULL, +	sendcq = ib_alloc_cq_any(ia->ri_id->device, r_xprt,  				 ep->rep_attr.cap.max_send_wr + 1,  				 IB_POLL_WORKQUEUE);  	if (IS_ERR(sendcq)) { @@ -840,7 +841,6 @@ static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt)  		if (!sc)  			return -ENOMEM; -		sc->sc_xprt = r_xprt;  		buf->rb_sc_ctxs[i] = sc;  	} @@ -903,6 +903,7 @@ out_emptyq:  /**   * rpcrdma_sendctx_put_locked - Release a send context + * @r_xprt: controlling transport instance   * @sc: send context to release   *   * Usage: Called from Send completion to return a sendctxt @@ -910,10 +911,10 @@ out_emptyq:   *   * The caller serializes calls to this function (per transport).   */ -static void -rpcrdma_sendctx_put_locked(struct rpcrdma_sendctx *sc) +static void rpcrdma_sendctx_put_locked(struct rpcrdma_xprt *r_xprt, +				       struct rpcrdma_sendctx *sc)  { -	struct rpcrdma_buffer *buf = &sc->sc_xprt->rx_buf; +	struct rpcrdma_buffer *buf = &r_xprt->rx_buf;  	unsigned long next_tail;  	/* Unmap SGEs of previously completed but unsignaled @@ -931,7 +932,7 @@ rpcrdma_sendctx_put_locked(struct rpcrdma_sendctx *sc)  	/* Paired with READ_ONCE */  	smp_store_release(&buf->rb_sc_tail, next_tail); -	xprt_write_space(&sc->sc_xprt->rx_xprt); +	xprt_write_space(&r_xprt->rx_xprt);  }  static void diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index b8e768d55cb0..4897c09d6f61 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h @@ -218,12 +218,10 @@ enum {  /* struct rpcrdma_sendctx - DMA mapped SGEs to unmap after Send completes   */  struct rpcrdma_req; -struct rpcrdma_xprt;  struct rpcrdma_sendctx {  	struct ib_send_wr	sc_wr;  	struct ib_cqe		sc_cqe;  	struct ib_device	*sc_device; -	struct rpcrdma_xprt	*sc_xprt;  	struct rpcrdma_req	*sc_req;  	unsigned int		sc_unmap_count;  	struct ib_sge		sc_sges[];  | 
