aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/sunrpc/xprtrdma/verbs.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index 478b2fda83a6..e6ac9643fe56 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -317,8 +317,15 @@ rpcrdma_recvcq_upcall(struct ib_cq *cq, void *cq_context)
317static void 317static void
318rpcrdma_flush_cqs(struct rpcrdma_ep *ep) 318rpcrdma_flush_cqs(struct rpcrdma_ep *ep)
319{ 319{
320 rpcrdma_recvcq_upcall(ep->rep_attr.recv_cq, ep); 320 struct ib_wc wc;
321 rpcrdma_sendcq_upcall(ep->rep_attr.send_cq, ep); 321 LIST_HEAD(sched_list);
322
323 while (ib_poll_cq(ep->rep_attr.recv_cq, 1, &wc) > 0)
324 rpcrdma_recvcq_process_wc(&wc, &sched_list);
325 if (!list_empty(&sched_list))
326 rpcrdma_schedule_tasklet(&sched_list);
327 while (ib_poll_cq(ep->rep_attr.send_cq, 1, &wc) > 0)
328 rpcrdma_sendcq_process_wc(&wc);
322} 329}
323 330
324#ifdef RPC_DEBUG 331#ifdef RPC_DEBUG