• Vladimir Oltean's avatar
    net: mscc: ocelot: properly account for VLAN header length when setting MRU · a8015ded
    Vladimir Oltean authored
    What the driver writes into MAC_MAXLEN_CFG does not actually represent
    VLAN_ETH_FRAME_LEN but instead ETH_FRAME_LEN + ETH_FCS_LEN. Yes they are
    numerically equal, but the difference is important, as the switch treats
    VLAN-tagged traffic specially and knows to increase the maximum accepted
    frame size automatically. So it is always wrong to account for VLAN in
    the MAC_MAXLEN_CFG register.
    
    Unconditionally increase the maximum allowed frame size for
    double-tagged traffic. Accounting for the additional length does not
    mean that the other VLAN membership checks aren't performed, so there's
    no harm done.
    
    Also, stop abusing the MTU name for configuring the MRU. There is no
    support for configuring the MRU on an interface at the moment.
    
    Fixes: a556c76a ("net: mscc: Add initial Ocelot switch support")
    Fixes: fa914e9c ("net: mscc: ocelot: create a helper for changing the port MTU")
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a8015ded
ocelot_dev.h 13.8 KB