Richard said:
Perhaps it’s time you started referring to specific USB specification
sections?
No, Hodgins started this, and I'm not reading
a thousand pages of specs that don't have
the answer, for him. The USB specification
does not describe how to build a DMA logic block.
That's for the chipset designer to do.
USB is not a network device. It does not allow a peripheral
to "send un-announced packets". Because the protocol is
polled, and polling is controlled from the host side, the
host is always in control.
http://en.wikipedia.org/wiki/Usb
"In USB 2.0, the host controller polls the bus for
traffic, usually in a round-robin fashion."
http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols
The sets of packets in transactions, are shown in diagrams here.
http://www.beyondlogic.org/usbnutshell/usb4.shtml#Control
"However under USB if a device requires the attention of the host,
it must wait until the host polls it before it can report that it
needs urgent attention!"
And that should tell you right away, that unannounced or out
of sequence packets, are going no-where fast.
*******
http://en.wikipedia.org/wiki/USB_3.0
"Improved bus utilization – a new feature is added (using packets
NRDY and ERDY) to let a device asynchronously notify the host of
its readiness (no need for polling)"
That's a protocol change, used to pass status for the device, back
to the host. The protocol description appears to logically fulfill
the same role as in USB2.
"The SuperSpeed transaction is initiated by the host making a request
followed by a response from the device.
The device either accepts the request or rejects it. If accepted
then device sends data or accepts data from the host.
If the endpoint is halted, the device shall respond with a STALL handshake.
If there is lack of buffer space or data, it responds with a Not Ready
(NRDY) signal to tell the host that it is not able to process the request.
When the device is ready, it will send an Endpoint Ready (ERDY) to the
host which will then reschedule the transaction."
*******
The next protocol layer up, is the Class specifications.
But the responses are all under host driver control. If the
USB committee were foolish enough to define RDMA over CDC,
then the details could be found here (in the CDC section).
But that still does not allow the peripheral to send unannounced
packets. It would be a security hole, defined in a higher
layer of the protocol model. The host would still be polling and
using the above lower-layer protocols, to hand-deliver such
a request. If there were an RDMA over CDC feature, then
the Simson article would have referred to that, rather than
fiddling around with HID hacks.
http://www.usb.org/developers/devclass_docs#approved
There are a ton of documents to read. A USB implementer
would be the best person to paraphrase this stuff. Me
reading it all from end to end, ain't happening. I get
paid to do stuff like that.
HTH,
Paul