SCSI_TRANSPORT(9F) Kernel Functions for Drivers SCSI_TRANSPORT(9F)
NAME
scsi_transport - request by a SCSI target driver to start a command
SYNOPSIS
#include <sys/scsi/scsi.h>
int scsi_transport(
struct scsi_pkt *pkt);
INTERFACE LEVEL
illumos DDI specific (illumos DDI).
PARAMETERS
pkt Pointer to a
scsi_pkt(9S) structure.
DESCRIPTION
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.
RETURN VALUES
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.
CONTEXT
The
scsi_transport() function can be called from user, interrupt, or
kernel context.
EXAMPLES
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);
}
SEE ALSO
tran_start(9E),
makecom(9F),
scsi_init_pkt(9F),
scsi_pktalloc(9F),
scsi_poll(9F),
scsi_pkt(9S) Writing Device Drivers January 16, 2006
SCSI_TRANSPORT(9F)