Browse Source

net: dsa: enable master promisc mode if available and needed

If ports have their own unique MAC addrs and master has a set_promisc
function, call it so that packets will be received for ports.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Tim Harvey 2 years ago
parent
commit
431f9d72ff
1 changed files with 8 additions and 1 deletions
  1. 8 1
      net/dsa-uclass.c

+ 8 - 1
net/dsa-uclass.c

@@ -277,8 +277,15 @@ static int dsa_port_probe(struct udevice *pdev)
 	 * has a unique MAC address specified in the environment.
 	 */
 	eth_env_get_enetaddr_by_index("eth", dev_seq(pdev), env_enetaddr);
-	if (!is_zero_ethaddr(env_enetaddr))
+	if (!is_zero_ethaddr(env_enetaddr)) {
+		/* individual port mac addrs require master to be promisc */
+		struct eth_ops *eth_ops = eth_get_ops(master);
+
+		if (eth_ops->set_promisc)
+			eth_ops->set_promisc(master, 1);
+
 		return 0;
+	}
 
 	master_pdata = dev_get_plat(master);
 	eth_pdata = dev_get_plat(pdev);