Title: ATA/ATAPI-7 flow control

Just a couple additional comments:

If the transmitter just happens to run out of data simultaneously with the receiver running out of space, it may also send HOLD.  In this case, both sides would be sending HOLD primitives.  Whichever side becomes “ready” first will then send HOLDA.  There is no one to one interlock between a received DWord and R_IP and the same is true for HOLD/HOLDA.

I agree that a few additional words regarding using R_IP to get out of a HOLD situation would be good.  However, the R_IP is the only valid way to return to a “receiving data” state. 

Note: R_IP does not mean the data is valid, just that the receiver has received/is receiving data.

 

Greg Elkins

QLogic Corp.

 

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Yamini Shastry
Sent: Thursday, March 24, 2005 11:24 AM
To: 'Sheffield, Robert L'; [email protected]
Subject: RE: [t13] ATA/ATAPI-7 flow control

 

1 - If the receiver sends a HOLD on the back-channel, what does the transmitter send once it recognizes the HOLD, HOLDA or HOLD?

++ On receiving a hold the transmitter is supposed to hold data transmission and send HOLDA.

2 - How does the receiver, after draining some or all of it's receive buffer, indicate the transmitter may resume data transmission? R_RDY? R_IP?

++ From What I have seen, in general send R_IP is sent to indicate that the receiver is ready to receive data.

If you look at the Link transmit state diagram in ATA-ATAPI-7 v3 Figure 59, it states that:

On receiving a HOLD the Link layer transmitter sends a HOLDA and goes into a state of continuously transmitting HOLDA .

Once it receives any primitive other than HOLD or SYNC or DMAT from the Physical Layer and it has more data to send, it would start transmitting Data words.

This tells me that both R_IP and R_RDY could be used to indicate the transmitter about the readiness to receive more data.

However, If you look at the Link Receive state diagram in ATA-ATAPI-7 v3 Figure 60, It states that:

The transition from HOLD state to Data receive state on the receiver side is done by transmitting R_IP.

It seems to me R_IP is generally a response to receiving valid data, so I'm not sure the intent is that it be used to indicate a readyness to receive more data. There is a diagram in SAS-1.1, though, which shows R_IP used for that purpose. To me it would seem more logical to for the receiver to send R_RDY when it's ready to receive more data, but I don't see that specified anywhere in ATA/ATAPI-7v3.

Does anyone have more insight on how this works? Does the standard need more clarification on this point?

++ The standard needs to specify clearly which primitive should be used to make the transition.

Thanks,

Yamini

Reply via email to