SCSI_INQUIRY(9S)         Data Structures for Drivers        SCSI_INQUIRY(9S)
NAME
       scsi_inquiry - SCSI inquiry structure
SYNOPSIS
       #include <sys/scsi/scsi.h>
INTERFACE LEVEL
       illumos DDI specific (illumos 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
       Qualifier. 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
                        connected to this logical unit. If the target cannot
                        determine whether or not a physical device is
                        currently connected, it uses this peripheral
                        qualifier when returning the 
INQUIRY data. This
                        peripheral qualifier 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
                        qualifier, 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
       peripheral 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
       hierarchical 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
       submission.  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 submission. It is being classified as unstable at this time).       
inq_protect, if set, indicates that the logical unit supports
       protection information (this structure member will be deleted before
       submission. 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(4D)).       
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
       commands 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
       vendor.       
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 ALSO
       scsi_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                              November 5, 2008              SCSI_INQUIRY(9S)