Commit 1a03b8a3 authored by Tonghao Zhang's avatar Tonghao Zhang Committed by David S. Miller

virtio-net: don't disable guest csum when disable LRO

Open vSwitch and Linux bridge will disable LRO of the interface
when this interface added to them. Now when disable the LRO, the
virtio-net csum is disable too. That drops the forwarding performance.

Fixes: a02e8964 ("virtio-net: ethtool configurable LRO")
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: default avatarTonghao Zhang <xiangxia.m.yue@gmail.com>
Acked-by: default avatarWillem de Bruijn <willemb@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 78b70155
...@@ -63,6 +63,11 @@ static const unsigned long guest_offloads[] = { ...@@ -63,6 +63,11 @@ static const unsigned long guest_offloads[] = {
VIRTIO_NET_F_GUEST_CSUM VIRTIO_NET_F_GUEST_CSUM
}; };
#define GUEST_OFFLOAD_LRO_MASK ((1ULL << VIRTIO_NET_F_GUEST_TSO4) | \
(1ULL << VIRTIO_NET_F_GUEST_TSO6) | \
(1ULL << VIRTIO_NET_F_GUEST_ECN) | \
(1ULL << VIRTIO_NET_F_GUEST_UFO))
struct virtnet_stat_desc { struct virtnet_stat_desc {
char desc[ETH_GSTRING_LEN]; char desc[ETH_GSTRING_LEN];
size_t offset; size_t offset;
...@@ -2531,7 +2536,8 @@ static int virtnet_set_features(struct net_device *dev, ...@@ -2531,7 +2536,8 @@ static int virtnet_set_features(struct net_device *dev,
if (features & NETIF_F_LRO) if (features & NETIF_F_LRO)
offloads = vi->guest_offloads_capable; offloads = vi->guest_offloads_capable;
else else
offloads = 0; offloads = vi->guest_offloads_capable &
~GUEST_OFFLOAD_LRO_MASK;
err = virtnet_set_guest_offloads(vi, offloads); err = virtnet_set_guest_offloads(vi, offloads);
if (err) if (err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment