diff -drupN a/net/bridge/br_device.c b/net/bridge/br_device.c --- a/net/bridge/br_device.c 2018-08-06 17:23:04.000000000 +0300 +++ b/net/bridge/br_device.c 2022-06-12 05:28:14.000000000 +0300 @@ -48,19 +48,17 @@ netdev_tx_t br_dev_xmit(struct sk_buff * return NETDEV_TX_OK; } - u64_stats_update_begin(&brstats->syncp); - brstats->tx_packets++; - brstats->tx_bytes += skb->len; - u64_stats_update_end(&brstats->syncp); - -#ifdef CONFIG_NET_SWITCHDEV - skb->offload_fwd_mark = 0; -#endif BR_INPUT_SKB_CB(skb)->brdev = dev; skb_reset_mac_header(skb); skb_pull(skb, ETH_HLEN); + u64_stats_update_begin(&brstats->syncp); + brstats->tx_packets++; + /* Exclude ETH_HLEN from byte stats for consistency with Rx chain */ + brstats->tx_bytes += skb->len; + u64_stats_update_end(&brstats->syncp); + if (!br_allowed_ingress(br, br_vlan_group_rcu(br), skb, &vid)) goto out;