SCSI_ADDRESS(9S) Data Structures for Drivers SCSI_ADDRESS(9S)

NAME


scsi_address - SCSI address structure

SYNOPSIS


#include <sys/scsi/scsi.h>

INTERFACE LEVEL


illumos architecture specific (illumos DDI)

DESCRIPTION


A scsi_address structure defines the addressing components for a SCSI
target device. The address of the target device is separated into two
components: target number and logical unit number. The two addressing
components are used to uniquely identify any type of SCSI device; however,
most devices can be addressed with the target component of the address.

In the case where only the target component is used to address the device,
the logical unit should be set to 0. If the SCSI target device supports
logical units, then the HBA must interpret the logical units field of the
data structure.

The pkt_address member of a scsi_pkt(9S) is initialized by
scsi_init_pkt(9F).

Complex Addressing


Drivers may set the flag SCSI_HBA_ADDR_COMPLEX in the hba_flags argument to
scsi_hba_attach_setup(9F). When the flag is set, this structure must be
treated as opaque. Instead of storing a traditional target and LUN, the
address is treated as the string form of a unit address. In addition,
rather than storing a pointer to the scsi_hba_tran(9S) structure, the
address structure can store any arbitrary pointer through the
scsi_device_hba_private_get(9F) and scsi_device_hba_private_set(9F)
functions.

STRUCTURE MEMBERS


scsi_hba_tran_t *a_hba_tran; /* Transport vectors for the SCSI bus */
ushort_t a_target; /* SCSI target id */
uchar_t a_lun; /* SCSI logical unit */

a_hba_tran is a pointer to the controlling HBA 's transport vector
structure. The SCSA interface uses this field to pass any transport
requests from the SCSI target device drivers to the HBA driver.

a_target is the target component of the SCSI address

a_lun is the logical unit component of the SCSI address. The logical unit
is used to further distinguish a SCSI target device that supports multiple
logical units from one that does not.

If the flag, SCSI_HBA_ADDR_COMPLEX was set, then the driver must not
dereference any of these fields, the structure contents will have changed
and should be considered opaque.

SEE ALSO


scsi_device_hba_private_get(9F), scsi_device_hba_private_set(9F),
scsi_hba_attach_setup(9F), scsi_init_pkt(9F), scsi_hba_tran(9S),
scsi_pkt(9S)


Writing Device Drivers.

illumos April 23, 2017 illumos