Lines Matching refs:cm

223 typedef void mpr_command_callback_t(struct mpr_softc *, struct mpr_command *cm);
614 mpr_free_command(struct mpr_softc *sc, struct mpr_command *cm)
619 KASSERT(cm->cm_state == MPR_CM_STATE_BUSY,
620 ("state not busy, state = %u\n", cm->cm_state));
622 if (cm->cm_reply != NULL)
623 mpr_free_reply(sc, cm->cm_reply_data);
624 cm->cm_reply = NULL;
625 cm->cm_flags = 0;
626 cm->cm_complete = NULL;
627 cm->cm_complete_data = NULL;
628 cm->cm_ccb = NULL;
629 cm->cm_targ = NULL;
630 cm->cm_max_segs = 0;
631 cm->cm_lun = 0;
632 cm->cm_state = MPR_CM_STATE_FREE;
633 cm->cm_data = NULL;
634 cm->cm_length = 0;
635 cm->cm_out_len = 0;
636 cm->cm_sglsize = 0;
637 cm->cm_sge = NULL;
639 TAILQ_FOREACH_SAFE(chain, &cm->cm_chain_list, chain_link, chain_temp) {
640 TAILQ_REMOVE(&cm->cm_chain_list, chain, chain_link);
643 TAILQ_FOREACH_SAFE(prp_page, &cm->cm_prp_page_list, prp_page_link,
645 TAILQ_REMOVE(&cm->cm_prp_page_list, prp_page, prp_page_link);
648 TAILQ_INSERT_TAIL(&sc->req_list, cm, cm_link);
654 struct mpr_command *cm;
656 cm = TAILQ_FIRST(&sc->req_list);
657 if (cm == NULL)
660 KASSERT(cm->cm_state == MPR_CM_STATE_FREE,
661 ("mpr: Allocating busy command, state = %u\n", cm->cm_state));
663 TAILQ_REMOVE(&sc->req_list, cm, cm_link);
664 cm->cm_state = MPR_CM_STATE_BUSY;
665 cm->cm_timeout_handler = NULL;
666 return (cm);
672 mpr_free_high_priority_command(struct mpr_softc *sc, struct mpr_command *cm)
676 KASSERT(cm->cm_state == MPR_CM_STATE_BUSY,
677 ("state not busy, state = %u\n", cm->cm_state));
679 if (cm->cm_reply != NULL)
680 mpr_free_reply(sc, cm->cm_reply_data);
681 cm->cm_reply = NULL;
682 cm->cm_flags = 0;
683 cm->cm_complete = NULL;
684 cm->cm_complete_data = NULL;
685 cm->cm_ccb = NULL;
686 cm->cm_targ = NULL;
687 cm->cm_lun = 0;
688 cm->cm_state = MPR_CM_STATE_FREE;
689 TAILQ_FOREACH_SAFE(chain, &cm->cm_chain_list, chain_link, chain_temp) {
690 TAILQ_REMOVE(&cm->cm_chain_list, chain, chain_link);
693 TAILQ_INSERT_TAIL(&sc->high_priority_req_list, cm, cm_link);
702 struct mpr_command *cm;
704 cm = TAILQ_FIRST(&sc->high_priority_req_list);
705 if (cm == NULL)
708 KASSERT(cm->cm_state == MPR_CM_STATE_FREE,
709 ("mpr: Allocating busy command, state = %u\n", cm->cm_state));
711 TAILQ_REMOVE(&sc->high_priority_req_list, cm, cm_link);
712 cm->cm_state = MPR_CM_STATE_BUSY;
713 cm->cm_timeout_handler = NULL;
714 cm->cm_desc.HighPriority.RequestFlags =
716 return (cm);
826 void mpr_build_nvme_prp(struct mpr_softc *sc, struct mpr_command *cm,
838 void mpr_init_sge(struct mpr_command *cm, void *req, void *sge);
844 int mpr_map_command(struct mpr_softc *sc, struct mpr_command *cm);
845 int mpr_wait_command(struct mpr_softc *sc, struct mpr_command **cm, int timeout,
847 int mpr_request_polled(struct mpr_softc *sc, struct mpr_command **cm);