Message ID | 1718756202-2731-1-git-send-email-Tristram.Ha@microchip.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ad53f5f54f351e967128edbc431f0f26427172cf |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1,net] net: dsa: microchip: fix initial port flush problem | expand |
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Tue, 18 Jun 2024 17:16:42 -0700 you wrote: > From: Tristram Ha <tristram.ha@microchip.com> > > The very first flush in any port will flush all learned addresses in all > ports. This can be observed by unplugging the cable from one port while > additional ports are connected and dumping the fdb entries. > > This problem is caused by the initially wrong value programmed to the > REG_SW_LUE_CTRL_1 register. Setting SW_FLUSH_STP_TABLE and > SW_FLUSH_MSTP_TABLE bits does not have an immediate effect. It is when > ksz9477_flush_dyn_mac_table() is called then the SW_FLUSH_STP_TABLE bit > takes effect and flushes all learned entries. After that call both bits > are reset and so the next port flush will not cause such problem again. > > [...] Here is the summary with links: - [v1,net] net: dsa: microchip: fix initial port flush problem https://git.kernel.org/netdev/net/c/ad53f5f54f35 You are awesome, thank you!
diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c index f8ad7833f5d9..2231128eef8b 100644 --- a/drivers/net/dsa/microchip/ksz9477.c +++ b/drivers/net/dsa/microchip/ksz9477.c @@ -355,10 +355,8 @@ int ksz9477_reset_switch(struct ksz_device *dev) SPI_AUTO_EDGE_DETECTION, 0); /* default configuration */ - ksz_read8(dev, REG_SW_LUE_CTRL_1, &data8); - data8 = SW_AGING_ENABLE | SW_LINK_AUTO_AGING | - SW_SRC_ADDR_FILTER | SW_FLUSH_STP_TABLE | SW_FLUSH_MSTP_TABLE; - ksz_write8(dev, REG_SW_LUE_CTRL_1, data8); + ksz_write8(dev, REG_SW_LUE_CTRL_1, + SW_AGING_ENABLE | SW_LINK_AUTO_AGING | SW_SRC_ADDR_FILTER); /* disable interrupts */ ksz_write32(dev, REG_SW_INT_MASK__4, SWITCH_INT_MASK);