Message ID | cc7ac4631f0a32c4d61b73f4f28b52a05ab8651d.1460651429.git.pabeni@redhat.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Apr 14, 2016 at 06:39:39PM +0200, Paolo Abeni wrote: > The current tun_net_xmit() implementation don't need any external > lock since it relies on rcu protection for the tun data structure > and on socket queue lock for skb queuing. > > This patch set the NETIF_F_LLTX feature bit in the tun device, so > that on xmit, in absence of qdisc, no serialization lock is acquired > by the caller. > > The user space can remove the default tun qdisc with: > > tc qdisc replace dev <tun device name> root noqueue > > Signed-off-by: Paolo Abeni <pabeni@redhat.com> > Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> > Acked-by: Eric Dumazet <edumazet@google.com> This one seems transparent to userspace so: Acked-by: Michael S. Tsirkin <mst@redhat.com> > > --- > RFC -> v1 > - fixed a commit message typo, extended the comment with a > configuration hint > --- > drivers/net/tun.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index faf9297..42992dc 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c > @@ -1796,7 +1796,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) > dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST | > TUN_USER_FEATURES | NETIF_F_HW_VLAN_CTAG_TX | > NETIF_F_HW_VLAN_STAG_TX; > - dev->features = dev->hw_features; > + dev->features = dev->hw_features | NETIF_F_LLTX; > dev->vlan_features = dev->features & > ~(NETIF_F_HW_VLAN_CTAG_TX | > NETIF_F_HW_VLAN_STAG_TX); > -- > 1.8.3.1
From: Paolo Abeni <pabeni@redhat.com> Date: Thu, 14 Apr 2016 18:39:39 +0200 > The current tun_net_xmit() implementation don't need any external > lock since it relies on rcu protection for the tun data structure > and on socket queue lock for skb queuing. > > This patch set the NETIF_F_LLTX feature bit in the tun device, so > that on xmit, in absence of qdisc, no serialization lock is acquired > by the caller. > > The user space can remove the default tun qdisc with: > > tc qdisc replace dev <tun device name> root noqueue > > Signed-off-by: Paolo Abeni <pabeni@redhat.com> > Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> > Acked-by: Eric Dumazet <edumazet@google.com> Applied, thanks.
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index faf9297..42992dc 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1796,7 +1796,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST | TUN_USER_FEATURES | NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX; - dev->features = dev->hw_features; + dev->features = dev->hw_features | NETIF_F_LLTX; dev->vlan_features = dev->features & ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX);