Message ID | 20201118220357.22292-11-m.grzeschik@pengutronix.de |
---|---|
State | New |
Headers | show |
Series | None | expand |
On Wed, Nov 18, 2020 at 11:03:56PM +0100, 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: - based on "[PATCH v4 05/11] net: dsa: microchip: ksz8795: dynamica allocate memory for flush_dyn_mac_table" > - lore: https://lore.kernel.org/netdev/20200803054442.20089-6-m.grzeschik@pengutronix.de/ > --- > drivers/net/dsa/microchip/ksz8795.c | 8 ++++++-- > drivers/net/dsa/microchip/ksz8795_reg.h | 2 -- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c > index 9ea5ec61513023f..418f71e5b90761c 100644 > --- a/drivers/net/dsa/microchip/ksz8795.c > +++ b/drivers/net/dsa/microchip/ksz8795.c > @@ -750,11 +750,14 @@ 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]; > int first, index, cnt; > struct ksz_port *p; > + u8 *learn = kzalloc(dev->port_cnt, GFP_KERNEL); Using DSA_MAX_PORTS makes things simpler. Andrew
On 11/18/2020 2:03 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> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -- Florian
diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 9ea5ec61513023f..418f71e5b90761c 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -750,11 +750,14 @@ 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]; int first, index, cnt; struct ksz_port *p; + u8 *learn = kzalloc(dev->port_cnt, GFP_KERNEL); - if ((uint)port < TOTAL_PORT_NUM) { + if (!learn) + return; + + if ((uint)port < dev->port_cnt) { first = port; cnt = port + 1; } else { @@ -779,6 +782,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, diff --git a/drivers/net/dsa/microchip/ksz8795_reg.h b/drivers/net/dsa/microchip/ksz8795_reg.h index 6377165a236fdf3..681d19ab27b89da 100644 --- a/drivers/net/dsa/microchip/ksz8795_reg.h +++ b/drivers/net/dsa/microchip/ksz8795_reg.h @@ -846,8 +846,6 @@ #define KS_PRIO_IN_REG 4 -#define TOTAL_PORT_NUM 5 - #define KSZ8795_COUNTER_NUM 0x20 /* Common names used by other drivers */
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: - based on "[PATCH v4 05/11] net: dsa: microchip: ksz8795: dynamica allocate memory for flush_dyn_mac_table" - lore: https://lore.kernel.org/netdev/20200803054442.20089-6-m.grzeschik@pengutronix.de/ --- drivers/net/dsa/microchip/ksz8795.c | 8 ++++++-- drivers/net/dsa/microchip/ksz8795_reg.h | 2 -- 2 files changed, 6 insertions(+), 4 deletions(-)