• Toshiaki Makita's avatar
    bridge: Fix network header pointer for vlan tagged packets · df356d5e
    Toshiaki Makita authored
    There are several devices that can receive vlan tagged packets with
    CHECKSUM_PARTIAL like tap, possibly veth and xennet.
    When (multiple) vlan tagged packets with CHECKSUM_PARTIAL are forwarded
    by bridge to a device with the IP_CSUM feature, they end up with checksum
    error because before entering bridge, the network header is set to
    ETH_HLEN (not including vlan header length) in __netif_receive_skb_core(),
    get_rps_cpu(), or drivers' rx functions, and nobody fixes the pointer later.
    
    Since the network header is exepected to be ETH_HLEN in flow-dissection
    and hash-calculation in RPS in rx path, and since the header pointer fix
    is needed only in tx path, set the appropriate network header on forwarding
    packets.
    Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    df356d5e
br_forward.c 6.9 KB