scsi_hba_detach(9F)
NAME
scsi_hba_attach_setup, scsi_hba_attach, scsi_hba_detach -
SCSI HBA attach and detach routines
SYNOPSIS
#include <sys/scsi/scsi.h>
int scsi_hba_attach_setup(dev_info_t *dip, ddi_dma_attr_t
*hba_dma_attr, scsi_hba_tran_t *hba_tran, int hba_flags);
int scsi_hba_attach(dev_info_t *dip, ddi_dma_lim_t *hba_lim,
scsi_hba_tran_t *hba_tran, int hba_flags, void
*hba_options);
int scsi_hba_detach(dev_info_t *dip);
INTERFACE LEVEL
Solaris architecture specific (Solaris DDI).
PARAMETERS
dip A pointer to the dev_info_t structure, referring to
the instance of the HBA device.
hba_lim
A pointer to a ddi_dma_lim(9S) structure.
hba_tran
A pointer to a scsi_hba_tran(9S) structure.
hba_flags
Flag modifiers. The only defined flag value is
SCSI_HBA_TRAN_CLONE.
hba_options
Optional features provided by the HBA driver for
future extensions; must be NULL.
hba_dma_attr
A pointer to a ddi_dma_attr(9S) structure.
DESCRIPTION
scsi_hba_attach_setup() is the recommended interface over
scsi_hba_attach().
For scsi_hba_attach_setup() and scsi_hba_attach():
scsi_hba_attach() registers the DMA limits hba_lim and the
transport vectors hba_tran of each instance of the HBA dev-
ice defined by dip. scsi_hba_attach_setup() registers the
DMA attributes hba_dma_attr and the transport vectors
hba_tran of each instance of the HBA device defined by dip.
The HBA driver can pass different DMA limits or DMA
attributes, and transport vectors for each instance of the
device, as necessary, to support any constraints imposed by
the HBA itself.
scsi_hba_attach() and scsi_hba_attach_setup() use the
dev_bus_ops field in the dev_ops(9S) structure. The HBA
driver should initialize this field to NULL before calling
scsi_hba_attach() or scsi_hba_attach_setup().
If SCSI_HBA_TRAN_CLONE is requested in hba_flags, the
hba_tran structure will be cloned once for each target
attached to the HBA. The cloning of the structure will occur
before the tran_tgt_init(9E) entry point is called to ini-
tialize a target. At all subsequent HBA entry points,
including tran_tgt_init(9E), the scsi_hba_tran_t structure
passed as an argument or found in a scsi_address structure
will be the 'cloned' scsi_hba_tran_t structure, thus allow-
ing the HBA to use the tran_tgt_private field in the
scsi_hba_tran_t structure to point to per-target data. The
HBA must take care to free only the same scsi_hba_tran_t
structure it allocated when detaching; all 'cloned'
scsi_hba_tran_t structures allocated by the system will be
freed by the system.
scsi_hba_attach() and scsi_hba_attach_setup() attach a
number of integer-valued properties to dip, unless proper-
ties of the same name are already attached to the node. An
HBA driver should retrieve these configuration parameters
via ddi_prop_get_int(9F), and respect any settings for
features provided the HBA.
scsi-options
Optional SCSI configuration bits
SCSI_OPTIONS_DR
If not set, the HBA should not grant
Disconnect privileges to target devices.
SCSI_OPTIONS_LINK
If not set, the HBA should not enable
Linked Commands.
SCSI_OPTIONS_TAG
If not set, the HBA should not operate in
Command Tagged Queueing mode.
SCSI_OPTIONS_PARITY
If not set, the HBA should not operate in
parity mode.
SCSI_OPTIONS_QAS
If not set, the HBA should not make use of
the Quick Arbitration Select feature. Con-
sult your Sun hardware documentation to
determine whether your machine supports
QAS.
SCSI_OPTIONS_FAST
If not set, the HBA should not operate the
bus in FAST SCSImode.
SCSI_OPTIONS_FAST20
If not set, the HBA should not operate the
bus in FAST20 SCSI mode.
SCSI_OPTIONS_FAST40
If not set, the HBA should not operate the
bus in FAST40 SCSI mode.
SCSI_OPTIONS_FAST80
If not set, the HBA should not operate the
bus in FAST80 SCSI mode.
SCSI_OPTIONS_FAST160
If not set, the HBA should not operate the
bus in FAST160 SCSI mode.
SCSI_OPTIONS_FAST320
If not set, the HBA should not operate the
bus in FAST320 SCSI mode.
SCSI_OPTIONS_WIDE
If not set, the HBA should not operate the
bus in WIDE SCSI mode.
SCSI_OPTIONS_SYNC
If not set, the HBA should not operate the
bus in synchronous transfer mode.
scsi-reset-delay
SCSI bus or device reset recovery time, in mil-
liseconds.
scsi-selection-timeout
Default SCSI selection phase timeout value, in
milliseconds. Please refer to individual HBA man
pages for any HBA-specific information
For scsi_hba_detach():
scsi_hba_detach() removes the reference to the DMA limits or
attributes structure and the transport vector for the given
instance of an HBA driver.
RETURN VALUES
scsi_hba_attach(), scsi_hba_attach_setup(), and
scsi_hba_detach() return DDI_SUCCESS if the function call
succeeds, and return DDI_FAILURE on failure.
CONTEXT
scsi_hba_attach() and scsi_hba_attach_setup() should be
called from attach(9E). scsi_hba_detach() should be called
from detach(9E).
SEE ALSO
attach(9E), detach(9E), tran_tgt_init(9E),
ddi_prop_get_int(9F), ddi_dma_attr(9S), ddi_dma_lim(9S),
dev_ops(9S), scsi_address(9S), scsi_hba_tran(9S)
Writing Device Drivers
NOTES
It is the HBA driver's responsibility to ensure that no more
transport requests will be taken on behalf of any SCSI tar-
get device driver after scsi_hba_detach() is called.
The scsi_hba_attach() function is obsolete and will be dis-
continued in a future release. This function is replaced by
scsi_hba_attach_setup().
Man(1) output converted with
man2html