[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Mon, 03 Mar 2014 21:10:24 +0100
From: Christian Borntraeger <borntraeger@...ibm.com>
To: Vlad Yasevich <vyasevic@...hat.com>, netdev@...r.kernel.org
CC: Florian Westphal <fw@...len.de>, Jason Wang <jasowang@...hat.com>,
"Michael S. Tsirkin" <mst@...hat.com>
Subject: Re: [PATCH net] macvlan: Add support for 'always_on' offload features
On 03/03/14 20:34, Vlad Yasevich wrote:
> Macvlan currently inherits all of its features from the lower
> device. When lower device disables offload support, this causes
> macvlan to disable offload support as well. This causes
> performance regression when using macvlan/macvtap in bridge
> mode.
>
> It can be easily demonstrated by creating 2 namespaces using
> macvlan in bridge mode and running netperf between them:
>
> MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.0.0.1 () port 0 AF_INET
> Recv Send Send
> Socket Socket Message Elapsed
> Size Size Size Time Throughput
> bytes bytes bytes secs. 10^6bits/sec
>
> 87380 16384 16384 20.00 1204.61
>
> To restore the performance, we add software offload features
> to the list of "always_on" features for macvlan. This way
> when a namespace or a guest using macvtap initially sends a
> packet, this packet will not be segmented at macvlan level.
> It will only be segmented when macvlan sends the packet
> to the lower device.
>
> MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.0.0.1 () port 0 AF_INET
> Recv Send Send
> Socket Socket Message Elapsed
> Size Size Size Time Throughput
> bytes bytes bytes secs. 10^6bits/sec
>
> 87380 16384 16384 20.00 5507.35
>
> Fixes: 6acf54f1cf0a6747bac9fea26f34cfc5a9029523 (macvtap: Add support of packet capture on macvtap device.)
> Fixes: 797f87f83b60685ff8a13fa0572d2f10393c50d3 (macvlan: fix netdev feature propagation from lower device)
> CC: Florian Westphal <fw@...len.de>
> CC: Christian Borntraeger <borntraeger@...ibm.com>
> CC: Jason Wang <jasowang@...hat.com>
> CC: Michael S. Tsirkin <mst@...hat.com>
> Signed-off-by: Vlad Yasevich <vyasevic@...hat.com>
> ---
> drivers/net/macvlan.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
> index a5d2189..2625d2a 100644
> --- a/drivers/net/macvlan.c
> +++ b/drivers/net/macvlan.c
> @@ -506,6 +506,9 @@ static int macvlan_change_mtu(struct net_device *dev, int new_mtu)
> static struct lock_class_key macvlan_netdev_xmit_lock_key;
> static struct lock_class_key macvlan_netdev_addr_lock_key;
>
> +#define ALWAYS_ON_FEATURS \
there is a ^^ typo.
I fixed up the patch and the performance seems back to normal
Thanks
Tested-by: Christian Borntraeger <borntraeger@...ibm.com>
> + (NETIF_F_SG | NETIF_F_GEN_CSUM | NETIF_F_GSO_SOFTWARE | NETIF_F_LLTX)
> +
> #define MACVLAN_FEATURES \
> (NETIF_F_SG | NETIF_F_ALL_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
> NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_GSO_ROBUST | \
> @@ -539,7 +542,7 @@ static int macvlan_init(struct net_device *dev)
> dev->state = (dev->state & ~MACVLAN_STATE_MASK) |
> (lowerdev->state & MACVLAN_STATE_MASK);
> dev->features = lowerdev->features & MACVLAN_FEATURES;
> - dev->features |= NETIF_F_LLTX;
> + dev->features |= ALWAYS_ON_FEATURES;
> dev->gso_max_size = lowerdev->gso_max_size;
> dev->iflink = lowerdev->ifindex;
> dev->hard_header_len = lowerdev->hard_header_len;
> @@ -699,7 +702,7 @@ static netdev_features_t macvlan_fix_features(struct net_device *dev,
> features = netdev_increment_features(vlan->lowerdev->features,
> features,
> mask);
> - features |= NETIF_F_LLTX;
> + features |= ALWAYS_ON_FEATURES;
>
> return features;
> }
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists