• Robert Marko's avatar
    net: dsa: qca8k: fix MTU calculation · 65258b9d
    Robert Marko authored
    qca8k has a global MTU, so its tracking the MTU per port to make sure
    that the largest MTU gets applied.
    Since it uses the frame size instead of MTU the driver MTU change function
    will then add the size of Ethernet header and checksum on top of MTU.
    
    The driver currently populates the per port MTU size as Ethernet frame
    length + checksum which equals 1518.
    
    The issue is that then MTU change function will go through all of the
    ports, find the largest MTU and apply the Ethernet header + checksum on
    top of it again, so for a desired MTU of 1500 you will end up with 1536.
    
    This is obviously incorrect, so to correct it populate the per port struct
    MTU with just the MTU and not include the Ethernet header + checksum size
    as those will be added by the MTU change function.
    
    Fixes: f58d2598 ("net: dsa: qca8k: implement the port MTU callbacks")
    Signed-off-by: default avatarRobert Marko <robert.marko@sartura.hr>
    Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
    Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    65258b9d
qca8k.c 54.1 KB