mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
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: cde31976e3
("realtek: Add support for Layer 2 Multicast")
Signed-off-by: Jan Hoffmann <jan@3e8.eu>
This commit is contained in:
parent
81931756e1
commit
57df840670
@ -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);
|
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);
|
portmask = BIT_ULL(port) | BIT_ULL(priv->cpu_port);
|
||||||
priv->r->write_mcast_pmask(mc_group, portmask);
|
priv->r->write_mcast_pmask(mc_group, portmask);
|
||||||
|
|
||||||
|
@ -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);
|
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);
|
portmask = BIT_ULL(port) | BIT_ULL(priv->cpu_port);
|
||||||
priv->r->write_mcast_pmask(mc_group, portmask);
|
priv->r->write_mcast_pmask(mc_group, portmask);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user