virtio-net: ethtool configurable LRO
authorWillem de Bruijn <willemb@google.com>
Thu, 20 Dec 2018 22:14:54 +0000 (17:14 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Dec 2018 03:14:15 +0000 (19:14 -0800)
commita02e8964eaf9271a8a5fcc0c55bd13f933bafc56
treeea59d60008b61635f142674600a31113ce03f456
parentc3e533692527046fb55020e7fac8c4272644ba45
virtio-net: ethtool configurable LRO

Virtio-net devices negotiate LRO support with the host.
Display the initially negotiated state with ethtool -k.

Also allow configuring it with ethtool -K, reusing the existing
virtnet_set_guest_offloads helper that configures LRO for XDP.
This is conditional on VIRTIO_NET_F_CTRL_GUEST_OFFLOADS.

Virtio-net negotiates TSO4 and TSO6 separately, but ethtool does not
distinguish between the two. Display LRO as on only if any offload
is active.

RTNL is held while calling virtnet_set_features, same as on the path
from virtnet_xdp_set.

Changes v1 -> v2
  - allow ethtool config (-K) only if VIRTIO_NET_F_CTRL_GUEST_OFFLOADS
  - show LRO as enabled if any LRO variant is enabled
  - do not allow configuration while XDP is active
  - differentiate current features from the capable set, to restore
    on XDP down only those features that were active on XDP up
  - move test out of VIRTIO_NET_F_CSUM/TSO branch, which is tx only

Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/virtio_net.c