aboutsummaryrefslogtreecommitdiff
path: root/net/hub.h
diff options
context:
space:
mode:
authorLuigi Rizzo <rizzo@iet.unipi.it>2013-02-05 17:53:31 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2013-02-27 16:10:23 +0100
commit199ee608f0d08510b5c6c37f31a7fbff211d63c4 (patch)
tree62d264bb698419fdc701bd11830d47d905cab9e8 /net/hub.h
parentee24aaf356f44ca7c8fbef136a438c12091cffd0 (diff)
downloadqemu-199ee608f0d08510b5c6c37f31a7fbff211d63c4.zip
qemu-199ee608f0d08510b5c6c37f31a7fbff211d63c4.tar.gz
qemu-199ee608f0d08510b5c6c37f31a7fbff211d63c4.tar.bz2
net: fix qemu_flush_queued_packets() in presence of a hub
When frontend and backend are connected through a hub as below (showing only one direction), and the frontend (or in general, all output ports of the hub) cannot accept more traffic, the backend queues packets in queue-A. When the frontend (or in general, one output port) becomes ready again, quemu tries to flush packets from queue-B, which is unfortunately empty. e1000.0 <--[queue B]-- hub0port0(hub)hub0port1 <--[queue A]-- tap.0 To fix this i propose to introduce a new function net_hub_flush() which is called when trying to flush a queue connected to a hub. Signed-off-by: Luigi Rizzo <rizzo@iet.unipi.it> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'net/hub.h')
-rw-r--r--net/hub.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/hub.h b/net/hub.h
index 583ada8..a625eff 100644
--- a/net/hub.h
+++ b/net/hub.h
@@ -21,5 +21,6 @@ NetClientState *net_hub_add_port(int hub_id, const char *name);
NetClientState *net_hub_find_client_by_name(int hub_id, const char *name);
void net_hub_info(Monitor *mon);
void net_hub_check_clients(void);
+bool net_hub_flush(NetClientState *nc);
#endif /* NET_HUB_H */