@@ -810,14 +810,14 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
rqstp->rq_xprt_ctxt = NULL;
ctxt = NULL;
- spin_lock(&rdma_xprt->sc_rq_dto_lock);
+ spin_lock_bh(&rdma_xprt->sc_rq_dto_lock);
ctxt = svc_rdma_next_recv_ctxt(&rdma_xprt->sc_rq_dto_q);
if (ctxt)
list_del(&ctxt->rc_list);
else
/* No new incoming requests, terminate the loop */
clear_bit(XPT_DATA, &xprt->xpt_flags);
- spin_unlock(&rdma_xprt->sc_rq_dto_lock);
+ spin_unlock_bh(&rdma_xprt->sc_rq_dto_lock);
/* Unblock the transport for the next receive */
svc_xprt_received(xprt);
@@ -433,8 +433,8 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
IB_POLL_WORKQUEUE);
if (IS_ERR(newxprt->sc_sq_cq))
goto errout;
- newxprt->sc_rq_cq =
- ib_alloc_cq_any(dev, newxprt, rq_depth, IB_POLL_WORKQUEUE);
+ newxprt->sc_rq_cq = ib_alloc_cq_any(dev, newxprt, rq_depth,
+ IB_POLL_SOFTIRQ);
if (IS_ERR(newxprt->sc_rq_cq))
goto errout;