For a definition of tagged queuing refer to the SCSI-2 specification. To support tagged queuing, first check the scsi_options flag SCSI_OPTIONS_TAG to see if tagged queuing is enabled globally. Next, check to see if the target is a SCSI-2 device and whether it has tagged queuing enabled. If this is all true, attempt to enable tagged queuing by using scsi_ifsetcap(9F). Example G-1 shows an example of supporting tagged queuing.
#define ROUTE &sdp->sd_address ... /* * If SCSI-2 tagged queueing is supported by the disk drive and * by the host adapter then we will enable it. */ xsp->tagflags = 0; if ((scsi_options & SCSI_OPTIONS_TAG) && (devp->sd_inq->inq_rdf == RDF_SCSI2) && (devp->sd_inq->inq_cmdque)) { if (scsi_ifsetcap(ROUTE, "tagged-qing", 1, 1) == 1) { xsp->tagflags = FLAG_STAG; xsp->throttle = 256; } else if (scsi_ifgetcap(ROUTE, "untagged-qing", 0) == 1) { xsp->dp->options |= XX_QUEUEING; xsp->throttle = 3; } else { xsp->dp->options &= ~XX_QUEUEING; xsp->throttle = 1; } }