| From ed104c4b6b8aba1a8a999a3e6bfa4803b95a94ae Mon Sep 17 00:00:00 2001 |
| From: Linus Walleij <linus.walleij@linaro.org> |
| Date: Mon, 27 Jul 2020 01:34:40 +0200 |
| Subject: [PATCH] net: dsa: rtl8366: Fix VLAN set-up |
| |
| commit 788abc6d9d278ed6fa1fa94db2098481a04152b7 upstream. |
| |
| Alter the rtl8366_vlan_add() to call rtl8366_set_vlan() |
| inside the loop that goes over all VIDs since we now |
| properly support calling that function more than once. |
| Augment the loop to postincrement as this is more |
| intuitive. |
| |
| The loop moved past the last VID but called |
| rtl8366_set_vlan() with the port number instead of |
| the VID, assuming a 1-to-1 correspondence between |
| ports and VIDs. This was also a bug. |
| |
| Cc: DENG Qingfang <dqfext@gmail.com> |
| Cc: Mauri Sandberg <sandberg@mailfence.com> |
| Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> |
| Fixes: d8652956cf37 ("net: dsa: realtek-smi: Add Realtek SMI driver") |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/dsa/rtl8366.c b/drivers/net/dsa/rtl8366.c |
| index a75dcd6698b8..1368816abaed 100644 |
| --- a/drivers/net/dsa/rtl8366.c |
| +++ b/drivers/net/dsa/rtl8366.c |
| @@ -397,7 +397,7 @@ void rtl8366_vlan_add(struct dsa_switch *ds, int port, |
| if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port)) |
| dev_err(smi->dev, "port is DSA or CPU port\n"); |
| |
| - for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) { |
| + for (vid = vlan->vid_begin; vid <= vlan->vid_end; vid++) { |
| int pvid_val = 0; |
| |
| dev_info(smi->dev, "add VLAN %04x\n", vid); |
| @@ -420,13 +420,13 @@ void rtl8366_vlan_add(struct dsa_switch *ds, int port, |
| if (ret < 0) |
| return; |
| } |
| - } |
| |
| - ret = rtl8366_set_vlan(smi, port, member, untag, 0); |
| - if (ret) |
| - dev_err(smi->dev, |
| - "failed to set up VLAN %04x", |
| - vid); |
| + ret = rtl8366_set_vlan(smi, vid, member, untag, 0); |
| + if (ret) |
| + dev_err(smi->dev, |
| + "failed to set up VLAN %04x", |
| + vid); |
| + } |
| } |
| EXPORT_SYMBOL_GPL(rtl8366_vlan_add); |
| |
| -- |
| 2.27.0 |
| |