|
@@ -644,6 +644,7 @@ rpcrdma_ep_create(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia,
|
|
|
{
|
|
|
struct ib_device_attr *devattr = &ia->ri_devattr;
|
|
|
struct ib_cq *sendcq, *recvcq;
|
|
|
+ struct ib_cq_init_attr cq_attr = {};
|
|
|
int rc, err;
|
|
|
|
|
|
/* check provider's send/recv wr limits */
|
|
@@ -691,9 +692,9 @@ rpcrdma_ep_create(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia,
|
|
|
init_waitqueue_head(&ep->rep_connect_wait);
|
|
|
INIT_DELAYED_WORK(&ep->rep_connect_worker, rpcrdma_connect_worker);
|
|
|
|
|
|
+ cq_attr.cqe = ep->rep_attr.cap.max_send_wr + 1;
|
|
|
sendcq = ib_create_cq(ia->ri_id->device, rpcrdma_sendcq_upcall,
|
|
|
- rpcrdma_cq_async_error_upcall, ep,
|
|
|
- ep->rep_attr.cap.max_send_wr + 1, 0);
|
|
|
+ rpcrdma_cq_async_error_upcall, ep, &cq_attr);
|
|
|
if (IS_ERR(sendcq)) {
|
|
|
rc = PTR_ERR(sendcq);
|
|
|
dprintk("RPC: %s: failed to create send CQ: %i\n",
|
|
@@ -708,9 +709,9 @@ rpcrdma_ep_create(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia,
|
|
|
goto out2;
|
|
|
}
|
|
|
|
|
|
+ cq_attr.cqe = ep->rep_attr.cap.max_recv_wr + 1;
|
|
|
recvcq = ib_create_cq(ia->ri_id->device, rpcrdma_recvcq_upcall,
|
|
|
- rpcrdma_cq_async_error_upcall, ep,
|
|
|
- ep->rep_attr.cap.max_recv_wr + 1, 0);
|
|
|
+ rpcrdma_cq_async_error_upcall, ep, &cq_attr);
|
|
|
if (IS_ERR(recvcq)) {
|
|
|
rc = PTR_ERR(recvcq);
|
|
|
dprintk("RPC: %s: failed to create recv CQ: %i\n",
|