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:
		 Birger Koblitz
					Birger Koblitz
				
			
				
					committed by
					
						 Petr Štetiar
						Petr Štetiar
					
				
			
			
				
	
			
			
			 Petr Štetiar
						Petr Štetiar
					
				
			
						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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user