Re: [PATCH net 4/6] net: dsa: ksz: do not change tagging on del

From: Vladimir Oltean
Date: Wed Jan 13 2021 - 19:35:42 EST


On Wed, Jan 13, 2021 at 01:45:20PM +0100, Gilles DOFFE wrote:
> If a VLAN is removed, the tagging policy should not be changed as
> still active VLANs could be impacted.
>
> Signed-off-by: Gilles DOFFE <gilles.doffe@xxxxxxxxxxxxxxxxxxxx>
> ---
> drivers/net/dsa/microchip/ksz8795.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c
> index 193f03ef9160..b55fb2761993 100644
> --- a/drivers/net/dsa/microchip/ksz8795.c
> +++ b/drivers/net/dsa/microchip/ksz8795.c
> @@ -880,7 +880,6 @@ static void ksz8795_port_vlan_add(struct dsa_switch *ds, int port,
> static int ksz8795_port_vlan_del(struct dsa_switch *ds, int port,
> const struct switchdev_obj_port_vlan *vlan)
> {
> - bool untagged = vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED;
> struct ksz_device *dev = ds->priv;
> u16 data, vid, pvid, new_pvid = 0;
> u8 fid, member, valid;
> @@ -888,8 +887,6 @@ static int ksz8795_port_vlan_del(struct dsa_switch *ds, int port,
> ksz_pread16(dev, port, REG_PORT_CTRL_VID, &pvid);
> pvid = pvid & 0xFFF;
>
> - ksz_port_cfg(dev, port, P_TAG_CTRL, PORT_REMOVE_TAG, untagged);
> -
> for (vid = vlan->vid_begin; vid <= vlan->vid_end; vid++) {
> ksz8795_r_vlan_table(dev, vid, &data);
> ksz8795_from_vlan(data, &fid, &member, &valid);
> --
> 2.25.1
>

What do you mean the tagging policy "should not be changed". Nothing is
changed, the write to PORT_REMOVE_TAG is identical to the one done on
.port_vlan_add. If anything, the egress untagging policy is reinforced
on delete, not changed...

What's the actual problem (beside for the fact that the driver is
obviously a lot more broken than you can fix through patches to "net")?