drivers: ethernet: Add promiscuous mode to xmc4xxx
This patch adds promiscuos mode to the XMC4xxx SOC's ethernet driver.
Signed-off-by: Marcelo Roberto Jimenez <marcelo.jimenez@gmail.com>
diff --git a/drivers/ethernet/eth_xmc4xxx.c b/drivers/ethernet/eth_xmc4xxx.c
index 1d2a4f3..31ca10d 100644
--- a/drivers/ethernet/eth_xmc4xxx.c
+++ b/drivers/ethernet/eth_xmc4xxx.c
@@ -905,6 +905,10 @@
caps |= ETHERNET_HW_VLAN;
#endif
+#if defined(CONFIG_NET_PROMISCUOUS_MODE)
+ caps |= ETHERNET_PROMISC_MODE;
+#endif
+
return caps;
}
@@ -925,6 +929,20 @@
net_if_set_link_addr(dev_data->iface, dev_data->mac_addr,
sizeof(dev_data->mac_addr), NET_LINK_ETHERNET);
return 0;
+#if defined(CONFIG_NET_PROMISCUOUS_MODE)
+ case ETHERNET_CONFIG_TYPE_PROMISC_MODE: {
+ uint32_t reg = dev_cfg->regs->MAC_FRAME_FILTER;
+
+ if (config->promisc_mode) {
+ reg |= ETH_MAC_FRAME_FILTER_PR_Msk;
+ } else {
+ reg &= ~ETH_MAC_FRAME_FILTER_PR_Msk;
+ }
+ dev_cfg->regs->MAC_FRAME_FILTER = reg;
+
+ return 0;
+ }
+#endif /* CONFIG_NET_PROMISCUOUS_MODE */
default:
break;
}