Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-25 Thread Peter Lieven

On 18.02.2013 13:39, Peter Lieven wrote:

On 15.02.2013 14:32, Stefan Hajnoczi wrote:

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

Perhaps the solution is to try with IFF_ONE_QUEUE.  If the result is
-EINVAL, try without.


Is IFF_ONE_QUEUE queryable with ioctl(fd, TUNGETFEATURES, features) ?

Peter


Anyone?

Thanks,
Peter




Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-25 Thread Christian Borntraeger
On 25/02/13 09:13, Peter Lieven wrote:


 Is IFF_ONE_QUEUE queryable with ioctl(fd, TUNGETFEATURES, features) ?

Yes, that should work. The default tun/tap driver returns it, macvtap not.







Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-18 Thread Peter Lieven

On 15.02.2013 14:32, Stefan Hajnoczi wrote:

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

Perhaps the solution is to try with IFF_ONE_QUEUE.  If the result is
-EINVAL, try without.


Is IFF_ONE_QUEUE queryable with ioctl(fd, TUNGETFEATURES, features) ?

Peter



Stefan






[Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-15 Thread Peter Lieven

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
+
 if (*vnet_hdr) {
 unsigned int features;

diff --git a/net/tap-linux.h b/net/tap-linux.h
index 65087e1..13002fd 100644
--- a/net/tap-linux.h
+++ b/net/tap-linux.h
@@ -36,6 +36,7 @@
 /* TUNSETIFF ifr flags */
 #define IFF_TAP0x0002
 #define IFF_NO_PI  0x1000
+#define IFF_ONE_QUEUE  0x2000
 #define IFF_VNET_HDR   0x4000
 #define IFF_MULTI_QUEUE 0x0100
 #define IFF_ATTACH_QUEUE 0x0200
--
1.7.9.5





Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-15 Thread Stefan Hajnoczi
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

Perhaps the solution is to try with IFF_ONE_QUEUE.  If the result is
-EINVAL, try without.

Stefan



Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-15 Thread Peter Lieven

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




Re: [Qemu-devel] [PATCHv2] tap: set IFF_ONE_QUEUE per default

2013-02-15 Thread Christian Borntraeger
On 15/02/13 15:27, Peter Lieven wrote:
 
 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?
 

It has nothing todo with Apple products. Its about a linux kernel driver that 
provides
a tap like interface that can be attached to an network interface with 
MAC-address 
filtering.

http://virt.kernelnewbies.org/MacVTap

Christian