Lines Matching refs:srq

343 	if (!attrs->send_cq || (!attrs->recv_cq && !attrs->srq)) {  in siw_create_qp()
401 if (attrs->srq) { in siw_create_qp()
407 qp->srq = to_siw_srq(attrs->srq); in siw_create_qp()
534 qp_init_attr->srq = base_qp->srq; in siw_query_qp()
968 if (qp->srq || qp->attrs.rq_size == 0) { in siw_post_receive()
1555 struct siw_srq *srq = to_siw_srq(base_srq); in siw_create_srq() local
1573 srq->max_sge = attrs->max_sge; in siw_create_srq()
1574 srq->num_rqe = roundup_pow_of_two(attrs->max_wr); in siw_create_srq()
1575 srq->limit = attrs->srq_limit; in siw_create_srq()
1576 if (srq->limit) in siw_create_srq()
1577 srq->armed = true; in siw_create_srq()
1579 srq->is_kernel_res = !udata; in siw_create_srq()
1582 srq->recvq = in siw_create_srq()
1583 vmalloc_user(srq->num_rqe * sizeof(struct siw_rqe)); in siw_create_srq()
1585 srq->recvq = vzalloc(srq->num_rqe * sizeof(struct siw_rqe)); in siw_create_srq()
1587 if (srq->recvq == NULL) { in siw_create_srq()
1593 size_t length = srq->num_rqe * sizeof(struct siw_rqe); in siw_create_srq()
1595 srq->srq_entry = in siw_create_srq()
1596 siw_mmap_entry_insert(ctx, srq->recvq, in siw_create_srq()
1598 if (!srq->srq_entry) { in siw_create_srq()
1603 uresp.num_rqe = srq->num_rqe; in siw_create_srq()
1613 spin_lock_init(&srq->lock); in siw_create_srq()
1620 if (srq->recvq) { in siw_create_srq()
1622 rdma_user_mmap_entry_remove(srq->srq_entry); in siw_create_srq()
1623 vfree(srq->recvq); in siw_create_srq()
1642 struct siw_srq *srq = to_siw_srq(base_srq); in siw_modify_srq() local
1646 spin_lock_irqsave(&srq->lock, flags); in siw_modify_srq()
1655 if (unlikely(attrs->srq_limit > srq->num_rqe)) { in siw_modify_srq()
1659 srq->armed = true; in siw_modify_srq()
1661 srq->armed = false; in siw_modify_srq()
1663 srq->limit = attrs->srq_limit; in siw_modify_srq()
1666 spin_unlock_irqrestore(&srq->lock, flags); in siw_modify_srq()
1678 struct siw_srq *srq = to_siw_srq(base_srq); in siw_query_srq() local
1681 spin_lock_irqsave(&srq->lock, flags); in siw_query_srq()
1683 attrs->max_wr = srq->num_rqe; in siw_query_srq()
1684 attrs->max_sge = srq->max_sge; in siw_query_srq()
1685 attrs->srq_limit = srq->limit; in siw_query_srq()
1687 spin_unlock_irqrestore(&srq->lock, flags); in siw_query_srq()
1702 struct siw_srq *srq = to_siw_srq(base_srq); in siw_destroy_srq() local
1709 rdma_user_mmap_entry_remove(srq->srq_entry); in siw_destroy_srq()
1710 vfree(srq->recvq); in siw_destroy_srq()
1730 struct siw_srq *srq = to_siw_srq(base_srq); in siw_post_srq_recv() local
1734 if (unlikely(!srq->is_kernel_res)) { in siw_post_srq_recv()
1745 spin_lock_irqsave(&srq->lock, flags); in siw_post_srq_recv()
1748 u32 idx = srq->rq_put % srq->num_rqe; in siw_post_srq_recv()
1749 struct siw_rqe *rqe = &srq->recvq[idx]; in siw_post_srq_recv()
1756 if (unlikely(wr->num_sge > srq->max_sge)) { in siw_post_srq_recv()
1771 srq->rq_put++; in siw_post_srq_recv()
1774 spin_unlock_irqrestore(&srq->lock, flags); in siw_post_srq_recv()
1820 void siw_srq_event(struct siw_srq *srq, enum ib_event_type etype) in siw_srq_event() argument
1823 struct ib_srq *base_srq = &srq->base_srq; in siw_srq_event()
1827 event.element.srq = base_srq; in siw_srq_event()
1830 siw_dbg_pd(srq->base_srq.pd, in siw_srq_event()