Lines Matching refs:srq
346 if (!scq || (!rcq && !attrs->srq)) { in siw_create_qp()
395 if (attrs->srq) { in siw_create_qp()
401 qp->srq = to_siw_srq(attrs->srq); in siw_create_qp()
529 qp_init_attr->srq = base_qp->srq; in siw_query_qp()
963 if (qp->srq) { in siw_post_receive()
1550 struct siw_srq *srq = to_siw_srq(base_srq); in siw_create_srq() local
1568 srq->max_sge = attrs->max_sge; in siw_create_srq()
1569 srq->num_rqe = roundup_pow_of_two(attrs->max_wr); in siw_create_srq()
1570 srq->limit = attrs->srq_limit; in siw_create_srq()
1571 if (srq->limit) in siw_create_srq()
1572 srq->armed = true; in siw_create_srq()
1574 srq->is_kernel_res = !udata; in siw_create_srq()
1577 srq->recvq = in siw_create_srq()
1578 vmalloc_user(srq->num_rqe * sizeof(struct siw_rqe)); in siw_create_srq()
1580 srq->recvq = vzalloc(srq->num_rqe * sizeof(struct siw_rqe)); in siw_create_srq()
1582 if (srq->recvq == NULL) { in siw_create_srq()
1588 size_t length = srq->num_rqe * sizeof(struct siw_rqe); in siw_create_srq()
1590 srq->srq_entry = in siw_create_srq()
1591 siw_mmap_entry_insert(ctx, srq->recvq, in siw_create_srq()
1593 if (!srq->srq_entry) { in siw_create_srq()
1598 uresp.num_rqe = srq->num_rqe; in siw_create_srq()
1608 spin_lock_init(&srq->lock); in siw_create_srq()
1615 if (srq->recvq) { in siw_create_srq()
1617 rdma_user_mmap_entry_remove(srq->srq_entry); in siw_create_srq()
1618 vfree(srq->recvq); in siw_create_srq()
1637 struct siw_srq *srq = to_siw_srq(base_srq); in siw_modify_srq() local
1641 spin_lock_irqsave(&srq->lock, flags); in siw_modify_srq()
1650 if (unlikely(attrs->srq_limit > srq->num_rqe)) { in siw_modify_srq()
1654 srq->armed = true; in siw_modify_srq()
1656 srq->armed = false; in siw_modify_srq()
1658 srq->limit = attrs->srq_limit; in siw_modify_srq()
1661 spin_unlock_irqrestore(&srq->lock, flags); in siw_modify_srq()
1673 struct siw_srq *srq = to_siw_srq(base_srq); in siw_query_srq() local
1676 spin_lock_irqsave(&srq->lock, flags); in siw_query_srq()
1678 attrs->max_wr = srq->num_rqe; in siw_query_srq()
1679 attrs->max_sge = srq->max_sge; in siw_query_srq()
1680 attrs->srq_limit = srq->limit; in siw_query_srq()
1682 spin_unlock_irqrestore(&srq->lock, flags); in siw_query_srq()
1697 struct siw_srq *srq = to_siw_srq(base_srq); in siw_destroy_srq() local
1704 rdma_user_mmap_entry_remove(srq->srq_entry); in siw_destroy_srq()
1705 vfree(srq->recvq); in siw_destroy_srq()
1725 struct siw_srq *srq = to_siw_srq(base_srq); in siw_post_srq_recv() local
1729 if (unlikely(!srq->is_kernel_res)) { in siw_post_srq_recv()
1740 spin_lock_irqsave(&srq->lock, flags); in siw_post_srq_recv()
1743 u32 idx = srq->rq_put % srq->num_rqe; in siw_post_srq_recv()
1744 struct siw_rqe *rqe = &srq->recvq[idx]; in siw_post_srq_recv()
1751 if (unlikely(wr->num_sge > srq->max_sge)) { in siw_post_srq_recv()
1766 srq->rq_put++; in siw_post_srq_recv()
1769 spin_unlock_irqrestore(&srq->lock, flags); in siw_post_srq_recv()
1815 void siw_srq_event(struct siw_srq *srq, enum ib_event_type etype) in siw_srq_event() argument
1818 struct ib_srq *base_srq = &srq->base_srq; in siw_srq_event()
1822 event.element.srq = base_srq; in siw_srq_event()
1825 siw_dbg_pd(srq->base_srq.pd, in siw_srq_event()