All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] app/testpmd: add flush multicast MAC address command
@ 2023-08-01  2:43 Dengdui Huang
  2023-08-01 15:18 ` Stephen Hemminger
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Dengdui Huang @ 2023-08-01  2:43 UTC (permalink / raw)
  To: dev
  Cc: ferruh.yigit, aman.deep.singh, yuying.zhang, anatoly.burakov,
	liuyonglong

Add command to flush multicast MAC address
Usage:
    mcast_addr flush <port_id> :
    flush multicast MAC address on port_id

Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
---
 app/test-pmd/cmdline.c                      | 43 +++++++++++++++++++++
 app/test-pmd/config.c                       | 18 +++++++++
 app/test-pmd/testpmd.h                      |  1 +
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  8 ++++
 4 files changed, 70 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0d0723f659..2d9d925776 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -494,6 +494,9 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"mac_addr remove (port_id) (XX:XX:XX:XX:XX:XX)\n"
 			"    Remove a MAC address from port_id.\n\n"
 
+			"mcast_addr flush (port_id)\n"
+			"    To flush the set of multicast addresses.\n\n"
+
 			"mac_addr set (port_id) (XX:XX:XX:XX:XX:XX)\n"
 			"    Set the default MAC address for port_id.\n\n"
 
@@ -8561,6 +8564,45 @@ static cmdline_parse_inst_t cmd_mcast_addr = {
 	},
 };
 
+/* *** FLUSH MULTICAST MAC ADDRESS ON PORT *** */
+struct cmd_mcast_addr_flush_result {
+	cmdline_fixed_string_t mcast_addr_cmd;
+	cmdline_fixed_string_t what;
+	uint16_t port_num;
+};
+
+static void cmd_mcast_addr_flush_parsed(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_mcast_addr_flush_result *res = parsed_result;
+
+	mcast_addr_flush(res->port_num);
+}
+
+static cmdline_parse_token_string_t cmd_mcast_addr_flush_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_mcast_addr_result,
+				 mcast_addr_cmd, "mcast_addr");
+static cmdline_parse_token_string_t cmd_mcast_addr_flush_what =
+	TOKEN_STRING_INITIALIZER(struct cmd_mcast_addr_result, what,
+				 "flush");
+static cmdline_parse_token_num_t cmd_mcast_addr_flush_portnum =
+	TOKEN_NUM_INITIALIZER(struct cmd_mcast_addr_result, port_num,
+				 RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_mcast_addr_flush = {
+	.f = cmd_mcast_addr_flush_parsed,
+	.data = (void *)0,
+	.help_str = "mcast_addr flush <port_id> : "
+		"flush multicast MAC address on port_id",
+	.tokens = {
+		(void *)&cmd_mcast_addr_flush_cmd,
+		(void *)&cmd_mcast_addr_flush_what,
+		(void *)&cmd_mcast_addr_flush_portnum,
+		NULL,
+	},
+};
+
 /* vf vlan anti spoof configuration */
 
 /* Common result structure for vf vlan anti spoof */
@@ -12929,6 +12971,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_port_meter_stats_mask,
 	(cmdline_parse_inst_t *)&cmd_show_port_meter_stats,
 	(cmdline_parse_inst_t *)&cmd_mcast_addr,
+	(cmdline_parse_inst_t *)&cmd_mcast_addr_flush,
 	(cmdline_parse_inst_t *)&cmd_set_vf_vlan_anti_spoof,
 	(cmdline_parse_inst_t *)&cmd_set_vf_mac_anti_spoof,
 	(cmdline_parse_inst_t *)&cmd_set_vf_vlan_stripq,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 11f3a22048..d66d1db37c 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -6802,6 +6802,24 @@ mcast_addr_remove(portid_t port_id, struct rte_ether_addr *mc_addr)
 		mcast_addr_pool_append(port, mc_addr);
 }
 
+void
+mcast_addr_flush(portid_t port_id)
+{
+	int ret;
+
+	if (port_id_is_invalid(port_id, ENABLED_WARN))
+		return;
+
+	ret = rte_eth_dev_set_mc_addr_list(port_id, NULL, 0);
+	if (ret != 0) {
+		fprintf(stderr,
+			"Failed to flush the set of filtered addresses on port %u\n",
+			port_id);
+		return;
+	}
+	mcast_addr_pool_destroy(port_id);
+}
+
 void
 port_dcb_info_display(portid_t port_id)
 {
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index f1df6a8faf..65d3634f6a 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -1176,6 +1176,7 @@ void show_mcast_macs(portid_t port_id);
 /* Functions to manage the set of filtered Multicast MAC addresses */
 void mcast_addr_add(portid_t port_id, struct rte_ether_addr *mc_addr);
 void mcast_addr_remove(portid_t port_id, struct rte_ether_addr *mc_addr);
+void mcast_addr_flush(portid_t port_id);
 void port_dcb_info_display(portid_t port_id);
 
 uint8_t *open_file(const char *file_path, uint32_t *size);
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index a182479ab2..c3ab1507c4 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -1320,6 +1320,14 @@ filtered by port::
 
    testpmd> mcast_addr remove (port_id) (mcast_addr)
 
+mcast_addr flush
+~~~~~~~~~~~~~~~~
+
+To flush the set of multicast addresses
+filtered by port::
+
+   testpmd> mcast_addr flush (port_id)
+
 mac_addr add (for VF)
 ~~~~~~~~~~~~~~~~~~~~~
 
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2023-10-09  9:40 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-01  2:43 [PATCH] app/testpmd: add flush multicast MAC address command Dengdui Huang
2023-08-01 15:18 ` Stephen Hemminger
2023-08-02  1:28   ` huangdengdui
2023-08-02  2:41   ` huangdengdui
2023-08-02  4:16     ` Stephen Hemminger
2023-08-02  6:11       ` huangdengdui
2023-08-02  6:23 ` [PATCH v2] " Dengdui Huang
2023-09-28 17:23   ` Ferruh Yigit
2023-10-07  8:18     ` huangdengdui
2023-10-08  1:56 ` [PATCH v3 0/2] fix help string and add a new command Dengdui Huang
2023-10-08  1:56   ` [PATCH v3 1/2] app/testpmd: fix help string Dengdui Huang
2023-10-08  2:47     ` fengchengwen
2023-10-08  6:46       ` huangdengdui
2023-10-08  1:56   ` [PATCH v3 2/2] app/testpmd: add flush all multicast MAC address command Dengdui Huang
2023-10-08  2:50     ` fengchengwen
2023-10-08  6:46 ` [PATCH v3 0/2] fix help string and add a new command Dengdui Huang
2023-10-08  6:46   ` [PATCH v4 1/2] app/testpmd: fix help string Dengdui Huang
2023-10-08  6:46   ` [PATCH v4 2/2] app/testpmd: add flush all multicast MAC address command Dengdui Huang
2023-10-09  9:39   ` [PATCH v3 0/2] fix help string and add a new command Ferruh Yigit

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.