Lines Matching defs:cq
106 /* completion event moderation - about 10khz, or 90% of the cq */
4656 mcx_create_cq(struct mcx_softc *sc, struct mcx_cq *cq, int uar, int db, int eqn)
4668 cq->cq_doorbell = MCX_CQ_DOORBELL_BASE + (MCX_CQ_DOORBELL_STRIDE * db);
4675 if (mcx_dmamem_alloc(sc, &cq->cq_mem, npages * MCX_PAGE_SIZE,
4681 cqe = MCX_DMA_KVA(&cq->cq_mem);
4697 printf("%s: unable to allocate create cq mailboxen\n",
4709 MCX_DMA_DVA(&sc->sc_doorbell_mem) + cq->cq_doorbell);
4711 bus_dmamap_sync(sc->sc_dmat, MCX_DMA_MAP(&cq->cq_mem),
4712 0, MCX_DMA_LEN(&cq->cq_mem), BUS_DMASYNC_PREREAD);
4715 mcx_cmdq_mboxes_pas(&mxm, sizeof(*mbin), npages, &cq->cq_mem);
4720 printf("%s: create cq timeout\n", DEVNAME(sc));
4724 printf("%s: create cq command corrupt\n", DEVNAME(sc));
4730 printf("%s: create cq failed (%x, %x)\n", DEVNAME(sc),
4735 cq->cq_n = mcx_get_id(out->cmd_cqn);
4736 cq->cq_cons = 0;
4737 cq->cq_count = 0;
4742 cq->cq_doorbell, sizeof(struct mcx_cq_doorbell),
4745 mcx_arm_cq(sc, cq, uar);
4750 bus_dmamap_sync(sc->sc_dmat, MCX_DMA_MAP(&cq->cq_mem),
4751 0, MCX_DMA_LEN(&cq->cq_mem), BUS_DMASYNC_POSTREAD);
4754 mcx_dmamem_free(sc, &cq->cq_mem);
4759 mcx_destroy_cq(struct mcx_softc *sc, struct mcx_cq *cq)
4774 in->cmd_cqn = htobe32(cq->cq_n);
4779 printf("%s: destroy cq timeout\n", DEVNAME(sc));
4783 printf("%s: destroy cq command corrupt\n", DEVNAME(sc));
4789 printf("%s: destroy cq failed (%x, %x)\n", DEVNAME(sc),
4795 cq->cq_doorbell, sizeof(struct mcx_cq_doorbell),
4798 bus_dmamap_sync(sc->sc_dmat, MCX_DMA_MAP(&cq->cq_mem),
4799 0, MCX_DMA_LEN(&cq->cq_mem), BUS_DMASYNC_POSTREAD);
4800 mcx_dmamem_free(sc, &cq->cq_mem);
4802 cq->cq_n = 0;
4803 cq->cq_cons = 0;
4804 cq->cq_count = 0;
6616 mcx_query_cq(struct mcx_softc *sc, struct mcx_cq *cq, struct mcx_cq_ctx *cq_ctx)
6633 in->cmd_cqn = htobe32(cq->cq_n);
6638 printf("%s: unable to allocate query cq mailboxes\n",
6648 printf("%s: query cq timeout\n", DEVNAME(sc));
6652 printf("%s: query cq reply corrupt\n", DEVNAME(sc));
7000 mcx_next_cq_entry(struct mcx_softc *sc, struct mcx_cq *cq)
7005 cqe = (struct mcx_cq_entry *)MCX_DMA_KVA(&cq->cq_mem);
7006 next = cq->cq_cons % (1 << MCX_LOG_CQ_SIZE);
7009 ((cq->cq_cons >> MCX_LOG_CQ_SIZE) & 1)) {
7017 mcx_arm_cq(struct mcx_softc *sc, struct mcx_cq *cq, int uar)
7024 val = ((cq->cq_count) & 3) << MCX_CQ_DOORBELL_ARM_CMD_SN_SHIFT;
7025 val |= (cq->cq_cons & MCX_CQ_DOORBELL_ARM_CI_MASK);
7027 db = MCX_DMA_OFF(&sc->sc_doorbell_mem, cq->cq_doorbell);
7030 cq->cq_doorbell, sizeof(*db), BUS_DMASYNC_POSTWRITE);
7032 be32enc(&db->db_update_ci, cq->cq_cons & MCX_CQ_DOORBELL_ARM_CI_MASK);
7036 cq->cq_doorbell, sizeof(*db), BUS_DMASYNC_PREWRITE);
7041 uval |= cq->cq_n;
7048 mcx_process_cq(struct mcx_softc *sc, struct mcx_queues *q, struct mcx_cq *cq)
7066 bus_dmamap_sync(sc->sc_dmat, MCX_DMA_MAP(&cq->cq_mem),
7067 0, MCX_DMA_LEN(&cq->cq_mem), BUS_DMASYNC_POSTREAD);
7071 while ((cqe = mcx_next_cq_entry(sc, cq))) {
7084 /* printf("%s: cq completion error: %x\n",
7089 /* printf("%s: cq completion opcode %x??\n",
7094 cq->cq_cons++;
7097 bus_dmamap_sync(sc->sc_dmat, MCX_DMA_MAP(&cq->cq_mem),
7098 0, MCX_DMA_LEN(&cq->cq_mem), BUS_DMASYNC_PREREAD);
7112 cq->cq_count++;
7113 mcx_arm_cq(sc, cq, q->q_uar);
7168 /* printf("%s: cq error\n", DEVNAME(sc)); */
7583 struct mcx_cq *cq = &q->q_cq;
7602 if (cq->cq_n != 0)
7603 mcx_destroy_cq(sc, cq);
8733 { "CQ SW cons", KSTAT_KV_T_COUNTER64 },
8734 { "CQ HW prod", KSTAT_KV_T_COUNTER64 },
8735 { "CQ HW cons", KSTAT_KV_T_COUNTER64 },
8736 { "CQ HW notify", KSTAT_KV_T_COUNTER64 },
8737 { "CQ HW solicit", KSTAT_KV_T_COUNTER64 },
8738 { "CQ HW status", KSTAT_KV_T_ISTR },
8739 { "CQ HW state", KSTAT_KV_T_ISTR },
8794 struct mcx_cq_ctx cq;
8855 if (mcx_query_cq(sc, &q->q_cq, &u.cq) != 0) {
8861 kstat_kv_u64(kvs++) = bemtoh32(&u.cq.cq_producer_counter);
8862 kstat_kv_u64(kvs++) = bemtoh32(&u.cq.cq_consumer_counter);
8863 kstat_kv_u64(kvs++) = bemtoh32(&u.cq.cq_last_notified);
8864 kstat_kv_u64(kvs++) = bemtoh32(&u.cq.cq_last_solicit);
8866 switch ((bemtoh32(&u.cq.cq_status) & MCX_CQ_CTX_STATUS_MASK) >>
8884 switch ((bemtoh32(&u.cq.cq_status) & MCX_CQ_CTX_STATE_MASK) >>