• Antoine Tenart's avatar
    net: mscc: fix the injection header · 08d02364
    Antoine Tenart authored
    When injecting frames in the Ocelot switch driver an injection header
    (IFH) should be used to configure various parameters related to a given
    frame, such as the port onto which the frame should be departed or its
    vlan id. Other parameters in the switch configuration can led to an
    injected frame being sent without an IFH but this led to various issues
    as the per-frame parameters are then not used. This is especially true
    when using multiple ports for injection.
    
    The IFH was injected with the wrong endianness which led to the switch
    not taking it into account as the IFH_INJ_BYPASS bit was then unset.
    (The bit tells the switch to use the IFH over its internal
    configuration). This patch fixes it.
    
    In addition to the endianness fix, the IFH is also fixed. As it was
    (unwillingly) unused, some of its fields were not configured the right
    way.
    
    Fixes: a556c76a ("net: mscc: Add initial Ocelot switch support")
    Signed-off-by: default avatarAntoine Tenart <antoine.tenart@bootlin.com>
    Reviewed-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    08d02364
ocelot.c 35.5 KB