scsi_hba_attach_setup(9F)Kernel Functions for Driversscsi_hba_attach_setup(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.
DESCRIPTIONscsi_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 device 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_set‐
up().
If SCSI_HBA_TRAN_CLONE is requested in hba_flags, the hba_tran struc‐
ture 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 initialize 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 allowing 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 inte‐
ger-valued properties to dip, unless properties of the same name are
already attached to the node. An HBA driver should retrieve these con‐
figuration parameters via ddi_prop_get_int(9F), and respect any set‐
tings 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 Queue‐
ing 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 Arbitra‐
tion Select feature. Consult 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 SCSI‐
mode.
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 milliseconds.
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 VALUESscsi_hba_attach(), scsi_hba_attach_setup(), and scsi_hba_detach()
return DDI_SUCCESS if the function call succeeds, and return DDI_FAIL‐
URE on failure.
CONTEXTscsi_hba_attach() and scsi_hba_attach_setup() should be called from
attach(9E). scsi_hba_detach() should be called from detach(9E).
SEE ALSOattach(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 target device driver after
scsi_hba_detach() is called.
The scsi_hba_attach() function is obsolete and will be discontinued in
a future release. This function is replaced by scsi_hba_attach_setup().
SunOS 5.10 13 Nov 2002 scsi_hba_attach_setup(9F)