To get the driver working with other chips using different port counts the dyn_mac_table should be flushed depending on the amount of physical ports.
Signed-off-by: Michael Grzeschik <m.grzesc...@pengutronix.de> --- v1 -> v4: - extracted this change from bigger previous patch drivers/net/dsa/microchip/ksz8795.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 947ea1e45f5b2c6..ba722f730bf0f7b 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -750,11 +750,11 @@ static void ksz8795_port_stp_state_set(struct dsa_switch *ds, int port, static void ksz8795_flush_dyn_mac_table(struct ksz_device *dev, int port) { - u8 learn[TOTAL_PORT_NUM]; + u8 *learn = kzalloc(dev->mib_port_cnt, GFP_KERNEL); int first, index, cnt; struct ksz_port *p; - if ((uint)port < TOTAL_PORT_NUM) { + if ((uint)port < dev->mib_port_cnt) { first = port; cnt = port + 1; } else { @@ -779,6 +779,7 @@ static void ksz8795_flush_dyn_mac_table(struct ksz_device *dev, int port) if (!(learn[index] & PORT_LEARN_DISABLE)) ksz_pwrite8(dev, index, P_STP_CTRL, learn[index]); } + kfree(learn); } static int ksz8795_port_vlan_filtering(struct dsa_switch *ds, int port, -- 2.28.0