SCSI_HBA_TRAN(9S) Data Structures for Drivers SCSI_HBA_TRAN(9S)

scsi_hba_tran - SCSI Host Bus Adapter (HBA) driver transport vector structure

#include <sys/scsi/scsi.h>

illumos architecture specific (illumos DDI).

A scsi_hba_tran_t structure defines vectors that an HBA driver exports to SCSA interfaces so that HBA specific functions can be executed.

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 */


dev_info pointer to the HBA that supplies the scsi_hba_tran structure.


Private pointer that the HBA driver can use to refer to the device's soft state structure.


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.


Pointer to scsi_device(9S) structure if cloning; otherwise NULL.


Function entry that allows per-target HBA initialization, if necessary.


Function entry that allows per-target scsi_probe(9F) customization, if necessary.


Function entry that allows per-target HBA deallocation, if necessary.


Function entry that starts a SCSI command execution on the HBA hardware.


Function entry that resets a SCSI bus or target device.


Function entry that aborts one SCSI command, or all pending SCSI commands.


Function entry that retrieves a SCSI capability.


Function entry that sets a SCSI capability.


Function entry that allocates a scsi_pkt structure.


Function entry that frees a scsi_pkt structure allocated by tran_init_pkt.


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.


Synchronizes data in pkt after a data transfer has been completed. Not called for HBA drivers that provide a tran_setup_pkt entry point.


Function entry that allows a target to register a bus reset notification request with the HBA driver.


Function entry that resets the SCSI bus without resetting targets.


Function entry that waits for all outstanding commands to complete and blocks (or queues) any I/O requests issued.


Function entry that allows I/O activities to resume on the SCSI bus.


Optional entry point that initializes a scsi_pkt structure. See tran_setup_pkt(9E).


Entry point that releases resources allocated by tran_setup_pkt.


Additional optional entry point that performs the actions of a constructor. See tran_setup_pkt(9E).


Additional optional entry point that performs the actions of a destructor. See tran_setup_pkt(9E).


Size of pkt_ha_private. See tran_setup_pkt(9E).


Integer value that denotes the interconnect type of the transport as defined in the services.h header file.

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 OmniOS