Skip to content

Commit e318cd6

Browse files
triha2workkuba-moo
authored andcommitted
net: dsa: microchip: Fix KSZ9477 HSR port setup issue
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>
1 parent f7b0b97 commit e318cd6

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
@@ -2457,6 +2457,12 @@ static void ksz_update_port_member(struct ksz_device *dev, int port)
24572457
dev->dev_ops->cfg_port_member(dev, i, val | cpu_port);
24582458
}
24592459

2460+
/* HSR ports are setup once so need to use the assigned membership
2461+
* when the port is enabled.
2462+
*/
2463+
if (!port_member && p->stp_state == BR_STATE_FORWARDING &&
2464+
(dev->hsr_ports & BIT(port)))
2465+
port_member = dev->hsr_ports;
24602466
dev->dev_ops->cfg_port_member(dev, port, port_member | cpu_port);
24612467
}
24622468

0 commit comments

Comments
 (0)