On 16/03/2013 10:15 PM, Greg KH wrote:
Look at the data on the wire, and notice all of the delay and gaps that could have been filled with real data, but the protocol involved here (the "old" usb storage spec) prevents the full use of the xhci controller. Now if you actually were able to keep the host controller busy, then I would guess that the snooping option might actually be noticeable. But until you can do that, you can't even see it in the measurements, right?
Snooping is not something that happens on the USB bus. It happens between the memory controller and processor caches. Doing the buffer flush in software does not reduce the load on the memory sub-system, it just reorders its work in time - as well as creating processor load to issue the clflush instructions. If you believe the xHC can max out its upstream PCI express bandwidth, then it's going to be affected by the buffer flush either way. If the buffer is flushed by the snooping mechanism - the PCIe lane may be delayed while the xHC is transferring packet N. If the processor flushes buffer for packet N earlier, then the xHC may be delayed while transmitting packet N-1. There's no reason for believing that in a long sustained transfer anything can be gained by this reordering.
-- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html