SCSI_HBA_TRAN(9S)        Data Structures for Drivers       SCSI_HBA_TRAN(9S)
NAME
       scsi_hba_tran - SCSI Host Bus Adapter (HBA) driver transport vector
       structure
SYNOPSIS
       #include <sys/scsi/scsi.h>
INTERFACE LEVEL
       illumos architecture specific (illumos DDI).
DESCRIPTION
       A 
scsi_hba_tran_t structure defines vectors that an 
HBA driver
       exports to 
SCSA interfaces so that 
HBA specific functions can be
       executed.
STRUCTURE MEMBERS
         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 */       
tran_hba_dip                                 dev_info pointer to the 
HBA that supplies
                                 the 
scsi_hba_tran structure.       
tran_hba_private                                 Private pointer that the 
HBA driver can use
                                 to refer to the device's soft state
                                 structure.       
tran_tgt_private                                 Private pointer that the 
HBA can use to
                                 refer to per-target specific data. This
                                 field can only be used when the                                 
SCSI_HBA_TRAN_CLONE flag is specified in                                 
scsi_hba_attach(9F). In this case, the 
HBA                                 driver must initialize this field in its                                 
tran_tgt_init(9E) entry point.       
tran_sd                                 Pointer to 
scsi_device(9S) structure if
                                 cloning; otherwise 
NULL.       
tran_tgt_init                                 Function entry that allows per-target 
HBA                                 initialization, if necessary.       
tran_tgt_probe                                 Function entry that allows per-target                                 
scsi_probe(9F) customization, if necessary.       
tran_tgt_free                                 Function entry that allows per-target 
HBA                                 deallocation, if necessary.       
tran_start                                 Function entry that starts a 
SCSI command
                                 execution on the 
HBA hardware.       
tran_reset                                 Function entry that resets a 
SCSI bus or
                                 target device.       
tran_abort                                 Function entry that aborts one 
SCSI                                 command, or all pending 
SCSI commands.       
tran_getcap                                 Function entry that retrieves a 
SCSI                                 capability.       
tran_setcap                                 Function entry that sets a 
SCSI capability.       
tran_init_pkt                                 Function entry that allocates a 
scsi_pkt                                 structure.       
tran_destroy_pkt                                 Function entry that frees a 
scsi_pkt                                 structure allocated by 
tran_init_pkt.       
tran_dmafree                                 Function entry that frees 
DMA resources
                                 that were previously allocated by                                 
tran_init_pkt. Not called for 
HBA drivers
                                 that provide a 
tran_setup_pkt entry point.       
tran_sync_pkt                                 Synchronizes data in 
pkt after a data
                                 transfer has been completed. Not called for                                 
HBA drivers that provide a 
tran_setup_pkt                                 entry point.       
tran_reset_notify                                 Function entry that allows a target to
                                 register a bus reset notification request
                                 with the 
HBA driver.       
tran_bus_reset                                 Function entry that resets the 
SCSI bus
                                 without resetting targets.       
tran_quiesce                                 Function entry that waits for all
                                 outstanding commands to complete and blocks
                                 (or queues) any 
I/O requests issued.       
tran_unquiesce                                 Function entry that allows 
I/O activities
                                 to resume on the 
SCSI bus.       
tran_setup_pkt                                 Optional entry point that initializes a                                 
scsi_pkt structure. See 
tran_setup_pkt(9E).       
tran_teardown_pkt                                 Entry point that releases resources
                                 allocated by 
tran_setup_pkt.       
tran_pkt_constructor                                 Additional optional entry point that
                                 performs the actions of a constructor. See                                 
tran_setup_pkt(9E).       
tran_pkt_destructor                                 Additional optional entry point that
                                 performs the actions of a destructor. See                                 
tran_setup_pkt(9E).       
tran_hba_len                                 Size of 
pkt_ha_private. See                                 
tran_setup_pkt(9E).       
tran_interconnect_type                                 Integer value that denotes the interconnect
                                 type of the transport as defined in the                                 
services.h header file.
SEE ALSO
       tran_abort(9E), 
tran_bus_reset(9E), 
tran_destroy_pkt(9E),       
tran_dmafree(9E), 
tran_getcap(9E), 
tran_init_pkt(9E),       
tran_quiesce(9E), 
tran_reset(9E), 
tran_reset_notify(9E),       
tran_setcap(9E), 
tran_setup_pkt(9E), 
tran_start(9E),       
tran_sync_pkt(9E), 
tran_tgt_free(9E), 
tran_tgt_init(9E),       
tran_tgt_probe(9E), 
tran_unquiesce(9E), 
ddi_dma_sync(9F),       
scsi_hba_attach(9F), 
scsi_hba_pkt_alloc(9F), 
scsi_hba_pkt_free(9F),       
scsi_probe(9F), 
scsi_device(9S), 
scsi_pkt(9S)       Writing Device Drivers                                May 30, 2006               SCSI_HBA_TRAN(9S)