Lines Matching defs:qr
868 struct qat_ring *qr = &qb->qb_et_rings[i];
875 qr->qr_inflight = qat_alloc_mem(sizeof(uint32_t));
879 qr->qr_inflight =
962 qat_etr_ap_bank_setup_ring(struct qat_softc *sc, struct qat_ring *qr)
970 ap_bank = ETR_RING_AP_BANK_NUMBER(qr->qr_ring);
974 if (qr->qr_cb == NULL) {
975 qat_etr_ap_bank_set_ring_mask(&qab->qab_ne_mask, qr->qr_ring, 1);
978 qr->qr_ring, 1);
983 qat_etr_ap_bank_set_ring_mask(&qab->qab_nf_mask, qr->qr_ring, 1);
986 qr->qr_ring, 1);
1011 struct qat_ring *qr = NULL;
1027 qr = &qb->qb_et_rings[ring];
1031 qr->qr_ring = ring;
1032 qr->qr_bank = bank;
1033 qr->qr_name = name;
1034 qr->qr_ring_id = qr->qr_bank * sc->sc_hw.qhw_num_rings_per_bank + ring;
1035 qr->qr_ring_mask = (1 << ring);
1036 qr->qr_cb = cb;
1037 qr->qr_cb_arg = cb_arg;
1038 QAT_EVCNT_ATTACH(sc, &qr->qr_ev_rxintr, EVCNT_TYPE_INTR,
1039 qr->qr_ev_rxintr_name, "bank%d ring%d rxintr", bank, ring);
1040 QAT_EVCNT_ATTACH(sc, &qr->qr_ev_rxmsg, EVCNT_TYPE_MISC,
1041 qr->qr_ev_rxmsg_name, "bank%d ring%d rxmsg", bank, ring);
1042 QAT_EVCNT_ATTACH(sc, &qr->qr_ev_txmsg, EVCNT_TYPE_MISC,
1043 qr->qr_ev_txmsg_name, "bank%d ring%d txmsg", bank, ring);
1044 QAT_EVCNT_ATTACH(sc, &qr->qr_ev_txfull, EVCNT_TYPE_MISC,
1045 qr->qr_ev_txfull_name, "bank%d ring%d txfull", bank, ring);
1048 qr->qr_head = 0;
1049 qr->qr_tail = 0;
1050 qr->qr_msg_size = QAT_BYTES_TO_MSG_SIZE(msg_size);
1051 qr->qr_ring_size = qat_etr_verify_ring_size(msg_size, num_msgs);
1057 ring_size_bytes = QAT_SIZE_TO_RING_SIZE_IN_BYTES(qr->qr_ring_size);
1059 error = qat_alloc_dmamem(sc, &qr->qr_dma,
1064 KASSERT(qr->qr_dma.qdm_dma_map->dm_nsegs == 1);
1066 qr->qr_ring_vaddr = qr->qr_dma.qdm_dma_vaddr;
1067 qr->qr_ring_paddr = qr->qr_dma.qdm_dma_map->dm_segs[0].ds_addr;
1073 (int)qr->qr_dma.qdm_dma_map->dm_segs[0].ds_len,
1074 qr->qr_ring_vaddr,
1075 (unsigned long long)qr->qr_ring_paddr);
1077 memset(qr->qr_ring_vaddr, QAT_RING_PATTERN,
1078 qr->qr_dma.qdm_dma_map->dm_segs[0].ds_len);
1080 bus_dmamap_sync(sc->sc_dmat, qr->qr_dma.qdm_dma_map, 0,
1081 qr->qr_dma.qdm_dma_map->dm_mapsize,
1084 if (((uintptr_t)qr->qr_ring_paddr & (ring_size_bytes - 1)) != 0) {
1090 ring_config = ETR_RING_CONFIG_BUILD(qr->qr_ring_size);
1093 ETR_RING_CONFIG_BUILD_RESP(qr->qr_ring_size, wm_nf, wm_ne);
1097 ring_base = ETR_RING_BASE_BUILD(qr->qr_ring_paddr, qr->qr_ring_size);
1103 mutex_init(&qr->qr_ring_mtx, MUTEX_DEFAULT, IPL_NET);
1105 qat_etr_ap_bank_setup_ring(sc, qr);
1110 qb->qb_intr_mask |= qr->qr_ring_mask;
1123 *rqr = qr;
1137 qat_etr_put_msg(struct qat_softc *sc, struct qat_ring *qr, uint32_t *msg)
1142 mutex_spin_enter(&qr->qr_ring_mtx);
1144 inflight = atomic_inc_32_nv(qr->qr_inflight);
1145 if (inflight > QAT_MAX_INFLIGHTS(qr->qr_ring_size, qr->qr_msg_size)) {
1146 atomic_dec_32(qr->qr_inflight);
1147 QAT_EVCNT_INCR(&qr->qr_ev_txfull);
1148 mutex_spin_exit(&qr->qr_ring_mtx);
1151 QAT_EVCNT_INCR(&qr->qr_ev_txmsg);
1153 addr = (uint32_t *)((uintptr_t)qr->qr_ring_vaddr + qr->qr_tail);
1155 memcpy(addr, msg, QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size));
1158 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size));
1161 bus_dmamap_sync(sc->sc_dmat, qrqr->qr_tail,
1162 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1165 qr->qr_tail = qat_modulo(qr->qr_tail +
1166 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1167 QAT_RING_SIZE_MODULO(qr->qr_ring_size));
1169 qat_etr_bank_ring_write_4(sc, qr->qr_bank, qr->qr_ring,
1170 ETR_RING_TAIL_OFFSET, qr->qr_tail);
1172 mutex_spin_exit(&qr->qr_ring_mtx);
1179 struct qat_ring *qr)
1185 mutex_spin_enter(&qr->qr_ring_mtx);
1187 QAT_EVCNT_INCR(&qr->qr_ev_rxintr);
1189 msg = (uint32_t *)((uintptr_t)qr->qr_ring_vaddr + qr->qr_head);
1191 bus_dmamap_sync(sc->sc_dmat, qr->qr_dma.qdm_dma_map, qr->qr_head,
1192 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1196 atomic_dec_32(qr->qr_inflight);
1197 QAT_EVCNT_INCR(&qr->qr_ev_rxmsg);
1199 if (qr->qr_cb != NULL) {
1200 mutex_spin_exit(&qr->qr_ring_mtx);
1201 handled |= qr->qr_cb(sc, qr->qr_cb_arg, msg);
1202 mutex_spin_enter(&qr->qr_ring_mtx);
1207 bus_dmamap_sync(sc->sc_dmat, qr->qr_dma.qdm_dma_map, qr->qr_head,
1208 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1211 qr->qr_head = qat_modulo(qr->qr_head +
1212 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1213 QAT_RING_SIZE_MODULO(qr->qr_ring_size));
1216 msg = (uint32_t *)((uintptr_t)qr->qr_ring_vaddr + qr->qr_head);
1218 bus_dmamap_sync(sc->sc_dmat, qr->qr_dma.qdm_dma_map, qr->qr_head,
1219 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
1224 qat_etr_bank_ring_write_4(sc, qr->qr_bank, qr->qr_ring,
1225 ETR_RING_HEAD_OFFSET, qr->qr_head);
1228 mutex_spin_exit(&qr->qr_ring_mtx);
1257 struct qat_ring *qr = &qb->qb_et_rings[--i];
1259 handled |= qat_etr_ring_intr(sc, qb, qr);
2134 struct qat_ring *qr = &qb->qb_et_rings[ring];
2141 qr->qr_ring_id, qr->qr_name,
2142 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
2143 qr->qr_ring_size);
2144 printf("\thost head 0x%08x tail 0x%08x\n", qr->qr_head, qr->qr_tail);
2146 qat_etr_bank_ring_read_4(sc, qr->qr_bank, qr->qr_ring,
2148 qat_etr_bank_ring_read_4(sc, qr->qr_bank, qr->qr_ring,
2158 if (offset == qr->qr_head) {
2160 } else if (offset == qr->qr_tail) {
2166 msg = *(uint32_t *)((uintptr_t)qr->qr_ring_vaddr + offset);
2174 QAT_MSG_SIZE_TO_BYTES(qr->qr_msg_size),
2175 QAT_RING_SIZE_MODULO(qr->qr_ring_size));