On Wed, Apr 27, 2011 at 10:29 PM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
On 27/04/11 17:31, Artyom Tarasenko wrote:
After a bit experimenting it turend out that I was wrong about synchronous. This seems to be the problem. The comment in the OpenSolaris esp driver
http://src.opensolaris.org/source/xref/xen-gate/onnv-3.4/usr/src/uts/sun/io/... also explains one reason why:
/*
- Set up to send synch. negotiating message. This is getting
- a bit tricky as we dma out the identify message and
* send the other messages via the fifo buffer. */
Looks like the qemu esp doesn't support mixing dma/fifo messages.
(cut)
This seems to be necessary too because the OpenSolaris driver seems to use at least two tags:
esp->e_cur_msgout[i++] = sp->cmd_tag[0]; esp->e_cur_msgout[i++] = sp->cmd_tag[1];
Nice detective work! Is a fix for this particularly easy to create, or would my patch be the best short term fix?
Maybe ESP could be modified so that a DMA operation would just push the data to FIFO, this is probably what happens in a real ESP. But I'd just use your patch for now.