scsi_inquiry(9S) Data Structures for Drivers scsi_inquiry(9S)NAMEscsi_inquiry - SCSI inquiry structure
SYNOPSIS
#include <sys/scsi/scsi.h>
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
DESCRIPTION
The scsi_inquiry structure contains 36 required bytes, followed by a
variable number of vendor-specific parameters. Bytes 59 through 95, if
returned, are reserved for future standardization. This structure is
part of scsi_device(9S) structure and typically filled in by
scsi_probe(9F).
STRUCTURE MEMBERS
Lines that start with an 'X' will be deleted before submission;
they are being classified as unstable at this time.
uchar_t inq_dtype; /* Periph. qualifier, dev. type */
uchar_t inq_rmb :1; /* Removable media */
uchar_t inq_qual :7; /* Dev. type qualifier */
uchar_t inq_iso :2; /* ISO version */
uchar_t inq_ecma :3; /* EMCA version */
uchar_t inq_ansi :3; /* ANSII version */
uchar_t inq_aenc :1; /* Async event notif. cap. */
uchar_t inq_trmiop :1; /* Supports TERMINATE I/O PROC msg */
uchar_t inq_normaca :1; /* setting NACA bit supported */
uchar_t inq_hisup :1; /* hierarchical addressing model */
uchar_t inq_rdf :4; /* Response data format */
uchar_t inq_len /* Additional length */
uchar_t inq_sccs :1; /* embedded storage array */
Xuchar_t inq_acc :1; /* access controls coordinator */
uchar_t inq_tpgse :1; /* explicit asymmetric lun access */
uchar_t inq_tpgsi :1; /* implicit asymmetric lun access */
Xuchar_t inq_3pc :1; /* third-party copy */
Xuchar_t inq_protect :1; /* supports protection information */
uchar_t inq_bque :1; /* basic queueing */
uchar_t inq_encserv :1; /* embedded enclosure services */
uchar_t inq_dualp :1; /* dual port device */
uchar_t inq_mchngr :1; /* embedded/attached to medium chngr */
uchar_t inq_addr16 :1; /* SPI: supports 16 bit wide SCSI addr */
uchar_t inq_wbus16 :1; /* SPI: Supports 16 bit wide data xfers */
uchar_t inq_sync :1; /* SPI: Supports synchronous data xfers */
uchar_t inq_linked :1; /* Supports linked commands */
uchar_t inq_cmd_que :1; /* Supports command queueing */
uchar_t inq_sftre :1; /* Supports Soft Reset option */
char inq_vid[8]; /* Vendor ID */
char inq_pid[16]; /* Product ID */
char inq_revision[4]; /* Revision level */
uchar_t inq_clk :2; /* SPI3 clocking */
uchar_t inq_qas :1; /* SPI3: quick arb sel */
uchar_t inq_ius :1; /* SPI3: information units */
inq_dtype identifies the type of device. Bits 0 - 4 represent the
Peripheral Device Type and bits 5 - 7 represent the Peripheral Quali‐
fier. The following values are appropriate for Peripheral Device Type
field:
DTYPE_DIRECT Direct-access device (for example, magnetic disk).
DTYPE_SEQUENTIAL Sequential-access device (for example, magnetic
tape).
DTYPE_PRINTER Printer device.
DTYPE_PROCESSOR Processor device.
DTYPE_WORM Write-once device (for example, some optical
disks).
DTYPE_RODIRECT CD-ROM device.
DTYPE_SCANNER Scanner device.
DTYPE_OPTICAL Optical memory device (for example, some optical
disks).
DTYPE_CHANGER Medium Changer device (for example, jukeboxes).
DTYPE_COMM Communications device.
DTYPE_ARRAY_CTRL Array controller device (for example, RAID).
DTYPE_ESI Enclosure services device.
DTYPE_RBC Simplified direct-access device.
DTYPE_OCRW Optical card reader/writer device.
DTYPE_BRIDGE Bridge.
DTYPE_OSD Object-based storage device.
DTYPE_UNKNOWN Unknown or no device type.
DTYPE_MASK Mask to isolate Peripheral Device Type field.
The following values are appropriate for the Peripheral Qualifier
field:
DPQ_POSSIBLE The specified peripheral device type is currently con‐
nected to this logical unit. If the target cannot
determine whether or not a physical device is cur‐
rently connected, it uses this peripheral qualifier
when returning the INQUIRY data. This peripheral qual‐
ifier does not imply that the device is ready for
access by the initiator.
DPQ_SUPPORTED The target is capable of supporting the specified
peripheral device type on this logical unit. However,
the physical device is not currently connected to this
logical unit.
DPQ_NEVER The target is not capable of supporting a physical
device on this logical unit. For this peripheral qual‐
ifier, the peripheral device type shall be set to
DTYPE_UNKNOWN to provide compatibility with previous
versions of SCSI. For all other peripheral device type
values, this peripheral qualifier is reserved.
DPQ_VUNIQ This is a vendor-unique qualifier.
DPQ_MASK Mask to isolate Peripheral Qualifier field.
DTYPE_NOTPRESENT is the peripheral qualifier DPQ_NEVER and the periph‐
eral device type DTYPE_UNKNOWN combined.
inq_rmb, if set, indicates that the medium is removable.
inq_qual is a device type qualifier.
inq_iso indicates ISO version.
inq_ecma indicates ECMA version.
inq_ansi indicates ANSI version.
inq_aenc, if set, indicates that the device supports asynchronous event
notification capability as defined in SCSI-2 specification.
inq_trmiop, if set, indicates that the device supports the TERMINATE
I/O PROCESSmessage.
inq_normaca, if set, indicates that the device supports setting the
NACA bit to 1 in CDB.
inq_hisip, if set, indicates the SCSI target device uses the hierarchi‐
cal addressing model to assign LUNs to logical units.
inq_rdf, if set, indicates the INQUIRY data response data format:
"RDF_LEVEL0" means that this structure complies with the SCSI-1 spec,
"RDF_CCS" means that this structure complies with the CCS pseudo-spec,
and "RDF_SCSI2" means that the structure complies with the SCSI-2/3
spec.
inq_len, if set, is the additional length field that specifies the
length in bytes of the parameters.
inq_sccs, if set, indicates the target device contains an embedded
storage array controller component.
inq_acc, if set, indicates that the logical unit contains an access
controls coordinator (this structure member will be deleted before sub‐
mission. It is being classified as unstable at this time).
inq_tpgse, if set, indicates that implicit asymmetric logical unit
access is supported.
inq_tpgsi, if set, indicates that explicit asymmetric logical unit
access is supported.
inq_3pc, if set, indicates that the SCSI target device supports third-
party copy commands (this structure member will be deleted before sub‐
mission. It is being classified as unstable at this time).
inq_protect, if set, indicates that the logical unit supports protec‐
tion information (this structure member will be deleted before submis‐
sion. It is being classified as unstable at this time).
inq_bque, if set, indicates that the logical unit supports basic task
management.
inq_encserv, if set, indicates that the device contains an embedded
enclosure services component (ses(7D)).
inq_dualp, if set, indicates that the SCSI target device supports two
or more ports.
inq_mchngr, if set, indicates that the SCSI target device supports com‐
mands to control an attached media changer.
inq_addr16, if set, indicates that the device supports 16-bit wide SCSI
addresses.
inq_wbus16, if set, indicates that the device supports 16-bit wide data
transfers.
inq_sync, if set, indicates that the device supports synchronous data
transfers.
inq_linked, if set, indicates that the device supports linked commands
for this logical unit.
inq_cmdque, if set, indicates that the device supports tagged command
queueing.
inq_sftre, if reset, indicates that the device responds to the RESET
condition with the hard RESET alternative. If this bit is set, this
indicates that the device responds with the soft RESET alternative.
inq_vid contains eight bytes of ASCII data identifying the vendor of
the product.
inq_pid contains sixteen bytes of ASCII data as defined by the vendor.
inq_revision contains four bytes of ASCII data as defined by the ven‐
dor.
inq_clk clocking of the SPI3 target port.
inq_gas the SPI3 target port supports quick arbitration and selection.
inq_ius the SPI3 target device supports information unit transfers.
SEE ALSOscsi_probe(9F), scsi_device(9S)
ANSI Small Computer System Interface-2 (SCSI-2)
ANSI SCSI Primary Commands-3 (SPC-3)
http://t10.org/drafts.htm#spc3
Writing Device Drivers
SunOS 5.11 5 Nov 2008 scsi_inquiry(9S)