Patch "net: dsa: ksz_common: Allow only up to two HSR HW offloaded ports for KSZ9477" has been added to the 6.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: dsa: ksz_common: Allow only up to two HSR HW offloaded ports for KSZ9477

to the 6.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-dsa-ksz_common-allow-only-up-to-two-hsr-hw-offlo.patch
and it can be found in the queue-6.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 07ffcb887d226dceb663d7742d37b140872c20ad
Author: Lukasz Majewski <lukma@xxxxxxx>
Date:   Wed Jun 19 16:58:09 2024 +0200

    net: dsa: ksz_common: Allow only up to two HSR HW offloaded ports for KSZ9477
    
    [ Upstream commit dcec8d291da8813b5e1c7c0967ae63463a8521f6 ]
    
    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: 5055cccfc2d1 ("net: hsr: Provide RedBox support (HSR-SAN)")
    Signed-off-by: Lukasz Majewski <lukma@xxxxxxx>
    Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
    Reviewed-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
    Reviewed-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 0580b2fee21c3..baa1eeb9a1b04 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -3917,6 +3917,13 @@ static int ksz_hsr_join(struct dsa_switch *ds, int port, struct net_device *hsr,
 		return -EOPNOTSUPP;
 	}
 
+	/* KSZ9477 can only perform HSR offloading for up to two ports */
+	if (hweight8(dev->hsr_ports) >= 2) {
+		NL_SET_ERR_MSG_MOD(extack,
+				   "Cannot offload more than two ports - using software HSR");
+		return -EOPNOTSUPP;
+	}
+
 	/* Self MAC address filtering, to avoid frames traversing
 	 * the HSR ring more than once.
 	 */




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux