qemu/net
Luigi Rizzo 7d91ddd25e net: fix unbounded NetQueue
In the current implementation of qemu, running without a network
backend will cause the queue to grow unbounded when the guest is
transmitting traffic.

This patch fixes the problem by implementing bounded size NetQueue,
used with an arbitrary limit of 10000 packets, and dropping packets
when the queue is full _and_ the sender does not pass a callback.

The second condition makes sure that we never drop packets that
contains a callback (which would be tricky, because the producer
expects the callback to be run when all previous packets have been
consumed; so we cannot run it when the packet is dropped).

If documentation is correct, producers that submit a callback should
stop sending when their packet is queued, so there is no real risk
that the queue exceeds the max size by large values.

Signed-off-by: Luigi Rizzo <rizzo@iet.unipi.it>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-02-27 16:10:39 +01:00
..
checksum.c Change license from GPLv2 to GPLv2+ 2012-02-01 16:24:54 -06:00
clients.h net: reorganize headers 2012-12-19 08:31:29 +01:00
dump.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
hub.c net: fix qemu_flush_queued_packets() in presence of a hub 2013-02-27 16:10:23 +01:00
hub.h net: fix qemu_flush_queued_packets() in presence of a hub 2013-02-27 16:10:23 +01:00
Makefile.objs net: move net.c to net/ 2012-12-19 08:29:59 +01:00
net.c net: fix qemu_flush_queued_packets() in presence of a hub 2013-02-27 16:10:23 +01:00
queue.c net: fix unbounded NetQueue 2013-02-27 16:10:39 +01:00
slirp.c HMP: add QDict to info callback handler 2013-01-17 10:24:52 -02:00
socket.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
tap-aix.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-bsd.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-haiku.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-linux.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-linux.h tap: import linux multiqueue constants 2013-02-01 11:03:01 -06:00
tap-solaris.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-win32.c tap: support enabling or disabling a queue 2013-02-01 11:03:02 -06:00
tap.c tap: unbreak -netdev tap,fd=X 2013-02-01 18:05:30 -06:00
tap_int.h tap: multiqueue support 2013-02-01 11:03:02 -06:00
util.c net: reorganize headers 2012-12-19 08:31:29 +01:00
util.h net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
vde.c net: add missing include file 2012-12-22 12:06:48 +00:00