Message ID | 20200803054442.20089-6-m.grzeschik@pengutronix.de |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | microchip: add support for ksz88x3 driver family | expand |
On 8/2/2020 10:44 PM, Michael Grzeschik wrote: > 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.grzeschik@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); There is no error checking on this allocation, and you could consider propagating an allocation failure back to the caller for graceful handling.
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,
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.grzeschik@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(-)