mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 03:44:53 +00:00 
			
		
		
		
	 199ee608f0
			
		
	
	
		199ee608f0
		
	
	
	
	
		
			
			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>
		
			
				
	
	
		
			27 lines
		
	
	
		
			647 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			647 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Hub net client
 | |
|  *
 | |
|  * Copyright IBM, Corp. 2012
 | |
|  *
 | |
|  * Authors:
 | |
|  *  Stefan Hajnoczi   <stefanha@linux.vnet.ibm.com>
 | |
|  *  Zhi Yong Wu       <wuzhy@linux.vnet.ibm.com>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU LGPL, version 2 or later.
 | |
|  * See the COPYING.LIB file in the top-level directory.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef NET_HUB_H
 | |
| #define NET_HUB_H
 | |
| 
 | |
| #include "qemu-common.h"
 | |
| 
 | |
| 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 */
 |