[openwrt/openwrt] realtek: don't treat first multicast portmask entry as reserved
LEDE Commits
lede-commits at lists.infradead.org
Sun May 7 10:17:45 PDT 2023
svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/57df840670b6038866ebed877ed9827276b730fe
commit 57df840670b6038866ebed877ed9827276b730fe
Author: Jan Hoffmann <jan at 3e8.eu>
AuthorDate: Sun May 7 01:05:31 2023 +0200
realtek: don't treat first multicast portmask entry as reserved
There doesn't appear to be a reason to do this, as only the last entry
is actually reserved for unknown multicast.
This also fixes two issues:
- As the increment happened after the bounds check, the value of the
actually reserved last entry could be overwritten.
- On deletion of entries, a corresponding decrement was missing,
causing the wrong entry to be marked as free.
Fixes: cde31976e375 ("realtek: Add support for Layer 2 Multicast")
Signed-off-by: Jan Hoffmann <jan at 3e8.eu>
---
target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c | 1 -
target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c | 1 -
2 files changed, 2 deletions(-)
diff --git a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c
index 672675e884..e45919d8b5 100644
--- a/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c
+++ b/target/linux/realtek/files-5.10/drivers/net/dsa/rtl83xx/dsa.c
@@ -994,7 +994,6 @@ static int rtl83xx_mc_group_alloc(struct rtl838x_switch_priv *priv, int port)
}
set_bit(mc_group, priv->mc_group_bm);
- mc_group++; // We cannot use group 0, as this is used for lookup miss flooding
portmask = BIT_ULL(port) | BIT_ULL(priv->cpu_port);
priv->r->write_mcast_pmask(mc_group, portmask);
diff --git a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c
index dbf87a6072..43b6d502f7 100644
--- a/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c
+++ b/target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c
@@ -981,7 +981,6 @@ static int rtl83xx_mc_group_alloc(struct rtl838x_switch_priv *priv, int port)
}
set_bit(mc_group, priv->mc_group_bm);
- mc_group++; /* We cannot use group 0, as this is used for lookup miss flooding */
portmask = BIT_ULL(port) | BIT_ULL(priv->cpu_port);
priv->r->write_mcast_pmask(mc_group, portmask);
More information about the lede-commits
mailing list