SAS error recovery use case - Device Server detected Data Off set Error

Larry Chen Larry_Chen at pmc-sierra.com
Wed Jul 12 19:31:44 PDT 2006


Formatted message: <A HREF="r0607127_f.htm">HTML-formatted message</A>

Hi Pak,
It was pointed out to me that the Frame Received (ACK/NAK Not Balanced
applies to the frames received and not on the frames transmitted.
Therefore, my argument that the connection needs to be closed in order to
report
Device Server detected Data offset Error is not correct.
Sorry for the confusion. I will eat my crow tonight :-)
Regards,
Larry
  _____  
From: owner-t10 at t10.org [mailto:owner-t10 at t10.org] On Behalf Of Larry Chen
Sent: Wednesday, July 12, 2006 11:22 AM
To: Seto, Pak-lung; George Penokie
Cc: t10 at t10.org
Subject: RE: SAS error recovery use case - Device Server detected Data Off
set Error
Hi Pak,
ST_IFR imposes the interlocked rules when it receives Frames.
Therefore, if the target port wants to insure that the Check condition
is not discarded by the ST_IF then it must force ACK/NACK balance
by closing the connection.
Taken from SAS-1-1 rev 10 page 370
9.2.6.2.2.3 Processing Frame Received confirmations
If this state machine receives a Frame Received (ACK/NAK Balanced)
confirmation or Frame Received (ACK/
NAK Not Balanced) confirmation, then this state machine shall compare the
frame type of the frame received
with the received confirmation (see table 118 in 9.2.1). If the confirmation
was Frame Received (ACK/NAK
Balanced) and the frame type is not XFER_RDY, RESPONSE, or DATA, then this
state machine shall discard
the frame. If the confirmation was Frame Received (ACK/NAK Not Balanced) and
the frame type is not DATA,
then this state machine shall discard the frame.
  _____  
From: Seto, Pak-lung [mailto:pak-lung.seto at intel.com] 
Sent: Wednesday, July 12, 2006 5:27 AM
To: George Penokie; Larry Chen
Cc: t10 at t10.org
Subject: RE: SAS error recovery use case - Device Server detected Data Offset
Error
  _____  
From: owner-t10 at t10.org [mailto:owner-t10 at t10.org] On Behalf Of George
Penokie
Sent: Thursday, July 06, 2006 3:44 PM
To: Larry Chen
Cc: t10 at t10.org
Subject: Re: SAS error recovery use case - Device Server detected Data Offset
Error
Larry, 
The answers to your questions are as follows: 
1 - Under normal operations an SSP_RESPONSE can be sent in the same
connection, but it is not possible to do that if there is a error detected at
the link layer. 
[Seto] But Data Offset Error is not a link layer error, it is a Transport
Layer error, right?
That's because any of the errors you are asking about cause the connection to
be closed by the link layer. So the answer to your specific error case in no
a new connection is required to transmit the SSP_RESPONSE.
[Seto] Don't see why it needs a new connection to transmit SSP_RESPONSE.
2- This cannot happen as the connection is automatically closed when an
ACK/NAK timeout occurs. 
[Seto] I thought Larry's is questioning about - SSP_RESPONSE is received
before ACK/NAK timeout?
3- Effectively yes. All the SSP state machines stop running when either the
Request Close message or the Request Break message is sent by the SSP_D state
and do not start up again until an Enable Disable SSP message is received. 
4- The only two timers that overlap are the ACK/NAK Timeout timer and the
Credit Timeout timer. Both of those timers can cause an action by the
SSP_TF2Tx_Wait state. The description on the priority is in section
7.16.8.6.3.3 Transition SSP_TF2:Tx_Wait to SSP_TF4:Transmit_DONE. Basically
the ACK/NAK Timeout timer has priority over the Credit Timeout timer. 
The DONE timeout timer is only relevant after a Transmitted DONE message is
received by the SSP_D state at which time no other link layer timer is
relevant. 
The other link layer timers are: 
The Open Timeout timer - That timer is only used when the SL_CC state machine
is in the SL_CC!:ArbSel state. It is initialized on entry and control is
completely defined within that state. 
The Close Timeout timer - That timer is only used when the SL_CC state
machine is in the SL_CC4:DisconnectWait state. It is initialized on entry and
control is completely defined within that state. 
The Break Timeout timer - That timer is only used when the SL_CC state
machine is in the SL_CC5:BreakWait state. It is initialized on entry and
control is completely defined within that state. 
Bye for now,
George Penokie
Dept 9A8 030-3 A410
E-Mail:    gop at us.ibm.com
Internal:  553-5208
External: 507-253-5208 
Larry Chen <Larry_Chen at pmc-sierra.com> 
Sent by: owner-t10 at t10.org 
06/29/2006 07:07 PM 
To
"T10 (t10 at t10.org)" <t10 at t10.org> 
cc
Subject
SAS error recovery use case - Device Server detected Data Offset	
Error
Hi, 
I have an SAS error recovery use case which can not 
Solve by myself after reading the SAS-1.1 specification Rev 9e. 
The use case scenario starts when the Device Server detects 
A Data Offset Error (assume that the first of two data 
Frames is dropped/lost) during a Write command. 
As stated in the spec, the Device Server sets the appropriate 
SCSI error message in the SSP_RESPONSE frame and sends 
It to the initiator. 
Ex) 
Initiator						   Target 
---------------SSP_Command(WRITE)--------------> 
<-------------------------------ACK------------------------- 
<------------------------------SSP_XFR_RDY---------- 
---------------------------------ACK-------------------------> 
--------------SSP_DATA-1---------------> DROPPED/LOST 
--------------SSP-DATA-2-------------------------------->      Data Offset
Error is detected 
<--------------------------------ACK-2----------------------- 
<-------------SSP_RESPONSE(DATA_OFFSET_ERROR) 
QUESTION-1: Can SSP_RESPONSE be sent in the same connection 
Or does it need to open a new connection? 
QUESTION-2: If SSP_RESPONSE is received when ACK-TOV is still 
Running, is the ACK_TOV timer supposed to be cancelled? If so, can someone 
Refer me to the place in the SAS spec where this is mentioned. 
QUESTION-3: Does closing a connection force cancelling of all 
Active timers, such as, ACK_TOV timer? 
QUESTION-4: does SAS spec mention about how ACK_TOV, 
DONE_TOV, AND BREAK_TOV timers interact e.g. priority, preemption? 



More information about the T10 mailing list