xref: /illumos-gate/usr/src/man/man9s/scsi_hba_tran.9s (revision 3184921aa9155f2314caa4909eba31a0be558b3d)
te
Copyright (c) 2006 Sun Microsystems, Inc., All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
SCSI_HBA_TRAN 9S "May 30, 2006"
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