浏览代码

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 年之前
父节点
当前提交
88b88af985
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/net/ethernet/ti/prueth.c

+ 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;