scsi_transport - request by a SCSI target driver to start a command
#include <sys/scsi/scsi.h>
int scsi_transport(struct scsi_pkt *pkt);
illumos DDI specific (illumos DDI).
Target drivers use scsi_transport() to request the host adapter driver to
transport a command to the SCSI target device specified by pkt.
The target driver must obtain resources for the packet using
scsi_init_pkt(9F) prior to calling this function. The packet may be
initialized using one of the makecom(9F) functions.
scsi_transport() does not wait for the SCSI command to complete.
See scsi_poll(9F) for a description of polled SCSI commands.
Upon completion of the SCSI command the host adapter calls the
completion routine provided by the target driver in the pkt_comp member
of the scsi_pkt pointed to by pkt.
The scsi_transport() function returns:
TRAN_ACCEPT
The packet was accepted by the transport layer.
TRAN_BUSY
The packet could not be accepted because there was
already a packet in progress for this target/lun, the host adapter queue was
full, or the target device queue was full.
TRAN_BADPKT
The DMA count in the packet exceeded the
DMA engine's maximum DMA size.
TRAN_FATAL_ERROR
A fatal error has occurred in the transport layer.
The scsi_transport() function can be called from user, interrupt, or
kernel context.
Example 1 Using scsi_transport()
if ((status = scsi_transport(rqpkt)) != TRAN_ACCEPT) {
scsi_log(devp, sd_label, CE_WARN,
"transport of request sense pkt fails (0x%x)\n", status);
}