forked from Ivasoft/openwrt
ar8327: add IGMP Snooping support
This add support for IGMP Snooping on atheros switches (disabled by default), which avoids flooding the network with multicast data. Tested on TL-WDR4300: disabling IGMP Snooping results in multicast flooding on each specific port, enabling it back again prevents each port from receiving all multicast packets. Partially based on: http://patchwork.ozlabs.org/patch/418122/ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> SVN-Revision: 48268
This commit is contained in:
@@ -98,6 +98,71 @@
|
||||
#define AR8327_REG_EEE_CTRL 0x100
|
||||
#define AR8327_EEE_CTRL_DISABLE_PHY(_i) BIT(4 + (_i) * 2)
|
||||
|
||||
#define AR8327_REG_FRAME_ACK_CTRL0 0x210
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN0 BIT(0)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN0 BIT(1)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN0 BIT(2)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN0 BIT(3)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN0 BIT(4)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN0 BIT(5)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN0 BIT(6)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN1 BIT(8)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN1 BIT(9)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN1 BIT(10)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN1 BIT(11)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN1 BIT(12)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN1 BIT(13)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN1 BIT(14)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN2 BIT(16)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN2 BIT(17)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN2 BIT(18)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN2 BIT(19)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN2 BIT(20)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN2 BIT(21)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN2 BIT(22)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN3 BIT(24)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN3 BIT(25)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN3 BIT(26)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN3 BIT(27)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN3 BIT(28)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN3 BIT(29)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN3 BIT(30)
|
||||
|
||||
#define AR8327_REG_FRAME_ACK_CTRL1 0x214
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN4 BIT(0)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN4 BIT(1)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN4 BIT(2)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN4 BIT(3)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN4 BIT(4)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN4 BIT(5)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN4 BIT(6)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN5 BIT(8)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN5 BIT(9)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN5 BIT(10)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN5 BIT(11)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN5 BIT(12)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN5 BIT(13)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN5 BIT(14)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD_EN6 BIT(16)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN_EN6 BIT(17)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE_EN6 BIT(18)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL_EN6 BIT(19)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP_EN6 BIT(20)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK_EN6 BIT(21)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ_EN6 BIT(22)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_V3_EN BIT(24)
|
||||
#define AR8327_FRAME_ACK_CTRL_PPPOE_EN BIT(25)
|
||||
|
||||
#define AR8327_REG_FRAME_ACK_CTRL(_i) (0x210 + ((_i) / 4) * 0x4)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_MLD BIT(0)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_JOIN BIT(1)
|
||||
#define AR8327_FRAME_ACK_CTRL_IGMP_LEAVE BIT(2)
|
||||
#define AR8327_FRAME_ACK_CTRL_EAPOL BIT(3)
|
||||
#define AR8327_FRAME_ACK_CTRL_DHCP BIT(4)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_ACK BIT(5)
|
||||
#define AR8327_FRAME_ACK_CTRL_ARP_REQ BIT(6)
|
||||
#define AR8327_FRAME_ACK_CTRL_S(_i) (((_i) % 4) * 8)
|
||||
|
||||
#define AR8327_REG_PORT_VLAN0(_i) (0x420 + (_i) * 0x8)
|
||||
#define AR8327_PORT_VLAN0_DEF_SVID BITS(0, 12)
|
||||
#define AR8327_PORT_VLAN0_DEF_SVID_S 0
|
||||
|
||||
Reference in New Issue
Block a user