Hi, I had a closer look at the mpt driver, especially about tagged queueing. There is a flag called mpt_tag_enable defined in struct mpt_softc which is initialized as follows in sys/dev/ic/mpt.c:
mpt->mpt_tag_enable = 0; The function mpt_run_xfer() evaluates this flag in order to change the queue behaviour: /* Set the queue behavior. */ if (__predict_true((!mpt->is_scsi) || (mpt->mpt_tag_enable & (1 << periph->periph_target)))) { Before that, the function mpt_set_xfer_mode() does this: if (xm->xm_mode & PERIPH_CAP_TQING) mpt->mpt_tag_enable |= (1 << xm->xm_target); else mpt->mpt_tag_enable &= ~(1 << xm->xm_target); What is going on here? Does the struct scsipi_xfer_mode *xm come from the scsipi layer so it tells the driver what to do? Regards, Stephan