18 Communications devices

18.1 Communications device model

A communications device provides a facility to send and receive information over some medium (usually an electrical or fiber-optic cable) using a defined protocol to one or more other systems that support the same protocol. The media and protocols are often specified in national or international standards, although some are proprietary. Within this subclause, the protocol used on the external medium is called the external protocol.

The SCSI communications device model assumes that information to control the external protocol is embedded within the data transferred by the SEND and GET MESSAGE commands. The structure of the data transferred by these commands is not defined by this International Standard. Vendor-unique MODE pages may be defined to provide additional control over the external protocol.

The SCSI communications device is a target with the characteristics of a network access device, typically attached to a local area network (LAN), public telecommunications network, private telecommunications network, or packet switching network, etc., with no theoretical limits. Such a communications device is often called a network node. The communications device transmits or receives packets of data as requested by the initiator. The contents and meaning of the data packets is not defined by this standard. The bytes in the data packets may or may not contain addressing, path selection, or path control information identifying separate data streams. Additional information may be provided by the stream selection identifier found in the ten and twelve byte SEND MESSAGE and GET MESSAGE commands.

In the SCSI communications device, the target accepts and provides the data packets transferred in accordance with commands received from the initiator. There is an assumption that the initiator and the communications device know the rules by which information is exchanged between them, how the information is to be interpreted by the communications device, and when it is allowable to exchange the information. These rules are not specified by this International Standard.

The initiator requests that the communications device accept a packet of data by transmitting a SEND MESSAGE command. The initiator requests that the communications device return a packet of data by transmitting a GET MESSAGE command. The communications device also supports commands related to configuration of the network access device and network management of the particular environment. MODE SENSE and MODE SELECT are examples of these configuration commands.

If a communications device temporarily has no resource available to handle a data packet from the initiator, or has no data packet to provide to the initiator, or has no resources assigned to perform the operation, the device may then choose one of the following responses:

More than one logical unit can be implemented by a communications device. Logical units can serve as multiple paths to a single network access device, and/or each logical unit can serve as a discrete path to different resources within the device. A single logical unit may also serve as a path to multiple resources if the communications device can interpret information within the data packet and route the packet to the appropriate resource. If the logical unit addressed by the initiator does not have an available resource or data packet associated with it, the communications device may choose to treat the logical unit as an invalid logical unit (see 7.5.3) or respond as described in the previous paragraph.

If the communications device determines that an error or unusual condition has occurred while performing an operation specified by the contents of a data packet, the information describing the condition is normally returned as a part of a data packet from another network device. If the communications device determines that an error or unusual condition has occurred while either executing the SCSI command from the initiator, or during a network medium access transaction, the command is terminated with a CHECK CONDITION. The failures are identified through a REQUEST SENSE command.

The SCSI communications device is distinguished from an SCSI processor device by the fact that the primary destination of the data packets transferred to the communications device is not the target device itself, but another network node. A SCSI communications device passes the data on to an ultimate destination outside the target through a network. In contrast, the SCSI processor device is itself the primary destination of the data packets. Devices requiring protocols and command sets that are totally incompatible with the communications device protocols should be examined carefully to be sure that the incompatibilities are based on functional requirements.

18.1.1 Implementation examples

Several examples of communications device implementations are provided to clarify the range of utility of this device type.

18.1.1.1 Host-to-host communications

In this example of host to host communications, only the SEND MESSAGE command is used.

A communications device (comm A) is attached to a network (net A), and another communications device (comm B) is attached to a network (net B). Comm A takes the initiator role and selects a communications device (comm B), transmitting a packet to comm B using the SEND MESSAGE command. After transmitting the packet on the attached network medium (net B), the action required by the SEND MESSAGE command, comm B assumes the initiator mode and selects comm A as a communications device, and uses a SEND MESSAGE command to transmit a packet on the network (net A) attached to comm A.

Note 209 The SEND MESSAGE command is sufficient to perform complete transactions between communications devices if comm A and comm B act as initiators. This provides the function of a network bridge or gateway for high bandwidth intercommunication among nearby host processors.

18.1.1.2 Host-to-device communications

In this example of host to device communications, the SEND MESSAGE and GET MESSAGE commands are used.

A host system, host A, takes the initiator role and selects a communications device (comm A) attached to a network (net A), transmitting a packet on network net A to some other network node(s) using the SEND MESSAGE command to comm A. Host A then assumes that a result will be obtained by the other network node(s) consistent with rules understood by all involved network devices. Host A generates a GET MESSAGE command to obtain packets from other network nodes. If there are no packets that need handling pending at comm A, comm A may disconnect until a packet arrives. Comm A can then complete the transaction, reconnect to host A and the requested data packet can be returned to host A. Note that Host A need not support target mode and Comm A need not support initiator mode to successfully complete an exchange between the two devices. The host system (host A) can be replaced by a communications device that is capable of acting as an initiator.

18.1.1.3 Multiple role communications

In this example of multiple role communications, the SEND MESSAGE and GET MESSAGE commands are used. The device acts as both a host and a communications device, depending on its needs and the requests made in the network.

A communications device (comm A) is attached to a network (net A), and another communications device (comm B) is attached to a network (net B). Comm A takes the initiator role and selects a communications device (comm B). Comm A transmits a packet for network net B using the SEND MESSAGE command to comm B. Comm A then requests data packets from net B by issuing a GET MESSAGE command to the comm B device. Following these actions, comm B assumes the initiator role and transmits a packet using the SEND MESSAGE command to comm A for transmission to network node(s) located on net A. Comm B then requests data packets from net A by issuing a GET MESSAGE command to comm A.

18.2 Command descriptions for communications devices

The commands for communications devices shall be as shown in table 354.

Table 354 - Commands for communications devices

+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| GET MESSAGE(6)                      |    08h     |   O  |   8.2.17   |
| GET MESSAGE(10)                     |    28h     |   O  |  18.2.2    |
| GET MESSAGE(12)                     |    A8h     |   O  |  18.2.3    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SEND MESSAGE(6)                     |    0Ah     |   M  |  18.2.4    |
| SEND MESSAGE(10)                    |    2Ah     |   O  |  18.2.5    |
| SEND MESSAGE(12)                    |    AAh     |   O  |  18.2.6    |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+ 
All other operation codes for communications devices are reserved for future standardization.

18.2.1 GET MESSAGE(6) command

The GET MESSAGE(6) command (see table 355) transfers data from the target to the initiator.

Table 355 - GET MESSAGE(6) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Allocation length                           |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+ 

18.2.2 GET MESSAGE(10) command

The GET MESSAGE(10) command (see table 356) transfers data from the target to the initiator.

Table 356 - GET MESSAGE(10) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (28h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+ 
The stream selection field specifies a further level of addressing for the data, so that it can be accessed by the target from the appropriate data stream.

18.2.3 GET MESSAGE(12) command

The GET MESSAGE(12) command (see table 357) transfers data from the target to the initiator.

Table 357 - GET MESSAGE(12) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A8h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Allocation length                        ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+ 
The stream selection field specifies a further level of addressing for the data, so that it can be accessed by the target from the appropriate data stream.

18.2.4 SEND MESSAGE(6) command

The SEND MESSAGE(6) command (see table 358) transfers data from the initiator to the target.

Table 358 - SEND MESSAGE(6) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+ 
The transfer length specifies the length in bytes of data that shall be sent during the DATA OUT phase. A transfer length of zero indicates that no data shall be sent. This condition shall not be considered an error.

18.2.5 SEND MESSAGE(10) command

The SEND MESSAGE(10) command (see table 359) transfers data from the initiator to the target.

Table 359 - SEND MESSAGE(10) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+ 
The stream selection field specifies a further level of addressing for the data, so that it can be directed by the target to the appropriate data stream.

Please refer to the SEND MESSAGE(6) command for a description of the fields in this command.

18.2.6 SEND MESSAGE(12) command

The SEND MESSAGE(12) command (see table 360) transfers data from the initiator to the target.

Table 360 - SEND MESSAGE(12) command

+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (AAh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+ 
The stream selection field specifies a further level of addressing for the data, so that it can be directed by the target to the appropriate data stream.

Please refer to the SEND MESSAGE(6) command for a description of the fields in this command.

18.3 Parameters for communication devices

18.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic parameters used with communication devices.

The diagnostic page codes for communication devices are defined in table 361.

Table 361 - Diagnostic page codes

+=============-==================================================-============+
|  Page Code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported log pages                             |   8.3.1.1  |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+ 

18.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters used with communication devices.

The log page codes for communication devices are defined in table 362.

Table 362 - Log page codes

+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |   8.3.2.1  |
|     02h     |  Error counter page (write) page                 |   8.3.2.2  |
|     03h     |  Error counter page (read) page                  |   8.3.2.2  |
|     04h     |  Error counter page (read reverse) page          |   8.3.2.2  |
|     05h     |  Error counter page (verify) page                |   8.3.2.2  |
|     07h     |  Last n error events page                        |   8.3.2.3  |
|     06h     |  Non-medium error page                           |   8.3.2.4  |
|     00h     |  Supported log pages                             |   8.3.2.5  |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+ 

18.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters used with communication devices.

The mode parameter list, including the mode parameter header and mode block descriptor, are defined in 8.3.3.

The medium-type code field is contained in the mode parameter header (see 8.3.3). This field is reserved for communications devices.

The device specific parameter field is contained in the mode parameter header (see 8.3.3). This field is reserved for communications devices.

The density code field is contained in the mode parameter block descriptor (see 8.3.3). This field is reserved for communications devices.

The mode page codes for communications devices are shown in table 363.

Table 363 - Mode page codes

+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |   8.3.3.1  |
|     02h     |  Disconnect-reconnect page                       |   8.3.3.2  |
|     09h     |  Peripheral device page                          |   8.3.3.3  |
|     01h     |  Reserved                                        |            |
|  03h - 08h  |  Reserved                                        |            |
|  0Bh - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+ 

18.4 Definitions specific to communications devices

18.4.1 communications device:

An SCSI device whose principal function is to communicate with one or more other systems, usually over distances that exceed the maximum cable length defined for SCSI.

18.4.2 external medium:

The medium used by the communications device to send or receive information to or from one or more communications devices. The other communications devices may or may not use an SCSI interface.

18.4.3 external protocol:

The protocol(s) used by the communications device to transfer information over the external medium. The external protocol(s) are not defined by this International Standard.