Lines Matching refs:cq
123 (dev->mq.cq.va + (dev->mq.cq.tail * sizeof(struct ocrdma_mcqe))); in ocrdma_get_mcqe()
132 dev->mq.cq.tail = (dev->mq.cq.tail + 1) & (OCRDMA_MQ_CQ_LEN - 1); in ocrdma_mcq_inc_tail()
521 struct ocrdma_queue_info *cq, in ocrdma_mbx_mq_cq_create() argument
533 cmd->pgsz_pgcnt = (cq->size / OCRDMA_MIN_Q_PAGE_SIZE) << in ocrdma_mbx_mq_cq_create()
535 cmd->pgsz_pgcnt |= PAGES_4K_SPANNED(cq->va, cq->size); in ocrdma_mbx_mq_cq_create()
539 cmd->pdid_cqecnt = cq->size / sizeof(struct ocrdma_mcqe); in ocrdma_mbx_mq_cq_create()
541 ocrdma_build_q_pages(&cmd->pa[0], cq->size / OCRDMA_MIN_Q_PAGE_SIZE, in ocrdma_mbx_mq_cq_create()
542 cq->dma, PAGE_SIZE_4K); in ocrdma_mbx_mq_cq_create()
546 cq->id = (u16) (rsp->cq_id & OCRDMA_CREATE_CQ_RSP_CQ_ID_MASK); in ocrdma_mbx_mq_cq_create()
547 cq->created = true; in ocrdma_mbx_mq_cq_create()
563 struct ocrdma_queue_info *cq) in ocrdma_mbx_create_mq() argument
577 cmd->cqid_pages |= (cq->id << OCRDMA_CREATE_MQ_CQ_ID_SHIFT); in ocrdma_mbx_create_mq()
585 cmd->async_cqid_ringsize = cq->id; in ocrdma_mbx_create_mq()
606 status = ocrdma_alloc_q(dev, &dev->mq.cq, OCRDMA_MQ_CQ_LEN, in ocrdma_create_mq()
612 status = ocrdma_mbx_mq_cq_create(dev, &dev->mq.cq, &dev->eq_tbl[0].q); in ocrdma_create_mq()
625 status = ocrdma_mbx_create_mq(dev, &dev->mq.sq, &dev->mq.cq); in ocrdma_create_mq()
628 ocrdma_ring_cq_db(dev, dev->mq.cq.id, true, false, 0); in ocrdma_create_mq()
634 ocrdma_mbx_delete_q(dev, &dev->mq.cq, QTYPE_CQ); in ocrdma_create_mq()
636 ocrdma_free_q(dev, &dev->mq.cq); in ocrdma_create_mq()
643 struct ocrdma_queue_info *mbxq, *cq; in ocrdma_destroy_mq() local
654 cq = &dev->mq.cq; in ocrdma_destroy_mq()
655 if (cq->created) { in ocrdma_destroy_mq()
656 ocrdma_mbx_delete_q(dev, cq, QTYPE_CQ); in ocrdma_destroy_mq()
657 ocrdma_free_q(dev, cq); in ocrdma_destroy_mq()
676 struct ocrdma_cq *cq = NULL; in ocrdma_dispatch_ibevent() local
704 cq = dev->cq_tbl[cqid]; in ocrdma_dispatch_ibevent()
705 if (cq == NULL) { in ocrdma_dispatch_ibevent()
718 ib_evt.element.cq = &cq->ibcq; in ocrdma_dispatch_ibevent()
724 ib_evt.element.cq = &cq->ibcq; in ocrdma_dispatch_ibevent()
784 if (cq->ibcq.event_handler) in ocrdma_dispatch_ibevent()
785 cq->ibcq.event_handler(&ib_evt, cq->ibcq.cq_context); in ocrdma_dispatch_ibevent()
895 ocrdma_ring_cq_db(dev, dev->mq.cq.id, true, false, cqe_popped); in ocrdma_mq_cq_handler()
900 struct ocrdma_cq *cq, bool sq) in _ocrdma_qp_buddy_cq_handler() argument
905 struct list_head *head = sq?(&cq->sq_head):(&cq->rq_head); in _ocrdma_qp_buddy_cq_handler()
923 if (qp->sq_cq == cq) in _ocrdma_qp_buddy_cq_handler()
933 struct ocrdma_cq *cq) in ocrdma_qp_buddy_cq_handler() argument
949 bcq = _ocrdma_qp_buddy_cq_handler(dev, cq, true); in ocrdma_qp_buddy_cq_handler()
951 bcq = _ocrdma_qp_buddy_cq_handler(dev, cq, false); in ocrdma_qp_buddy_cq_handler()
965 struct ocrdma_cq *cq; in ocrdma_qp_cq_handler() local
970 cq = dev->cq_tbl[cq_idx]; in ocrdma_qp_cq_handler()
971 if (cq == NULL) in ocrdma_qp_cq_handler()
974 if (cq->ibcq.comp_handler) { in ocrdma_qp_cq_handler()
975 spin_lock_irqsave(&cq->comp_handler_lock, flags); in ocrdma_qp_cq_handler()
976 (*cq->ibcq.comp_handler) (&cq->ibcq, cq->ibcq.cq_context); in ocrdma_qp_cq_handler()
977 spin_unlock_irqrestore(&cq->comp_handler_lock, flags); in ocrdma_qp_cq_handler()
979 ocrdma_qp_buddy_cq_handler(dev, cq); in ocrdma_qp_cq_handler()
985 if (cq_id == dev->mq.cq.id) in ocrdma_cq_handler()
1780 int ocrdma_mbx_create_cq(struct ocrdma_dev *dev, struct ocrdma_cq *cq, in ocrdma_mbx_create_cq() argument
1798 cq->max_hw_cqe = 1; in ocrdma_mbx_create_cq()
1803 cq->max_hw_cqe = dev->attr.max_cqe; in ocrdma_mbx_create_cq()
1809 cq->len = roundup(max_hw_cqe * cqe_size, OCRDMA_MIN_Q_PAGE_SIZE); in ocrdma_mbx_create_cq()
1816 cq->va = dma_alloc_coherent(&pdev->dev, cq->len, &cq->pa, GFP_KERNEL); in ocrdma_mbx_create_cq()
1817 if (!cq->va) { in ocrdma_mbx_create_cq()
1821 memset(cq->va, 0, cq->len); in ocrdma_mbx_create_cq()
1822 page_size = cq->len / hw_pages; in ocrdma_mbx_create_cq()
1828 cq->eqn = ocrdma_bind_eq(dev); in ocrdma_mbx_create_cq()
1830 cqe_count = cq->len / cqe_size; in ocrdma_mbx_create_cq()
1831 cq->cqe_cnt = cqe_count; in ocrdma_mbx_create_cq()
1853 cmd->cmd.eqn = cq->eqn; in ocrdma_mbx_create_cq()
1858 cq->phase_change = false; in ocrdma_mbx_create_cq()
1859 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size); in ocrdma_mbx_create_cq()
1861 cmd->cmd.pdid_cqecnt = (cq->len / cqe_size) - 1; in ocrdma_mbx_create_cq()
1863 cq->phase_change = true; in ocrdma_mbx_create_cq()
1869 ocrdma_build_q_pages(&cmd->cmd.pa[0], hw_pages, cq->pa, page_size); in ocrdma_mbx_create_cq()
1875 cq->id = (u16) (rsp->rsp.cq_id & OCRDMA_CREATE_CQ_RSP_CQ_ID_MASK); in ocrdma_mbx_create_cq()
1879 ocrdma_unbind_eq(dev, cq->eqn); in ocrdma_mbx_create_cq()
1880 dma_free_coherent(&pdev->dev, cq->len, cq->va, cq->pa); in ocrdma_mbx_create_cq()
1886 int ocrdma_mbx_destroy_cq(struct ocrdma_dev *dev, struct ocrdma_cq *cq) in ocrdma_mbx_destroy_cq() argument
1898 (cq->id << OCRDMA_DESTROY_CQ_QID_SHIFT) & in ocrdma_mbx_destroy_cq()
1902 ocrdma_unbind_eq(dev, cq->eqn); in ocrdma_mbx_destroy_cq()
1903 dma_free_coherent(&dev->nic_info.pdev->dev, cq->len, cq->va, cq->pa); in ocrdma_mbx_destroy_cq()
2085 bool ocrdma_is_qp_in_sq_flushlist(struct ocrdma_cq *cq, struct ocrdma_qp *qp) in ocrdma_is_qp_in_sq_flushlist() argument
2089 list_for_each_entry(tmp, &cq->sq_head, sq_entry) { in ocrdma_is_qp_in_sq_flushlist()
2098 bool ocrdma_is_qp_in_rq_flushlist(struct ocrdma_cq *cq, struct ocrdma_qp *qp) in ocrdma_is_qp_in_rq_flushlist() argument
2102 list_for_each_entry(tmp, &cq->rq_head, rq_entry) { in ocrdma_is_qp_in_rq_flushlist()
2383 struct ocrdma_cq *cq; in ocrdma_mbx_create_qp() local
2438 cq = get_ocrdma_cq(attrs->send_cq); in ocrdma_mbx_create_qp()
2439 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2441 qp->sq_cq = cq; in ocrdma_mbx_create_qp()
2442 cq = get_ocrdma_cq(attrs->recv_cq); in ocrdma_mbx_create_qp()
2443 cmd->wq_rq_cqid |= (cq->id << OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT) & in ocrdma_mbx_create_qp()
2445 qp->rq_cq = cq; in ocrdma_mbx_create_qp()