• Vlad Yasevich's avatar
    vlan: Fix tcp checksum offloads in Q-in-Q vlans · 35d2f80b
    Vlad Yasevich authored
    It appears that TCP checksum offloading has been broken for
    Q-in-Q vlans.  The behavior was execerbated by the
    series
        commit afb0bc97 ("Merge branch 'stacked_vlan_tso'")
    that that enabled accleleration features on stacked vlans.
    
    However, event without that series, it is possible to trigger
    this issue.  It just requires a lot more specialized configuration.
    
    The root cause is the interaction between how
    netdev_intersect_features() works, the features actually set on
    the vlan devices and HW having the ability to run checksum with
    longer headers.
    
    The issue starts when netdev_interesect_features() replaces
    NETIF_F_HW_CSUM with a combination of NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM,
    if the HW advertises IP|IPV6 specific checksums.  This happens
    for tagged and multi-tagged packets.   However, HW that enables
    IP|IPV6 checksum offloading doesn't gurantee that packets with
    arbitrarily long headers can be checksummed.
    
    This patch disables IP|IPV6 checksums on the packet for multi-tagged
    packets.
    
    CC: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    CC: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: 's avatarVladislav Yasevich <vyasevic@redhat.com>
    Acked-by: 's avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
    35d2f80b
Name
Last commit
Last update
..
acpi Loading commit data...
asm-generic Loading commit data...
clocksource Loading commit data...
crypto Loading commit data...
drm Loading commit data...
dt-bindings Loading commit data...
keys Loading commit data...
kvm Loading commit data...
linux Loading commit data...
math-emu Loading commit data...
media Loading commit data...
memory Loading commit data...
misc Loading commit data...
net Loading commit data...
pcmcia Loading commit data...
ras Loading commit data...
rdma Loading commit data...
rxrpc Loading commit data...
scsi Loading commit data...
soc Loading commit data...
sound Loading commit data...
target Loading commit data...
trace Loading commit data...
uapi Loading commit data...
video Loading commit data...
xen Loading commit data...