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.
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