• V
    net: dsa: don't set skb->offload_fwd_mark when not offloading the bridge · bea79078
    Vladimir Oltean 提交于
    DSA has gained the recent ability to deal gracefully with upper
    interfaces it cannot offload, such as the bridge, bonding or team
    drivers. When such uppers exist, the ports are still in standalone mode
    as far as the hardware is concerned.
    
    But when we deliver packets to the software bridge in order for that to
    do the forwarding, there is an unpleasant surprise in that the bridge
    will refuse to forward them. This is because we unconditionally set
    skb->offload_fwd_mark = true, meaning that the bridge thinks the frames
    were already forwarded in hardware by us.
    
    Since dp->bridge_dev is populated only when there is hardware offload
    for it, but not in the software fallback case, let's introduce a new
    helper that can be called from the tagger data path which sets the
    skb->offload_fwd_mark accordingly to zero when there is no hardware
    offload for bridging. This lets the bridge forward packets back to other
    interfaces of our switch, if needed.
    Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: NTobias Waldekranz <tobias@waldekranz.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    bea79078
dsa_priv.h 14.0 KB