• Vladimir Oltean's avatar
    net: dsa: sja1105: Don't store frame type in skb->cb · e8d67fa5
    Vladimir Oltean authored
    Due to a confusion I thought that eth_type_trans() was called by the
    network stack whereas it can actually be called by network drivers to
    figure out the skb protocol and next packet_type handlers.
    
    In light of the above, it is not safe to store the frame type from the
    DSA tagger's .filter callback (first entry point on RX path), since GRO
    is yet to be invoked on the received traffic.  Hence it is very likely
    that the skb->cb will actually get overwritten between eth_type_trans()
    and the actual DSA packet_type handler.
    
    Of course, what this patch fixes is the actual overwriting of the
    SJA1105_SKB_CB(skb)->type field from the GRO layer, which made all
    frames be seen as SJA1105_FRAME_TYPE_NORMAL (0).
    
    Fixes: 227d07a0 ("net: dsa: sja1105: Add support for traffic through standalone ports")
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e8d67fa5
tag_sja1105.c 3.6 KB