initiator retransmission of DATA frames with transport layer retries

George Penokie gop at us.ibm.com
Wed Jul 27 11:22:33 PDT 2005


* From the T10 Reflector (t10 at t10.org), posted by:
* George Penokie <gop at us.ibm.com>
*
This is a multipart message in MIME format.
--=_alternative 0064C6C28625704B_=
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable


Rich,=20

Before I answer what I believe your question is I would like to =
describe
the scenario that can cause it to happen and also what is happening on
the target side.=20

Your step 1 is normal operation=20
Your step 2 is normal operation=20
Your step 3 is normal operation=20
Your step 4 assumes frame level retries are enabled and is normal
operation under that condition=20

At this point there are two possible options neither of which are
currently spelled out in the transport layer state machines.=20

Option 1=20
Your step 5 can only happen if the target does not receive the ACK that
the initiator sent for the XFER_RDY. Because the target did not receive
the ACK it will be ignoring the write data at the transport layer =
(i.e.,
the write data will not be written to the media and/or not written into
the buffer). However, it will be retuning ACKs for the data frames as
that is a link layer operation that is independent from the transport
layer frame handling. The target will resend the XFER_RDY after an
ACK/NAK Timeout or a Connection Lost Without ACK/NAK.=20
Your step 6 is correct. The initiator cannot set the
CHANING_DATA_POINTER bit set to one in any DATA frame unless the
initiator is doing a retry on it's own. In this case the retry was as a
result of a target initiated operation and therefore initiator cannot
set the bit. The target determines the valid frame by checking the TPTT
field.=20

Option 2=20
Your step 5 will never happen. The reason is that when the detects a
frame has been received for a XFER_RDY (even though it does not receive
an ACK) it will assume that XFER_RDY was received and will start
processing the DATA frames.=20
Your step 6 would be a retransmission of the frame with the TPPTT =3D A
and the CHANING_DATA_POINTER bit set to one.=20

At this point I believe option 2 should be placed into SAS 1.1 as this
technique is being used in other places in the transport layer.=20

Bye for now,
George Penokie

Dept 2C6  114-2 N212
E-Mail:    gop at us.ibm.com
Internal:  553-5208
External: 507-253-5208   FAX: 507-253-2880





"Deglin, Rich" <Richard_Deglin at adaptec.com>=20
Sent by: owner-t10 at t10.org=20


07/25/2005 04:08 PM=20

To
<t10 at t10.org>=20

cc
"Hu, Lin" <Lin_Hu at adaptec.com>, "Chen, Larry" <Larry_Chen at adaptec.com>=20

Subject
initiator retransmission of DATA frames with transport layer retries

=09





* From the T10 Reflector (t10 at t10.org), posted by:
* "Deglin, Rich" <Richard_Deglin at adaptec.com>
*
This is a multi-part message in MIME format.

------_=3D_NextPart_001_01C5915C.F053CB8C
Content-Type: text/plain;
                charset=3D"us-ascii"
Content-Transfer-Encoding: quoted-printable

I have not been able to clearly make out the meaning of this phrase in
sec 9.2.4.5.2:
=3D20
"For both reads and writes, the CHANGING DATA POINTER bit is set to one
in the first retransmitted DATA frame
and CHANGING DATA POINTER bit is set to zero in subsequent DATA =
frames."
=3D20
Consider the following scenario:
=3D20
1. Initiator transmits write command to target
2. Target transmits XFER_RDY frame to initiator (TPTT =3D3D A, offset =
=3D3D
=3D
X,
RETRANSMIT =3D3D 0)
3. Initiator transmits DATA frames for TPTT =3D3D A
4. Initiator receives NAK for one of the write DATA frames and prepares
to retransmit the DATA frames
5. Target retransmits XFER_RDY frame to initiator (TPTT =3D3D B, offset =
=3D
=3D3D X,
RETRANSMIT =3D3D 1)
6. Initiator abandons its retransmission for TPTT =3D3D A and begins
transmission for TPTT =3D3D B
=3D20
Q: does initiator set the CHANGING_DATA_POINTER bit in the first DATA
frame of the transmission for TPTT =3D3D B?
=3D20
Rich Deglin
Principal Software Engineer
Vitesse Semiconductor, Inc.

------_=3D_NextPart_001_01C5915C.F053CB8C
Content-Type: text/html;
                charset=3D"us-ascii"
Content-Transfer-Encoding: quoted-printable

xmlns:o=3D3D"urn:schemas-microsoft-com:office:office" =3D
xmlns:w=3D3D"urn:schemas-microsoft-com:office:word" =3D
xmlns=3D3D"http://www.w3.org/TR/REC-html40">=20

I have not been able to clearly make out the meaning =3D of this phrase =
in
sec 9.2.4.5.2:



=1CFor both reads and writes, the =3D CHANGING DATA POINTER bit is set =
to
one in the first retransmitted DATA =3D frame

and CHANGING DATA POINTER =3D bit is set to zero in subsequent DATA
frames.=1D



Consider the following =3D scenario:



1. Initiator transmits =3D write command to target

2. Target transmits =3D XFER_RDY frame to initiator (TPTT =3D3D A, =
offset
=3D3D X, RETRANSMIT =3D3D =3D 0)

3. Initiator transmits DATA =3D frames for TPTT =3D3D A

4. Initiator receives NAK =3D for one of the write DATA frames and
prepares to retransmit the DATA =3D frames

5. Target retransmits =3D XFER_RDY frame to initiator (TPTT =3D3D B, =
offset
=3D3D X, RETRANSMIT =3D3D =3D 1)

6. Initiator abandons its retransmission for TPTT =3D3D A and begins
transmission for TPTT =3D3D =3D B



Q: does initiator set the CHANGING_DATA_POINTER bit =3D in the first =
DATA
frame of the transmission for TPTT =3D3D =3D B?



Rich Deglin

Principal Software =3D Engineer

Vitesse=3D Semiconductor, Inc.

------_=3D_NextPart_001_01C5915C.F053CB8C--


*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org



--=_alternative 0064C6C28625704B_=
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable


<br><font size=3D2 face=3D"sans-serif">Rich,</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Before I answer what I believe =
your
question is I would like to describe the scenario that can cause it to
happen and also what is happening on the target side.</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Your step 1 is normal =
operation</font>
<br><font size=3D2 face=3D"sans-serif">Your step 2 is normal =
operation</font>
<br><font size=3D2 face=3D"sans-serif">Your step 3 is normal =
operation</font>
<br><font size=3D2 face=3D"sans-serif">Your step 4 assumes frame level =
retries
are enabled and is normal operation under that condition</font>
<br>
<br><font size=3D2 face=3D"sans-serif">At this point there are two =
possible
options neither of which are currently spelled out in the transport =
layer
state machines.</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Option 1</font>
<br><font size=3D2 face=3D"sans-serif">Your step 5 can only happen if =
the target
does not receive the ACK that the initiator sent for the XFER_RDY. =
Because
the target did not receive the ACK it will be ignoring the write data =
at
the transport layer (i.e., the write data will not be written to the =
media
and/or not written into the buffer). However, it will be retuning ACKs
for the data frames as that is a link layer operation that is =
independent
|from the transport layer frame handling. The target will resend the =
XFER_RDY
after an ACK/NAK Timeout or a Connection Lost Without ACK/NAK.</font>
<br><font size=3D2 face=3D"sans-serif">Your step 6 is correct. The =
initiator
cannot set the CHANING_DATA_POINTER bit set to one in any DATA frame =
unless
the initiator is doing a retry on it's own. In this case the retry was
as a result of a target initiated operation and therefore initiator =
cannot
set the bit. The target determines the valid frame by checking the TPTT
field.</font>
<br>
<br><font size=3D2 face=3D"sans-serif">Option 2</font>
<br><font size=3D2 face=3D"sans-serif">Your step 5 will never happen. =
The reason
is that when the detects a frame has been received for a XFER_RDY (even
though it does not receive an ACK) it will assume that XFER_RDY was =
received
and will start processing the DATA frames.</font>
<br><font size=3D2 face=3D"sans-serif">Your step 6 would be a =
retransmission
of the frame with the TPPTT =3D A and the CHANING_DATA_POINTER bit set =
to
one.</font>
<br>
<br><font size=3D2 face=3D"sans-serif">At this point I believe option 2 =
should
be placed into SAS 1.1 as this technique is being used in other places
in the transport layer.</font>
<br><font size=3D2 face=3D"sans-serif"><br>
Bye for now,<br>
George Penokie<br>
<br>
Dept 2C6 &nbsp;114-2 N212<br>
E-Mail: &nbsp; &nbsp;gop at us.ibm.com<br>
Internal: &nbsp;553-5208<br>
External: 507-253-5208 &nbsp; FAX: 507-253-2880<br>
<br>
</font>
<br>
<br>
<br>
<table width=3D100%>
<tr valign=3Dtop>
<td width=3D40%><font size=3D1 face=3D"sans-serif"><b>"Deglin, =
Rich"
<Richard_Deglin at adaptec.com&gt;</b> </font>
<br><font size=3D1 face=3D"sans-serif">Sent by: =
owner-t10 at t10.org</font>
<p><font size=3D1 face=3D"sans-serif">07/25/2005 04:08 PM</font>
<td width=3D59%>
<table width=3D100%>
<tr>
<td>
<div align=3Dright><font size=3D1 face=3D"sans-serif">To</font></div>
<td valign=3Dtop><font size=3D1 =
face=3D"sans-serif"><t10 at t10.org&gt;</font>
<tr>
<td>
<div align=3Dright><font size=3D1 face=3D"sans-serif">cc</font></div>
<td valign=3Dtop><font size=3D1 face=3D"sans-serif">"Hu, Lin" =
<Lin_Hu at adaptec.com&gt;,
"Chen, Larry" <Larry_Chen at adaptec.com&gt;</font>
<tr>
<td>
<div align=3Dright><font size=3D1 =
face=3D"sans-serif">Subject</font></div>
<td valign=3Dtop><font size=3D1 face=3D"sans-serif">initiator =
retransmission
of DATA frames with transport layer retries</font></table>
<br>
<table>
<tr valign=3Dtop>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=3D2><tt>* From the T10 Reflector (t10 at t10.org), posted =
by:<br>
* "Deglin, Rich" <Richard_Deglin at adaptec.com&gt;<br>
*<br>
This is a multi-part message in MIME format.<br>
<br>
------_=3D_NextPart_001_01C5915C.F053CB8C<br>
Content-Type: text/plain;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
charset=3D"us-ascii"<br>
Content-Transfer-Encoding: quoted-printable<br>
<br>
I have not been able to clearly make out the meaning of this phrase =
in<br>
sec 9.2.4.5.2:<br>
=3D20<br>
"For both reads and writes, the CHANGING DATA POINTER bit is set =
to
one<br>
in the first retransmitted DATA frame<br>
and CHANGING DATA POINTER bit is set to zero in subsequent DATA =
frames."<br>
=3D20<br>
Consider the following scenario:<br>
=3D20<br>
1. Initiator transmits write command to target<br>
2. Target transmits XFER_RDY frame to initiator (TPTT =3D3D A, offset =
=3D3D
=3D<br>
X,<br>
RETRANSMIT =3D3D 0)<br>
3. Initiator transmits DATA frames for TPTT =3D3D A<br>
4. Initiator receives NAK for one of the write DATA frames and =
prepares<br>
to retransmit the DATA frames<br>
5. Target retransmits XFER_RDY frame to initiator (TPTT =3D3D B, offset =
=3D<br>
=3D3D X,<br>
RETRANSMIT =3D3D 1)<br>
6. Initiator abandons its retransmission for TPTT =3D3D A and =
begins<br>
transmission for TPTT =3D3D B<br>
=3D20<br>
Q: does initiator set the CHANGING_DATA_POINTER bit in the first =
DATA<br>
frame of the transmission for TPTT =3D3D B?<br>
=3D20<br>
Rich Deglin<br>
Principal Software Engineer<br>
Vitesse Semiconductor, Inc.<br>
<br>
------_=3D_NextPart_001_01C5915C.F053CB8C<br>
Content-Type: text/html;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
charset=3D"us-ascii"<br>
Content-Transfer-Encoding: quoted-printable<br>
<br>
xmlns:o=3D3D"urn:schemas-microsoft-com:office:office" =3D =
xmlns:w=3D3D"urn:schemas-microsoft-com:office:word"
=3D xmlns=3D3D"http://www.w3.org/TR/REC-html40&quot;> <br>
<br>
I have not been able to clearly make out the meaning =3D of this phrase =
in
sec 9.2.4.5.2:<br>
<br>
 <br>
<br>
=1CFor both reads and writes, the =3D CHANGING DATA POINTER bit is set =
to
one in the first retransmitted DATA =3D frame<br>
<br>
and CHANGING DATA POINTER =3D bit is set to zero in subsequent DATA =
frames.=1D<br>
<br>
 <br>
<br>
Consider the following =3D scenario:<br>
<br>
 <br>
<br>
1. Initiator transmits =3D write command to target<br>
<br>
2. Target transmits =3D XFER_RDY frame to initiator (TPTT =3D3D A, =
offset =3D3D
X, RETRANSMIT =3D3D =3D 0)<br>
<br>
3. Initiator transmits DATA =3D frames for TPTT =3D3D A<br>
<br>
4. Initiator receives NAK =3D for one of the write DATA frames and =
prepares
to retransmit the DATA =3D frames<br>
<br>
5. Target retransmits =3D XFER_RDY frame to initiator (TPTT =3D3D B, =
offset
=3D3D X, RETRANSMIT =3D3D =3D 1)<br>
<br>
6. Initiator abandons its retransmission for TPTT =3D3D A and begins =
transmission
for TPTT =3D3D =3D B<br>
<br>
 <br>
<br>
Q: does initiator set the CHANGING_DATA_POINTER bit =3D in the first =
DATA
frame of the transmission for TPTT =3D3D =3D B?<br>
<br>
 <br>
<br>
Rich Deglin<br>
<br>
Principal Software =3D Engineer<br>
<br>
Vitesse=3D Semiconductor, Inc.<br>
<br>
------_=3D_NextPart_001_01C5915C.F053CB8C--<br>
<br>
<br>
*<br>
* For T10 Reflector information, send a message with<br>
* 'info t10' (no quotes) in the message body to majordomo at t10.org<br>
</tt></font>
<br>
--=_alternative 0064C6C28625704B_=--





More information about the T10 mailing list