* [Qemu-devel] difference between receive_raw() and receive() NetClientInfo methods ?
@ 2013-06-06 9:40 Luigi Rizzo
2013-06-07 12:29 ` Stefan Hajnoczi
0 siblings, 1 reply; 2+ messages in thread
From: Luigi Rizzo @ 2013-06-06 9:40 UTC (permalink / raw)
To: qemu-devel; +Cc: Giuseppe Lettieri, Luigi Rizzo, Vincenzo Maffione
[-- Attachment #1: Type: text/plain, Size: 993 bytes --]
Can someone clarify what is the difference between the two methods
r
eceive_raw() and receive() in NetClientInfo ?
tap seems to be the only backend actually implementing receive_raw(),
but apart from prepending a vnet_hdr i cannot tell what is this for,
and whether receive_raw() is a custom addon for tap, or it can be used
by other backends to implement different features.
The reason I am asking is that we are working on a "fewer copies"
path between guests, and one of the things we need is an
asynchronous "receive" so that a backend can notify the frontend
when a buffer has been actually consumed.
Right now nc->info->receive() and friends are all synchronous,
and there is no mechanism to support asynchronous completion,
which forces the backend to make a copy if it cannot
complete the request inline.
Hence i probably need to add another method to NetClientInfo
so that the frontend can register the callback, or pass it to
the backend together with the buffer/iov
thanks
luigi
[-- Attachment #2: Type: text/html, Size: 3190 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] difference between receive_raw() and receive() NetClientInfo methods ?
2013-06-06 9:40 [Qemu-devel] difference between receive_raw() and receive() NetClientInfo methods ? Luigi Rizzo
@ 2013-06-07 12:29 ` Stefan Hajnoczi
0 siblings, 0 replies; 2+ messages in thread
From: Stefan Hajnoczi @ 2013-06-07 12:29 UTC (permalink / raw)
To: Luigi Rizzo; +Cc: Giuseppe Lettieri, qemu-devel, Vincenzo Maffione
On Thu, Jun 06, 2013 at 11:40:37AM +0200, Luigi Rizzo wrote:
> Can someone clarify what is the difference between the two methods
> r
> eceive_raw() and receive() in NetClientInfo ?
receive_raw() builds an empty vnet header, if necessary. It is used to
send a gratuitous ARP reply from inside QEMU.
In the case where the NIC and its peer use vnet headers, packets
generated by QEMU internally cannot use ->receive() since they don't
know how to use the vnet header. ->receive_raw() takes care of that.
Stefan
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-06-07 12:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-06 9:40 [Qemu-devel] difference between receive_raw() and receive() NetClientInfo methods ? Luigi Rizzo
2013-06-07 12:29 ` Stefan Hajnoczi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).