Subject: iSCSI: Distinguishing between Data SNACK and R2T SNACK

From: Ivan Pavelka <[email-masked]>
Date: Mon, 06 May 2002 13:31:07 +0200

Hi Julian,

Please could you explain how a target can distinguish between the Data
SNACK and the R2T SNACK during a
bi-directional data command if the Data-In and R2T are transmitted
simultaneously.

Appendix B. Examples states:
Send data and Receive Data may be transferred simultaneously as in an
atomic Read-Old-Write-New or sequential as in an atomic
Read-Update-Write (in the alter case the R2T may follow the received
data).

Is it then possible for the Data-In and R2T PDUs to be interleaved?

In the chapter 9.16.1 is stated:

For Status SNACK and DataACK, the Initiator Task Tag MUST be set to the
reserved value 0xffffffff. In all other cases, the Initiator Task
Tag field MUST be set to the Initiator Task Tag of the referenced
command.

For DataACK, the Target Transfer Tag has to contain a copy of the
Target Transfer Tag and LUN provided with the SCSI Data-In PDU with the
A bit set to 1. In all other cases, the Target Transfer Tag field MUST
be set to the reserved value of 0xffffffff.

Field:                               Data SNACK PDU:      R2T SNACK PDU:

Type =                            0
0
Initiator Task Tag =      Command Task Tag      Command Task Tag
Target Transfer Tag=     0xffffffff                           0xffffffff

If this is the case, I can't see how the initiator can request for Data
or for R2T.

Regards,

Ivan Pavelka
S3