Lines Matching refs:op_req_q

369 mpi3mr_check_req_qfull(struct mpi3mr_op_req_queue *op_req_q)  in mpi3mr_check_req_qfull()  argument
374 pi = op_req_q->pi; in mpi3mr_check_req_qfull()
375 ci = op_req_q->ci; in mpi3mr_check_req_qfull()
376 max_entries = op_req_q->num_reqs; in mpi3mr_check_req_qfull()
395 struct mpi3mr_op_req_queue *op_req_q, U8 *req) in mpi3mr_submit_io() argument
403 mtx_lock_spin(&op_req_q->q_lock); in mpi3mr_submit_io()
405 pi = op_req_q->pi; in mpi3mr_submit_io()
406 max_entries = op_req_q->num_reqs; in mpi3mr_submit_io()
407 if (mpi3mr_check_req_qfull(op_req_q)) { in mpi3mr_submit_io()
408 irq_ctx = &sc->irq_ctx[op_req_q->reply_qid - 1]; in mpi3mr_submit_io()
411 if (mpi3mr_check_req_qfull(op_req_q)) { in mpi3mr_submit_io()
419 req_entry = (U8 *)op_req_q->q_base + (pi * req_sz); in mpi3mr_submit_io()
424 op_req_q->pi = pi; in mpi3mr_submit_io()
426 mpi3mr_atomic_inc(&sc->op_reply_q[op_req_q->reply_qid - 1].pend_ios); in mpi3mr_submit_io()
428 mpi3mr_regwrite(sc, MPI3_SYSIF_OPER_REQ_Q_N_PI_OFFSET(op_req_q->qid), op_req_q->pi); in mpi3mr_submit_io()
430 device_printf(sc->mpi3mr_dev, "IO submission: QID:%d PI:0x%x\n", op_req_q->qid, op_req_q->pi); in mpi3mr_submit_io()
435 mtx_unlock_spin(&op_req_q->q_lock); in mpi3mr_submit_io()
727 struct mpi3mr_op_req_queue *op_req_q; in mpi3mr_create_op_req_queue() local
731 op_req_q = &sc->op_req_q[req_qid - 1]; in mpi3mr_create_op_req_queue()
733 if (op_req_q->qid) in mpi3mr_create_op_req_queue()
737 sc->name, op_req_q->qid); in mpi3mr_create_op_req_queue()
741 op_req_q->ci = 0; in mpi3mr_create_op_req_queue()
742 op_req_q->pi = 0; in mpi3mr_create_op_req_queue()
743 op_req_q->num_reqs = MPI3MR_OP_REQ_Q_QD; in mpi3mr_create_op_req_queue()
744 op_req_q->qsz = op_req_q->num_reqs * sc->facts.op_req_sz; in mpi3mr_create_op_req_queue()
745 op_req_q->reply_qid = reply_qid; in mpi3mr_create_op_req_queue()
747 if (!op_req_q->q_base) { in mpi3mr_create_op_req_queue()
749 mtx_init(&op_req_q->q_lock, q_lock_name, NULL, MTX_SPIN); in mpi3mr_create_op_req_queue()
756 op_req_q->qsz, /* maxsize */ in mpi3mr_create_op_req_queue()
758 op_req_q->qsz, /* maxsegsize */ in mpi3mr_create_op_req_queue()
761 &op_req_q->q_base_tag)) { in mpi3mr_create_op_req_queue()
766 if (bus_dmamem_alloc(op_req_q->q_base_tag, (void **)&op_req_q->q_base, in mpi3mr_create_op_req_queue()
767 BUS_DMA_NOWAIT, &op_req_q->q_base_dmamap)) { in mpi3mr_create_op_req_queue()
772 bzero(op_req_q->q_base, op_req_q->qsz); in mpi3mr_create_op_req_queue()
774 bus_dmamap_load(op_req_q->q_base_tag, op_req_q->q_base_dmamap, op_req_q->q_base, op_req_q->qsz, in mpi3mr_create_op_req_queue()
775 mpi3mr_memaddr_cb, &op_req_q->q_base_phys, BUS_DMA_NOWAIT); in mpi3mr_create_op_req_queue()
778 req_qid, (uintmax_t)op_req_q->q_base_phys, op_req_q->q_base, op_req_q->qsz, reply_qid); in mpi3mr_create_op_req_queue()
780 if (!op_req_q->q_base) { in mpi3mr_create_op_req_queue()
807 create_req.BaseAddress = (U64)op_req_q->q_base_phys; in mpi3mr_create_op_req_queue()
808 create_req.Size = op_req_q->num_reqs; in mpi3mr_create_op_req_queue()
841 op_req_q->qid = req_qid; in mpi3mr_create_op_req_queue()
848 if (op_req_q->q_base_phys != 0) in mpi3mr_create_op_req_queue()
849 bus_dmamap_unload(op_req_q->q_base_tag, op_req_q->q_base_dmamap); in mpi3mr_create_op_req_queue()
850 if (op_req_q->q_base != NULL) in mpi3mr_create_op_req_queue()
851 bus_dmamem_free(op_req_q->q_base_tag, op_req_q->q_base, op_req_q->q_base_dmamap); in mpi3mr_create_op_req_queue()
852 if (op_req_q->q_base_tag != NULL) in mpi3mr_create_op_req_queue()
853 bus_dma_tag_destroy(op_req_q->q_base_tag); in mpi3mr_create_op_req_queue()
854 op_req_q->q_base = NULL; in mpi3mr_create_op_req_queue()
855 op_req_q->qid = 0; in mpi3mr_create_op_req_queue()
886 if (!sc->op_req_q) { in mpi3mr_create_op_queues()
887 sc->op_req_q = malloc(sizeof(struct mpi3mr_op_req_queue) * in mpi3mr_create_op_queues()
890 if (!sc->op_req_q) { in mpi3mr_create_op_queues()
947 sc->op_req_q[0].num_reqs, sc->op_reply_q[0].num_replies); in mpi3mr_create_op_queues()
951 if (sc->op_req_q) { in mpi3mr_create_op_queues()
952 free(sc->op_req_q, M_MPI3MR); in mpi3mr_create_op_queues()
953 sc->op_req_q = NULL; in mpi3mr_create_op_queues()
4872 sc->op_req_q[req_qid - 1].ci = in mpi3mr_complete_io_cmd()
5218 struct mpi3mr_op_req_queue *op_req_q; in mpi3mr_destory_mtx() local
5234 if (sc->op_req_q) { in mpi3mr_destory_mtx()
5236 op_req_q = sc->op_req_q + i; in mpi3mr_destory_mtx()
5237 if (mtx_initialized(&op_req_q->q_lock)) in mpi3mr_destory_mtx()
5238 mtx_destroy(&op_req_q->q_lock); in mpi3mr_destory_mtx()
5294 struct mpi3mr_op_req_queue *op_req_q; in mpi3mr_free_mem() local
5320 if (sc->op_req_q) { in mpi3mr_free_mem()
5322 op_req_q = sc->op_req_q + i; in mpi3mr_free_mem()
5323 if (op_req_q->q_base && op_req_q->q_base_phys) { in mpi3mr_free_mem()
5324 bus_dmamap_unload(op_req_q->q_base_tag, op_req_q->q_base_dmamap); in mpi3mr_free_mem()
5325 bus_dmamem_free(op_req_q->q_base_tag, op_req_q->q_base, op_req_q->q_base_dmamap); in mpi3mr_free_mem()
5326 op_req_q->q_base = NULL; in mpi3mr_free_mem()
5327 if (op_req_q->q_base_tag != NULL) in mpi3mr_free_mem()
5328 bus_dma_tag_destroy(op_req_q->q_base_tag); in mpi3mr_free_mem()
5331 free(sc->op_req_q, M_MPI3MR); in mpi3mr_free_mem()
5332 sc->op_req_q = NULL; in mpi3mr_free_mem()
5603 sc->op_req_q[i].ci = 0; in mpi3mr_memset_buffers()
5604 sc->op_req_q[i].pi = 0; in mpi3mr_memset_buffers()
5605 sc->op_req_q[i].num_reqs = 0; in mpi3mr_memset_buffers()
5606 sc->op_req_q[i].qid = 0; in mpi3mr_memset_buffers()
5607 sc->op_req_q[i].reply_qid = 0; in mpi3mr_memset_buffers()
5608 memset(sc->op_req_q[i].q_base, 0, sc->op_req_q[i].qsz); in mpi3mr_memset_buffers()