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]
#include <sys/scsi/scsi.h>
Solaris architecture specific (Solaris 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 */
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.
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