lkml.org 
[lkml]   [2021]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 094/151] net: dsa: microchip: ksz8795: Fix VLAN untagged flag change on deletion
    Date
    From: Ben Hutchings <ben.hutchings@mind.be>

    [ Upstream commit af01754f9e3c553a2ee63b4693c79a3956e230ab ]

    When a VLAN is deleted from a port, the flags in struct
    switchdev_obj_port_vlan are always 0. ksz8_port_vlan_del() copies the
    BRIDGE_VLAN_INFO_UNTAGGED flag to the port's Tag Removal flag, and
    therefore always clears it.

    In case there are multiple VLANs configured as untagged on this port -
    which seems useless, but is allowed - deleting one of them changes the
    remaining VLANs to be tagged.

    It's only ever necessary to change this flag when a VLAN is added to
    the port, so leave it unchanged in ksz8_port_vlan_del().

    Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver")
    Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 c20fb6edd420..46ef5bc79cbd 100644
    --- a/drivers/net/dsa/microchip/ksz8795.c
    +++ b/drivers/net/dsa/microchip/ksz8795.c
    @@ -1167,7 +1167,6 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port,
    static int ksz8_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, pvid;
    u8 fid, member, valid;
    @@ -1178,8 +1177,6 @@ static int ksz8_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);
    -
    ksz8_r_vlan_table(dev, vlan->vid, &data);
    ksz8_from_vlan(dev, data, &fid, &member, &valid);

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-08-16 15:27    [W:4.072 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site