lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 527/800] net: dsa: mv88e6xxx: Fix adding vlan 0
    Date
    From: Eldar Gasanov <eldargasanov2@gmail.com>

    [ Upstream commit b8b79c414eca4e9bcab645e02cb92c48db974ce9 ]

    8021q module adds vlan 0 to all interfaces when it starts.
    When 8021q module is loaded it isn't possible to create bond
    with mv88e6xxx interfaces, bonding module dipslay error
    "Couldn't add bond vlan ids", because it tries to add vlan 0
    to slave interfaces.

    There is unexpected behavior in the switch. When a PVID
    is assigned to a port the switch changes VID to PVID
    in ingress frames with VID 0 on the port. Expected
    that the switch doesn't assign PVID to tagged frames
    with VID 0. But there isn't a way to change this behavior
    in the switch.

    Fixes: 57e661aae6a8 ("net: dsa: mv88e6xxx: Link aggregation support")
    Signed-off-by: Eldar Gasanov <eldargasanov2@gmail.com>
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/dsa/mv88e6xxx/chip.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
    index eca285aaf72f..961fa6b75cad 100644
    --- a/drivers/net/dsa/mv88e6xxx/chip.c
    +++ b/drivers/net/dsa/mv88e6xxx/chip.c
    @@ -1618,9 +1618,6 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port,
    struct mv88e6xxx_vtu_entry vlan;
    int i, err;

    - if (!vid)
    - return -EOPNOTSUPP;
    -
    /* DSA and CPU ports have to be members of multiple vlans */
    if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port))
    return 0;
    @@ -2109,6 +2106,9 @@ static int mv88e6xxx_port_vlan_add(struct dsa_switch *ds, int port,
    u8 member;
    int err;

    + if (!vlan->vid)
    + return 0;
    +
    err = mv88e6xxx_port_vlan_prepare(ds, port, vlan);
    if (err)
    return err;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:09    [W:2.128 / U:0.860 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site