|
|
The SVR5 extended SCSI addressing scheme removes the limitations regarding the maximum number of devices. This is required for Fibre Channel support.
The conventional address model supported 32 devices with 32 Logical Units per device. With the extended SCSI addressing scheme, this is replaced by a simple integer (providing 2^32 unique addresses) and can be translated by SDI into whatever address is appropriate for the given HBA). Both the conventional and extended addressing schemes are supported by SDI 4, but SDI 4 drivers must use the function set that supports extended addressing.
Drivers written for HBAs
that use the extended addressing scheme
must set the flag HBA_EXT_ADDRESS
in the version_num
member of the
hba_idata_v5(D4sdi)
structure and use the macros documented on the
scsi_ad(D4sdi)
manual page to access configuration information.
The scsi_ad(D4sdi) structure contains a pointer to the scsi_extended_adr structure that is used when the extended address forms of the SDI functions are used. Use the sdi_ext_address(D3sdi) function to determine if the HBA driver is using the extended addressing scheme.
The following table lists the SDI functions that have alternate forms when used with extended addressing:
Non-extended address form (SDI 3) | Extended address form (SDI 4) |
---|---|
sdi_freeblk(D3sdi) | sdi_xfreeblk(D3sdi) |
sdi_getbcb(D3sdi) | sdi_xgetbcb(D3sdi) |
sdi_getblk(D3sdi) | sdi_xgetblk(D3sdi) |
sdi_icmd(D3sdi) | sdi_xicmd(D3sdi) |
sdi_name(D3sdi) | sdi_xname(D3sdi) |
sdi_send(D3sdi) | sdi_xsend(D3sdi) |
sdi_translate(D3sdi) | sdi_xtranslate(D3sdi) |
The sdi_x* versions of these functions have an additional parameter that is set to HBA_EXT_ADDRESS for drivers that understand the extended SCSI addressing scheme, or to 0 (zero) if conventional SCSI addressing is used.
For compatibility,
a default translation for the simple SCSI addresses
is provided by using the
sa_lun
, sa_bus
,
sa_exta
, and sa_ct
members.