Current File : //usr/man/man9s/scsi_hba_tran.9s
'\" te
.\"  Copyright (c) 2006 Sun Microsystems, Inc.,  All Rights Reserved
.TH scsi_hba_tran 9S "30 May 2006" "SunOS 5.11" "Data Structures for Drivers"
.SH NAME
scsi_hba_tran \- SCSI Host Bus Adapter (HBA) driver transport vector structure
.SH SYNOPSIS
.LP
.nf
#include <sys/scsi/scsi.h>
.fi

.SH INTERFACE LEVEL
.sp
.LP
Solaris architecture specific (Solaris DDI).
.SH DESCRIPTION
.sp
.LP
A \fBscsi_hba_tran_t\fR structure defines vectors that an \fBHBA\fR driver exports to \fBSCSA\fR interfaces so that \fBHBA\fR specific functions can be executed.
.SH STRUCTURE MEMBERS
.sp
.in +2
.nf
dev_info_t          *tran_hba_dip;          /* HBAs dev_info
                                                pointer */
void                *tran_hba_private;      /* HBA softstate */
void                *tran_tgt_private;      /* HBA target private 
                                                pointer */
struct scsi_device  *tran_sd;               /* scsi_device */
int                 (*tran_tgt_init)( );    /* Transport target */
                                                Initialization */
int                 (*tran_tgt_probe)( );   /* Transport target 
                                                probe */
void                (*tran_tgt_free)( );    /* Transport target 
                                                free */
int                 (*tran_start)( );       /* Transport start */
int                 (*tran_reset)( );       /* Transport reset */
int                 (*tran_abort)( );       /* Transport abort */
int                 (*tran_getcap)( );      /* Capability 
                                                retrieval */
int                 (*tran_setcap)( );      /* Capability 
                                                establishment */
struct scsi_pkt     *(*tran_init_pkt)( );   /* Packet and DMA 
                                                allocation */
void                (*tran_destroy_pkt)( ); /* Packet and DMA */
                                                deallocation */
void                (*tran_dmafree)( );     /* DMA deallocation */
void                (*tran_sync_pkt)( );    /* Sync DMA */
void                (*tran_reset_notify)( );/* Bus reset 
                                                notification */
int                 (*tran_bus_reset)( );   /* Reset bus only */
int                 (*tran_quiesce)( );     /* Quiesce a bus */
int                 (*tran_unquiesce)( );   /* Unquiesce a bus */
int                 (*tran_setup_pkt)( );   /* Initialization 
                                                for pkt */
int                 (*tran_teardown_pkt)( );/* Deallocation */
int                 (*tran_pkt_constructor) ( );
                                               /* Constructor */
int                 (*tran_pkt_destructor) ( );
                                              /* Destructor */
int                 tran_hba_len;            /* # bytes for 
                                                 pkt_ha_private */
int                 tran_interconnect_type;  /* transport 
                                                 interconnect */
.fi
.in -2

.sp
.ne 2
.mk
.na
\fB\fBtran_hba_dip\fR\fR
.ad
.RS 26n
.rt  
\fBdev_info\fR pointer to the \fBHBA\fR that supplies the \fBscsi_hba_tran\fR structure.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_hba_private\fR\fR
.ad
.RS 26n
.rt  
Private pointer that the \fBHBA\fR driver can use to refer to the device's soft state structure.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_tgt_private\fR\fR
.ad
.RS 26n
.rt  
Private pointer that the \fBHBA\fR can use to refer to per-target specific data. This field can only be used when the \fBSCSI_HBA_TRAN_CLONE\fR flag is specified in \fBscsi_hba_attach\fR(9F). In this case, the \fBHBA\fR driver must initialize this field in its \fBtran_tgt_init\fR(9E) entry point.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_sd\fR\fR
.ad
.RS 26n
.rt  
Pointer to \fBscsi_device\fR(9S) structure if cloning; otherwise \fINULL\fR.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_tgt_init\fR\fR
.ad
.RS 26n
.rt  
Function entry that allows per-target \fBHBA\fR initialization, if necessary.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_tgt_probe\fR\fR
.ad
.RS 26n
.rt  
Function entry that allows per-target \fBscsi_probe\fR(9F) customization, if necessary.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_tgt_free\fR\fR
.ad
.RS 26n
.rt  
Function entry that allows per-target \fBHBA\fR deallocation, if necessary.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_start\fR\fR
.ad
.RS 26n
.rt  
Function entry that starts a \fBSCSI\fR command execution on the \fBHBA\fR hardware.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_reset\fR\fR
.ad
.RS 26n
.rt  
Function entry that resets a \fBSCSI\fR bus or target device.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_abort\fR\fR
.ad
.RS 26n
.rt  
Function entry that aborts one \fBSCSI\fR command, or all pending \fBSCSI\fR commands.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_getcap\fR\fR
.ad
.RS 26n
.rt  
Function entry that retrieves a \fBSCSI\fR capability.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_setcap\fR\fR
.ad
.RS 26n
.rt  
Function entry that sets a \fBSCSI\fR capability.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_init_pkt\fR\fR
.ad
.RS 26n
.rt  
Function entry that allocates a \fBscsi_pkt\fR structure.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_destroy_pkt\fR\fR
.ad
.RS 26n
.rt  
Function entry that frees a \fBscsi_pkt\fR structure allocated by \fBtran_init_pkt\fR.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_dmafree\fR\fR
.ad
.RS 26n
.rt  
Function entry that frees \fBDMA\fR resources that were previously allocated by \fBtran_init_pkt\fR. Not called for \fBHBA\fR drivers that provide a \fBtran_setup_pkt\fR entry point.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_sync_pkt\fR\fR
.ad
.RS 26n
.rt  
Synchronizes data in \fIpkt\fR after a data transfer has been completed. Not called for \fBHBA\fR drivers that provide a \fBtran_setup_pkt\fR entry point.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_reset_notify\fR\fR
.ad
.RS 26n
.rt  
Function entry that allows a target to register a bus reset notification request with the \fBHBA\fR driver.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_bus_reset\fR\fR
.ad
.RS 26n
.rt  
Function entry that resets the \fBSCSI\fR bus without resetting targets.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_quiesce\fR\fR
.ad
.RS 26n
.rt  
Function entry that waits for all outstanding commands to complete and blocks (or queues) any \fBI/O\fR requests issued.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_unquiesce\fR\fR
.ad
.RS 26n
.rt  
Function entry that allows \fBI/O\fR activities to resume on the \fBSCSI\fR bus.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_setup_pkt\fR\fR
.ad
.RS 26n
.rt  
Optional entry point that initializes a \fBscsi_pkt\fR structure. See \fBtran_setup_pkt\fR(9E).
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_teardown_pkt\fR\fR
.ad
.RS 26n
.rt  
Entry point that releases resources allocated by \fBtran_setup_pkt\fR.
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_pkt_constructor\fR\fR
.ad
.RS 26n
.rt  
Additional optional entry point that performs the actions of a constructor. See \fBtran_setup_pkt\fR(9E).
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_pkt_destructor\fR\fR
.ad
.RS 26n
.rt  
Additional optional entry point that performs the actions of a destructor. See \fBtran_setup_pkt\fR(9E).
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_hba_len\fR\fR
.ad
.RS 26n
.rt  
Size of \fBpkt_ha_private\fR. See \fBtran_setup_pkt\fR(9E).
.RE

.sp
.ne 2
.mk
.na
\fB\fBtran_interconnect_type\fR\fR
.ad
.RS 26n
.rt  
Integer value that denotes the interconnect type of the transport as defined in the \fBservices.h\fR header file.
.RE

.SH SEE ALSO
.sp
.LP
\fBtran_abort\fR(9E), \fBtran_bus_reset\fR(9E), \fBtran_destroy_pkt\fR(9E), \fBtran_dmafree\fR(9E), \fBtran_getcap\fR(9E), \fBtran_init_pkt\fR(9E), \fBtran_quiesce\fR(9E), \fBtran_reset\fR(9E), \fBtran_reset_notify\fR(9E), \fBtran_setcap\fR(9E), \fBtran_setup_pkt\fR(9E), \fBtran_start\fR(9E), \fBtran_sync_pkt\fR(9E), \fBtran_tgt_free\fR(9E), \fBtran_tgt_init\fR(9E), \fBtran_tgt_probe\fR(9E), \fBtran_unquiesce\fR(9E), \fBddi_dma_sync\fR(9F), \fBscsi_hba_attach\fR(9F), \fBscsi_hba_pkt_alloc\fR(9F), \fBscsi_hba_pkt_free\fR(9F), \fBscsi_probe\fR(9F), \fBscsi_device\fR(9S), \fBscsi_pkt\fR(9S)
.sp
.LP
\fIWriting Device Drivers for Oracle Solaris 11.2\fR