linux_dsm_epyc7002/net/sunrpc/xprtrdma
Chuck Lever 8d38de6564 xprtrdma: Make FRWR send queue entry accounting more accurate
Verbs providers may perform house-keeping on the Send Queue during
each signaled send completion. It is necessary therefore for a verbs
consumer (like xprtrdma) to occasionally force a signaled send
completion if it runs unsignaled most of the time.

xprtrdma does not require signaled completions for Send or FastReg
Work Requests, but does signal some LocalInv Work Requests. To
ensure that Send Queue house-keeping can run before the Send Queue
is more than half-consumed, xprtrdma forces a signaled completion
on occasion by counting the number of Send Queue Entries it
consumes. It currently does this by counting each ib_post_send as
one Entry.

Commit c9918ff56d ("xprtrdma: Add ro_unmap_sync method for FRWR")
introduced the ability for frwr_op_unmap_sync to post more than one
Work Request with a single post_send. Thus the underlying assumption
of one Send Queue Entry per ib_post_send is no longer true.

Also, FastReg Work Requests are currently never signaled. They
should be signaled once in a while, just as Send is, to keep the
accounting of consumed SQEs accurate.

While we're here, convert the CQCOUNT macros to the currently
preferred kernel coding style, which is inline functions.

Fixes: c9918ff56d ("xprtrdma: Add ro_unmap_sync method for FRWR")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2016-11-29 16:45:44 -05:00
..
backchannel.c xprtrdma: Cap size of callback buffer resources 2016-11-29 16:45:44 -05:00
fmr_ops.c xprtrdma: Basic support for Remote Invalidation 2016-09-19 13:08:38 -04:00
frwr_ops.c xprtrdma: Make FRWR send queue entry accounting more accurate 2016-11-29 16:45:44 -05:00
Makefile xprtrdma: Remove ALLPHYSICAL memory registration mode 2016-07-11 15:50:43 -04:00
module.c
rpc_rdma.c xprtrdma: Eliminate rpcrdma_receive_worker() 2016-09-19 13:08:38 -04:00
svc_rdma_backchannel.c svcrdma: backchannel cannot share a page for send and rcv buffers 2016-11-01 15:23:58 -04:00
svc_rdma_marshal.c svcrdma: Generalize svc_rdma_xdr_decode_req() 2016-05-13 15:53:06 -04:00
svc_rdma_recvfrom.c svcrdma: Tail iovec leaves an orphaned DMA mapping 2016-09-23 10:18:52 -04:00
svc_rdma_sendto.c svcrdma: support Remote Invalidation 2016-09-23 10:18:54 -04:00
svc_rdma_transport.c sunrpc: svc_age_temp_xprts_now should not call setsockopt non-tcp transports 2016-11-14 10:30:58 -05:00
svc_rdma.c
transport.c xprtrdma: Support larger inline thresholds 2016-09-19 13:08:38 -04:00
verbs.c xprtrdma: Make FRWR send queue entry accounting more accurate 2016-11-29 16:45:44 -05:00
xprt_rdma.h xprtrdma: Make FRWR send queue entry accounting more accurate 2016-11-29 16:45:44 -05:00