Эх сурвалжийг харах

net: ethernet: prueth: disable MC filtering when promisc mode enabled

When promiscuous mode is enabled, multicast filtering should be disabled
so that no packets are filtered out. When promiscuous mode is disabled,
the driver already re-enables multicast filtering.

Signed-off-by: Aaron Kramer <a-kramer@ti.com>
Aaron Kramer 6 жил өмнө
parent
commit
88b88af985

+ 4 - 0
drivers/net/ethernet/ti/prueth.c

@@ -4133,6 +4133,8 @@ static void emac_ndo_set_rx_mode(struct net_device *ndev)
 	struct prueth *prueth = emac->prueth;
 	struct prueth_mmap_sram_cfg *s = &prueth->mmap_sram_cfg;
 	void __iomem *sram = prueth->mem[PRUETH_MEM_SHARED_RAM].va;
+	void __iomem *ram = emac->prueth->mem[emac->dram].va;
+	u32 mc_ctrl_byte = prueth->fw_offsets->mc_ctrl_byte;
 	u32 reg, mask;
 
 	if (PRUETH_HAS_RED(prueth))
@@ -4161,6 +4163,8 @@ static void emac_ndo_set_rx_mode(struct net_device *ndev)
 	if (ndev->flags & IFF_PROMISC) {
 		/* Enable promiscuous mode */
 		reg |= mask;
+		/* Disable MC filtering when promiscuous mode enabled */
+		writeb(MULTICAST_FILTER_DISABLED, ram + mc_ctrl_byte);
 	} else {
 		/* Disable promiscuous mode */
 		reg &= ~mask;