On 09/27/2009 08:02 AM, David Balažic wrote:
Hi! In a discussion with a friend the question whether SATA support full duplex has come up. While there is some info on the web that explains that SATA does not support it, unlike SAS, the firend claims that SATA does not support full-duplex in the sense "the same line can transfer data in both directions", but it does support sending data over the transmit pair and receiving over the receive pair at the same time. An example is : in NCQ setup, the drive is sending data as a response to READ command and during that the host send another queued command to the same drive. Is this possible and supported by SATA ? (I'm interested in SATA support as a standard, not as much about current Linux support)
Well, at the low level FISes can be sent in both directions at once on the link. It's somewhat limited when this can happen, though, and transferring actual data in both directions at the same time isn't possible. The particular case you mentioned also isn't supposed to happen: "The FPDMA Data Phase is defined as the period from reception of a DMA Setup FIS until either the associated transfer count is exhausted or the ERR bit in the shadow Status register is set. During this period the host may not issue new commands to the device nor may the device signal new command completions to the host." Once a transfer starts, it has to either finish or fail without anything else happening in the interim. Basically the actual data transfers over the SATA link are "single-threaded".
-- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html