• Jason Wang's avatar
    virtio-net: use NETIF_F_GRO_HW instead of NETIF_F_LRO · dbcf24d1
    Jason Wang authored
    Commit a02e8964 ("virtio-net: ethtool configurable LRO")
    maps LRO to virtio guest offloading features and allows the
    administrator to enable and disable those features via ethtool.
    
    This leads to several issues:
    
    - For a device that doesn't support control guest offloads, the "LRO"
      can't be disabled triggering WARN in dev_disable_lro() when turning
      off LRO or when enabling forwarding bridging etc.
    
    - For a device that supports control guest offloads, the guest
      offloads are disabled in cases of bridging, forwarding etc slowing
      down the traffic.
    
    Fix this by using NETIF_F_GRO_HW instead. Though the spec does not
    guarantee packets to be re-segmented as the original ones,
    we can add that to the spec, possibly with a flag for devices to
    differentiate between GRO and LRO.
    
    Further, we never advertised LRO historically before a02e8964
    ("virtio-net: ethtool configurable LRO") and so bridged/forwarded
    configs effectively always relied on virtio receive offloads behaving
    like GRO - thus even if this breaks any configs it is at least not
    a regression.
    
    Fixes: a02e8964 ("virtio-net: ethtool configurable LRO")
    Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Reported-by: default avatarIvan <ivan@prestigetransportation.com>
    Tested-by: default avatarIvan <ivan@prestigetransportation.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dbcf24d1
virtio_net.c 88.2 KB