Am 15.02.2013 um 14:32 schrieb Stefan Hajnoczi <stefa...@gmail.com>:
> On Fri, Feb 15, 2013 at 10:32:31AM +0100, Peter Lieven wrote: >> historically the kernel queues packets two times. once >> at the device and second in qdisc. this is believed to cause >> interface stalls if one of these queues overruns. >> >> setting IFF_ONE_QUEUE is the default in kernels >= 3.8. the >> flag is ignored since then. see kernel commit >> 5d097109257c03a71845729f8db6b5770c4bbedc >> >> v2: >> - do only set the flag on linux as it breaks macvtap >> - define IFF_ONE_QUEUE in tap-linux.h >> >> Signed-off-by: Peter Lieven <p...@kamp.de> >> --- >> net/tap-linux.c | 4 ++++ >> net/tap-linux.h | 1 + >> 2 files changed, 5 insertions(+) >> >> diff --git a/net/tap-linux.c b/net/tap-linux.c >> index a953189..d49f2fd 100644 >> --- a/net/tap-linux.c >> +++ b/net/tap-linux.c >> @@ -51,6 +51,10 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, >> memset(&ifr, 0, sizeof(ifr)); >> ifr.ifr_flags = IFF_TAP | IFF_NO_PI; >> >> +#ifdef __linux__ >> + ifr.ifr_flags |= IFF_ONE_QUEUE; >> +#endif > > tap-linux.c <--- notice the filename i know. is qemu really using it on MACs? Peter > > Perhaps the solution is to try with IFF_ONE_QUEUE. If the result is > -EINVAL, try without. > > Stefan