• Lukasz Majewski's avatar
    net: dsa: ksz_common: Allow only up to two HSR HW offloaded ports for KSZ9477 · dcec8d29
    Lukasz Majewski authored
    The KSZ9477 allows HSR in-HW offloading for any of two selected ports.
    This patch adds check if one tries to use more than two ports with
    HSR offloading enabled.
    
    The problem is with RedBox configuration (HSR-SAN) - when configuring:
    ip link add name hsr0 type hsr slave1 lan1 slave2 lan2 interlink lan3 \
    	supervision 45 version 1
    
    The lan1 (port0) and lan2 (port1) are correctly configured as ports, which
    can use HSR offloading on ksz9477.
    
    However, when we do already have two bits set in hsr_ports, we need to
    return (-ENOTSUPP), so the interlink port (lan3) would be used with
    SW based HSR RedBox support.
    
    Otherwise, I do see some strange network behavior, as some HSR frames are
    visible on non-HSR network and vice versa.
    
    This causes the switch connected to interlink port (lan3) to drop frames
    and no communication is possible.
    
    Moreover, conceptually - the interlink (i.e. HSR-SAN port - lan3/port2)
    shall be only supported in software as it is also possible to use ksz9477
    with only SW based HSR (i.e. port0/1 -> hsr0 with offloading, port2 ->
    HSR-SAN/interlink, port4/5 -> hsr1 with SW based HSR).
    
    Fixes: 5055cccf ("net: hsr: Provide RedBox support (HSR-SAN)")
    Signed-off-by: default avatarLukasz Majewski <lukma@denx.de>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Reviewed-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dcec8d29
ksz_common.c 120 KB