2022-02-17 14:10:12

by Måns Rullgård

[permalink] [raw]
Subject: [PATCH v2] net: dsa: lan9303: add VLAN IDs to master device

If the master device does VLAN filtering, the IDs used by the switch
must be added for any frames to be received. Do this in the
port_enable() function, and remove them in port_disable().

Signed-off-by: Mans Rullgard <[email protected]>
---
Changes:
- Fix dependency on VLAN_8021Q
- Add missing #include
---
drivers/net/dsa/Kconfig | 1 +
drivers/net/dsa/lan9303-core.c | 11 +++++++++--
2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/Kconfig b/drivers/net/dsa/Kconfig
index 8d51c1019dcd..37a3dabdce31 100644
--- a/drivers/net/dsa/Kconfig
+++ b/drivers/net/dsa/Kconfig
@@ -72,6 +72,7 @@ source "drivers/net/dsa/realtek/Kconfig"

config NET_DSA_SMSC_LAN9303
tristate
+ depends on VLAN_8021Q || VLAN_8021Q=n
select NET_DSA_TAG_LAN9303
select REGMAP
help
diff --git a/drivers/net/dsa/lan9303-core.c b/drivers/net/dsa/lan9303-core.c
index 873a5588171b..3969d89fa4db 100644
--- a/drivers/net/dsa/lan9303-core.c
+++ b/drivers/net/dsa/lan9303-core.c
@@ -10,6 +10,7 @@
#include <linux/mii.h>
#include <linux/phy.h>
#include <linux/if_bridge.h>
+#include <linux/if_vlan.h>
#include <linux/etherdevice.h>

#include "lan9303.h"
@@ -1083,21 +1084,27 @@ static void lan9303_adjust_link(struct dsa_switch *ds, int port,
static int lan9303_port_enable(struct dsa_switch *ds, int port,
struct phy_device *phy)
{
+ struct dsa_port *dp = dsa_to_port(ds, port);
struct lan9303 *chip = ds->priv;

- if (!dsa_is_user_port(ds, port))
+ if (!dsa_port_is_user(dp))
return 0;

+ vlan_vid_add(dp->cpu_dp->master, htons(ETH_P_8021Q), port);
+
return lan9303_enable_processing_port(chip, port);
}

static void lan9303_port_disable(struct dsa_switch *ds, int port)
{
+ struct dsa_port *dp = dsa_to_port(ds, port);
struct lan9303 *chip = ds->priv;

- if (!dsa_is_user_port(ds, port))
+ if (!dsa_port_is_user(dp))
return;

+ vlan_vid_del(dp->cpu_dp->master, htons(ETH_P_8021Q), port);
+
lan9303_disable_processing_port(chip, port);
lan9303_phy_write(ds, chip->phy_addr_base + port, MII_BMCR, BMCR_PDOWN);
}
--
2.35.1


2022-02-18 00:13:00

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH v2] net: dsa: lan9303: add VLAN IDs to master device

Hello:

This patch was applied to netdev/net.git (master)
by Jakub Kicinski <[email protected]>:

On Wed, 16 Feb 2022 20:48:18 +0000 you wrote:
> If the master device does VLAN filtering, the IDs used by the switch
> must be added for any frames to be received. Do this in the
> port_enable() function, and remove them in port_disable().
>
> Signed-off-by: Mans Rullgard <[email protected]>
> ---
> Changes:
> - Fix dependency on VLAN_8021Q
> - Add missing #include
>
> [...]

Here is the summary with links:
- [v2] net: dsa: lan9303: add VLAN IDs to master device
https://git.kernel.org/netdev/net/c/430065e26719

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html