Bidirectional transfers in SPI-4

Elliott, Robert (Hou) Robert.Elliott at
Mon Oct 23 10:49:59 PDT 2000

* From the T10 Reflector (t10 at, posted by:
* "Elliott, Robert (Hou)" <Robert.Elliott at>
I think you can interpret SPI-3 as prohibiting non-IU compatible tag numbers
in an L_Q.  The L_Q definition defines the tag field as 16 bits wide, but
refers to 16.4.1 for details.  16.4.1 defines a tag as 8 bits wide with a
maximum of 256 tags per logical unit.  That was probably not the intent and
should be changed in SPI-4 (along with adding Bill's suggested behavior for
when IU_REQ is changed).

The logical unit number width mismatch is definitely present.  

(from SPI-3 rev 14)
14.3.2 SPI L_Q information unit
The TAG field is an 16-bit unsigned integer assigned by the application
client and sent to the initiator in the
send SCSI command request (see 19.3.2). For more details on tags see 16.4.1.

16.4 Task attribute messages
16.4.1 Task attribute message overview and codes
Two byte task attribute messages are used to specify an identifier, called a
tag, for a task that establishes
the I_T_L_Q nexus. The TAG field is an 8-bit unsigned integer assigned by
the application client and sent to
the initiator in the send SCSI command request (see 19.3.2). The tag for
every task for each I_T_L nexus
shall be uniquely assigned by the application client. There is no
requirement for the task manager to check
whether a tag is currently in use for another I_T_L nexus. If the task
manager checks the tag value and
receives a tag that is currently in use for the I_T_L nexus, then it shall
abort all tasks for the initiator and the
associated logical unit and shall return CHECK CONDITION status for the task
that caused the overlapped
tag. The sense key shall be set to ABORTED COMMAND and the additional sense
code shall be set to
OVERLAPPED COMMANDS ATTEMPTED with the additional sense code qualifier set
to the value of the
duplicate tag (see 17.3). A tag becomes available for reassignment when the
task ends. The numeric
value of a tag is arbitrary, providing there are no outstanding duplicates,
and shall not affect the order of

For each logical unit on each target, each application client has up to 256
tags to assign to tasks. Thus a
target with eight logical units could have up to 14 336 tasks concurrently
in existence if there were seven
initiators on the bus.

PC: Robert.Elliott at
UNIX: relliott at
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at

More information about the T10 mailing list