|
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 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 |
Title: ATA/ATAPI-7 flow control
- [t13] ATA/ATAPI-7 flow control Sheffield, Robert L
- RE: [t13] ATA/ATAPI-7 flow control Yamini Shastry
- Greg Elkins
