[dpdk-dev,v4,6/8] net/tap: add multicast addresses management

Message ID c676c2e8228e8cbcc940f13e9dbf9dfddc0f327d.1489479553.git.pascal.mazon@6wind.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply patch file failure

Commit Message

Pascal Mazon March 14, 2017, 8:22 a.m. UTC
  A tap netdevice actually receives every packet, without any filtering
whatsoever. There is no need for any multicast address registration
to receive multicast packets.

Signed-off-by: Pascal Mazon <pascal.mazon@6wind.com>
---
 doc/guides/nics/features/tap.ini |  1 +
 drivers/net/tap/rte_eth_tap.c    | 13 +++++++++++++
 2 files changed, 14 insertions(+)
  

Patch

diff --git a/doc/guides/nics/features/tap.ini b/doc/guides/nics/features/tap.ini
index 6c07352088bf..6aa11874e2bc 100644
--- a/doc/guides/nics/features/tap.ini
+++ b/doc/guides/nics/features/tap.ini
@@ -10,6 +10,7 @@  Promiscuous mode     = Y
 Allmulticast mode    = Y
 Basic stats          = Y
 MTU update           = Y
+Multicast MAC filter = Y
 Speed capabilities   = Y
 Unicast MAC filter   = Y
 Other kdrv           = Y
diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index 86d2b3b4c106..e9aa2f45ba54 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -701,6 +701,18 @@  tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 	return err;
 }
 
+static int
+tap_set_mc_addr_list(struct rte_eth_dev *dev __rte_unused,
+		     struct ether_addr *mc_addr_set __rte_unused,
+		     uint32_t nb_mc_addr __rte_unused)
+{
+	/*
+	 * Nothing to do actually: the tap has no filtering whatsoever, every
+	 * packet is received.
+	 */
+	return 0;
+}
+
 static const struct eth_dev_ops ops = {
 	.dev_start              = tap_dev_start,
 	.dev_stop               = tap_dev_stop,
@@ -720,6 +732,7 @@  static const struct eth_dev_ops ops = {
 	.allmulticast_disable   = tap_allmulti_disable,
 	.mac_addr_set           = tap_mac_set,
 	.mtu_set                = tap_mtu_set,
+	.set_mc_addr_list       = tap_set_mc_addr_list,
 	.stats_get              = tap_stats_get,
 	.stats_reset            = tap_stats_reset,
 };