mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-01-09 08:09:41 +00:00
realtek: add IGMP/MLD snooping support
This adds snooping support for IGMP and MLD on RTL8380/90/9300 by trapping IGMP and MLD packets to the CPU. Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
This commit is contained in:
parent
9e8d62e421
commit
cf4edabefd
@ -897,28 +897,30 @@ static int rtl838x_eth_open(struct net_device *ndev)
|
||||
switch (priv->family_id) {
|
||||
case RTL8380_FAMILY_ID:
|
||||
rtl838x_hw_en_rxtx(priv);
|
||||
/* Trap IGMP traffic to CPU-Port */
|
||||
/* Trap IGMP/MLD traffic to CPU-Port */
|
||||
sw_w32(0x3, RTL838X_SPCL_TRAP_IGMP_CTRL);
|
||||
/* Flush learned FDB entries on link down of a port */
|
||||
sw_w32_mask(0, BIT(7), RTL838X_L2_CTRL_0);
|
||||
break;
|
||||
|
||||
case RTL8390_FAMILY_ID:
|
||||
rtl839x_hw_en_rxtx(priv);
|
||||
// Trap MLD and IGMP messages to CPU_PORT
|
||||
sw_w32(0x3, RTL839X_SPCL_TRAP_IGMP_CTRL);
|
||||
/* Flush learned FDB entries on link down of a port */
|
||||
sw_w32_mask(0, BIT(7), RTL839X_L2_CTRL_0);
|
||||
break;
|
||||
|
||||
case RTL9300_FAMILY_ID:
|
||||
rtl93xx_hw_en_rxtx(priv);
|
||||
/* Flush learned FDB entries on link down of a port */
|
||||
sw_w32_mask(0, BIT(7), RTL930X_L2_CTRL);
|
||||
sw_w32_mask(BIT(28), 0, RTL930X_L2_PORT_SABLK_CTRL);
|
||||
sw_w32_mask(BIT(28), 0, RTL930X_L2_PORT_DABLK_CTRL);
|
||||
// Trap MLD and IGMP messages to CPU_PORT
|
||||
sw_w32((0x2 << 3) | 0x2, RTL930X_VLAN_APP_PKT_CTRL);
|
||||
break;
|
||||
|
||||
case RTL9310_FAMILY_ID:
|
||||
rtl93xx_hw_en_rxtx(priv);
|
||||
// TODO: Add trapping of IGMP frames to CPU-port
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -177,6 +177,7 @@
|
||||
#define RTL839X_RMA_CTRL_2 (0x1208)
|
||||
#define RTL839X_RMA_CTRL_3 (0x120C)
|
||||
|
||||
#define RTL930X_VLAN_APP_PKT_CTRL (0xA23C)
|
||||
#define RTL930X_RMA_CTRL_0 (0x9E60)
|
||||
#define RTL930X_RMA_CTRL_1 (0x9E64)
|
||||
#define RTL930X_RMA_CTRL_2 (0x9E68)
|
||||
|
Loading…
Reference in New Issue
Block a user