Message ID | 20220105031515.29276-10-luizluca@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: dsa: realtek: MDIO interface and RTL8367S | expand |
On Wed, 5 Jan 2022 00:15:13 -0300 Luiz Angelo Daros de Luca wrote: > Instead of a fixed CPU port, assume that DSA is correct. > > Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> > Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com> Transient build warning here: drivers/net/dsa/realtek/rtl8365mb.c:1808:23: warning: unused variable 'cpu' [-Wunused-variable] struct rtl8365mb_cpu cpu; ^
Luiz Angelo Daros de Luca <luizluca@gmail.com> writes: > Instead of a fixed CPU port, assume that DSA is correct. > > Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> > Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com> With the warning fixed: Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk> > --- > drivers/net/dsa/realtek/rtl8365mb.c | 23 ++++++++++++++--------- > 1 file changed, 14 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/dsa/realtek/rtl8365mb.c b/drivers/net/dsa/realtek/rtl8365mb.c > index b22f50a9d1ef..adc72f0844ae 100644 > --- a/drivers/net/dsa/realtek/rtl8365mb.c > +++ b/drivers/net/dsa/realtek/rtl8365mb.c > @@ -103,14 +103,13 @@ > > /* Chip-specific data and limits */ > #define RTL8365MB_CHIP_ID_8365MB_VC 0x6367 > -#define RTL8365MB_CPU_PORT_NUM_8365MB_VC 6 > #define RTL8365MB_LEARN_LIMIT_MAX_8365MB_VC 2112 > > /* Family-specific data and limits */ > #define RTL8365MB_PHYADDRMAX 7 > #define RTL8365MB_NUM_PHYREGS 32 > #define RTL8365MB_PHYREGMAX (RTL8365MB_NUM_PHYREGS - 1) > -#define RTL8365MB_MAX_NUM_PORTS (RTL8365MB_CPU_PORT_NUM_8365MB_VC + 1) > +#define RTL8365MB_MAX_NUM_PORTS 7 > > /* Chip identification registers */ > #define RTL8365MB_CHIP_ID_REG 0x1300 > @@ -1806,6 +1805,8 @@ static int rtl8365mb_reset_chip(struct realtek_priv *priv) > static int rtl8365mb_setup(struct dsa_switch *ds) > { > struct realtek_priv *priv = ds->priv; > + struct rtl8365mb_cpu cpu; Unused? > + struct dsa_port *cpu_dp; > struct rtl8365mb *mb; > int ret; > int i; > @@ -1833,9 +1834,16 @@ static int rtl8365mb_setup(struct dsa_switch *ds) > dev_info(priv->dev, "no interrupt support\n"); > > /* Configure CPU tagging */ > - ret = rtl8365mb_cpu_config(priv); > - if (ret) > - goto out_teardown_irq; > + dsa_switch_for_each_cpu_port(cpu_dp, priv->ds) { > + priv->cpu_port = cpu_dp->index; > + mb->cpu.mask = BIT(priv->cpu_port); > + mb->cpu.trap_port = priv->cpu_port; > + ret = rtl8365mb_cpu_config(priv); > + if (ret) > + goto out_teardown_irq; > + > + break; Maybe a comment like /* Currently, only one CPU port is supported */? > + } > > /* Configure ports */ > for (i = 0; i < priv->num_ports; i++) { > @@ -1967,8 +1975,7 @@ static int rtl8365mb_detect(struct realtek_priv *priv) > "found an RTL8365MB-VC switch (ver=0x%04x)\n", > chip_ver); > > - priv->cpu_port = RTL8365MB_CPU_PORT_NUM_8365MB_VC; > - priv->num_ports = priv->cpu_port + 1; > + priv->num_ports = RTL8365MB_MAX_NUM_PORTS; > > mb->priv = priv; > mb->chip_id = chip_id; > @@ -1979,8 +1986,6 @@ static int rtl8365mb_detect(struct realtek_priv *priv) > mb->jam_size = ARRAY_SIZE(rtl8365mb_init_jam_8365mb_vc); > > mb->cpu.enable = 1; > - mb->cpu.mask = BIT(priv->cpu_port); > - mb->cpu.trap_port = priv->cpu_port; > mb->cpu.insert = RTL8365MB_CPU_INSERT_TO_ALL; > mb->cpu.position = RTL8365MB_CPU_POS_AFTER_SA; > mb->cpu.rx_length = RTL8365MB_CPU_RXLEN_64BYTES;
On 1/4/2022 7:15 PM, Luiz Angelo Daros de Luca wrote: > Instead of a fixed CPU port, assume that DSA is correct. > > Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> > Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
diff --git a/drivers/net/dsa/realtek/rtl8365mb.c b/drivers/net/dsa/realtek/rtl8365mb.c index b22f50a9d1ef..adc72f0844ae 100644 --- a/drivers/net/dsa/realtek/rtl8365mb.c +++ b/drivers/net/dsa/realtek/rtl8365mb.c @@ -103,14 +103,13 @@ /* Chip-specific data and limits */ #define RTL8365MB_CHIP_ID_8365MB_VC 0x6367 -#define RTL8365MB_CPU_PORT_NUM_8365MB_VC 6 #define RTL8365MB_LEARN_LIMIT_MAX_8365MB_VC 2112 /* Family-specific data and limits */ #define RTL8365MB_PHYADDRMAX 7 #define RTL8365MB_NUM_PHYREGS 32 #define RTL8365MB_PHYREGMAX (RTL8365MB_NUM_PHYREGS - 1) -#define RTL8365MB_MAX_NUM_PORTS (RTL8365MB_CPU_PORT_NUM_8365MB_VC + 1) +#define RTL8365MB_MAX_NUM_PORTS 7 /* Chip identification registers */ #define RTL8365MB_CHIP_ID_REG 0x1300 @@ -1806,6 +1805,8 @@ static int rtl8365mb_reset_chip(struct realtek_priv *priv) static int rtl8365mb_setup(struct dsa_switch *ds) { struct realtek_priv *priv = ds->priv; + struct rtl8365mb_cpu cpu; + struct dsa_port *cpu_dp; struct rtl8365mb *mb; int ret; int i; @@ -1833,9 +1834,16 @@ static int rtl8365mb_setup(struct dsa_switch *ds) dev_info(priv->dev, "no interrupt support\n"); /* Configure CPU tagging */ - ret = rtl8365mb_cpu_config(priv); - if (ret) - goto out_teardown_irq; + dsa_switch_for_each_cpu_port(cpu_dp, priv->ds) { + priv->cpu_port = cpu_dp->index; + mb->cpu.mask = BIT(priv->cpu_port); + mb->cpu.trap_port = priv->cpu_port; + ret = rtl8365mb_cpu_config(priv); + if (ret) + goto out_teardown_irq; + + break; + } /* Configure ports */ for (i = 0; i < priv->num_ports; i++) { @@ -1967,8 +1975,7 @@ static int rtl8365mb_detect(struct realtek_priv *priv) "found an RTL8365MB-VC switch (ver=0x%04x)\n", chip_ver); - priv->cpu_port = RTL8365MB_CPU_PORT_NUM_8365MB_VC; - priv->num_ports = priv->cpu_port + 1; + priv->num_ports = RTL8365MB_MAX_NUM_PORTS; mb->priv = priv; mb->chip_id = chip_id; @@ -1979,8 +1986,6 @@ static int rtl8365mb_detect(struct realtek_priv *priv) mb->jam_size = ARRAY_SIZE(rtl8365mb_init_jam_8365mb_vc); mb->cpu.enable = 1; - mb->cpu.mask = BIT(priv->cpu_port); - mb->cpu.trap_port = priv->cpu_port; mb->cpu.insert = RTL8365MB_CPU_INSERT_TO_ALL; mb->cpu.position = RTL8365MB_CPU_POS_AFTER_SA; mb->cpu.rx_length = RTL8365MB_CPU_RXLEN_64BYTES;