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)

tribblix@gmail.com :: GitHub :: Privacy