|
Kernel Functions for Drivers | scsi_transport(9F) |
| 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); |
|
Solaris DDI specific (Solaris 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.
|
|
scsi_transport() 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.
|
|
scsi_transport() can be called from user or interrupt 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);
}
|
|
|
| |