Skip to content

Commit be90626

Browse files
triha2workgregkh
authored andcommitted
net: dsa: microchip: Fix KSZ9477 HSR port setup issue
[ Upstream commit e318cd6 ] ksz9477_hsr_join() is called once to setup the HSR port membership, but the port can be enabled later, or disabled and enabled back and the port membership is not set correctly inside ksz_update_port_member(). The added code always use the correct HSR port membership for HSR port that is enabled. Fixes: 2d61298 ("net: dsa: microchip: Enable HSR offloading for KSZ9477") Reported-by: Frieder Schrempf <frieder.schrempf@kontron.de> Signed-off-by: Tristram Ha <tristram.ha@microchip.com> Reviewed-by: Łukasz Majewski <lukma@nabladev.com> Tested-by: Frieder Schrempf <frieder.schrempf@kontron.de> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Link: https://patch.msgid.link/20250819010457.563286-1-Tristram.Ha@microchip.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent ea37071 commit be90626

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/net/dsa/microchip/ksz_common.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,6 +2347,12 @@ static void ksz_update_port_member(struct ksz_device *dev, int port)
23472347
dev->dev_ops->cfg_port_member(dev, i, val | cpu_port);
23482348
}
23492349

2350+
/* HSR ports are setup once so need to use the assigned membership
2351+
* when the port is enabled.
2352+
*/
2353+
if (!port_member && p->stp_state == BR_STATE_FORWARDING &&
2354+
(dev->hsr_ports & BIT(port)))
2355+
port_member = dev->hsr_ports;
23502356
dev->dev_ops->cfg_port_member(dev, port, port_member | cpu_port);
23512357
}
23522358

0 commit comments

Comments
 (0)