Go to main content

man pages section 9: DDI and DKI Properties and Data Structures

Exit Print View

Updated: Thursday, June 13, 2019
 
 

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

Solaris architecture specific (Solaris 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 in Oracle Solaris 11.4