DPDK patches and discussions
 help / color / mirror / Atom feed
* [RFC PATCH 0/4] Split driver specific commands out of testpmd
@ 2022-05-13  7:57 David Marchand
  2022-05-13  7:57 ` [RFC PATCH 1/4] app/testpmd: register driver specific commands David Marchand
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: David Marchand @ 2022-05-13  7:57 UTC (permalink / raw)
  To: dev; +Cc: thomas

Hello,

Following TB decision and recent discussions on the driver specific
commands in testpmd, here is a proposal on how the split could be done.

For now, this series simply moves the testpmd code in the driver
directory. The driver specific testpmd code is still compiled as part of
testpmd compilation via a global meson testpmd_driver_sources list.

TODO:
- ixgbe bypass commands in testpmd are "dead" code since switch to meson,
  as the RTE_LIBRTE_IXGBE_BYPASS define is not set while compiling testpmd.
  I am tempted to simply drop those, since no one complained about issue
  for the last two years. For now, this series reinstates them.

- this series keeps the command names as is. We could consolidate with a
  clear prefix so that users directly know they are exerting a special
  feature that makes no sense on other hw.
  For this, I had in mind introducing a "driver" top level prefix,
  where drivers would hook their specific stuff. For example:
  testpmd> driver ixgbe set vf split drop (port_id) (vf_id) (on|off)

- the documentation of those commands is left untouched, we should
  probably move any existing doc into the driver documentation itself.
  testpmd documentation could then have a generic
  "Driver specific commands" section pointing at all other driver docs.

Opinions on this first draft?


-- 
David Marchand

David Marchand (4):
  app/testpmd: register driver specific commands
  net/bonding: move testpmd commands
  net/i40e: move testpmd commands
  net/ixgbe: move testpmd commands

 app/test-pmd/cmdline.c                     | 9284 +++++++-------------
 app/test-pmd/meson.build                   |    8 +-
 app/test-pmd/testpmd.c                     |   18 +-
 app/test-pmd/testpmd.h                     |   21 +-
 drivers/meson.build                        |    5 +
 drivers/net/bonding/meson.build            |    1 +
 drivers/net/bonding/rte_eth_bond_testpmd.c | 1037 +++
 drivers/net/i40e/i40e_testpmd.c            |  655 ++
 drivers/net/i40e/meson.build               |    2 +
 drivers/net/ixgbe/ixgbe_testpmd.c          | 1147 +++
 drivers/net/ixgbe/meson.build              |    2 +
 meson.build                                |    2 +
 12 files changed, 6216 insertions(+), 5966 deletions(-)
 create mode 100644 drivers/net/bonding/rte_eth_bond_testpmd.c
 create mode 100644 drivers/net/i40e/i40e_testpmd.c
 create mode 100644 drivers/net/ixgbe/ixgbe_testpmd.c

-- 
2.23.0


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

* [RFC PATCH 1/4] app/testpmd: register driver specific commands
  2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
@ 2022-05-13  7:57 ` David Marchand
  2022-05-13 10:30   ` David Marchand
  2022-05-13  7:57 ` [RFC PATCH 2/4] net/bonding: move testpmd commands David Marchand
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: David Marchand @ 2022-05-13  7:57 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Bruce Richardson

Introduce a testpmd API so that drivers can register specific commands.

A driver can list some files to compile with testpmd, by setting them
in the testpmd_sources (driver local) meson variable.
drivers/meson.build then takes care of appending this to a global meson
variable, and adding the driver to testpmd dependency.

Note: testpmd.h is fixed to that it is self sufficient when being
included.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c   | 83 ++++++++++++++++++++++++++++++++++++----
 app/test-pmd/meson.build |  5 +++
 app/test-pmd/testpmd.c   |  4 ++
 app/test-pmd/testpmd.h   | 16 ++++++++
 drivers/meson.build      |  5 +++
 meson.build              |  2 +
 6 files changed, 108 insertions(+), 7 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 6ffea8e21a..ed62027834 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -69,6 +69,9 @@
 #include "bpf_cmd.h"
 
 static struct cmdline *testpmd_cl;
+static cmdline_parse_ctx_t *main_ctx;
+static TAILQ_HEAD(, testpmd_cmdline_parser) cmdline_parsers =
+	TAILQ_HEAD_INITIALIZER(cmdline_parsers);
 
 static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue);
 
@@ -94,6 +97,7 @@ static void cmd_help_brief_parsed(__rte_unused void *parsed_result,
 		"    help filters                    : Filters configuration help.\n"
 		"    help traffic_management         : Traffic Management commands.\n"
 		"    help devices                    : Device related cmds.\n"
+		"    help drivers                    : Driver specific cmds.\n"
 		"    help all                        : All of the above sections.\n\n"
 	);
 
@@ -1177,6 +1181,21 @@ static void cmd_help_long_parsed(void *parsed_result,
 		);
 	}
 
+	if (show_all || !strcmp(res->section, "drivers")) {
+		struct testpmd_cmdline_parser *parser;
+		unsigned int i;
+
+		cmdline_printf(
+			cl,
+			"\n"
+			"Driver specific:\n"
+			"----------------\n"
+		);
+		TAILQ_FOREACH(parser, &cmdline_parsers, next) {
+			for (i = 0; parser->help[i] != NULL; i++)
+				cmdline_printf(cl, "%s\n", parser->help[i]);
+		}
+	}
 }
 
 cmdline_parse_token_string_t cmd_help_long_help =
@@ -1184,14 +1203,14 @@ cmdline_parse_token_string_t cmd_help_long_help =
 
 cmdline_parse_token_string_t cmd_help_long_section =
 	TOKEN_STRING_INITIALIZER(struct cmd_help_long_result, section,
-			"all#control#display#config#"
-			"ports#registers#filters#traffic_management#devices");
+		"all#control#display#config#ports#registers#"
+		"filters#traffic_management#devices#drivers");
 
 cmdline_parse_inst_t cmd_help_long = {
 	.f = cmd_help_long_parsed,
 	.data = NULL,
 	.help_str = "help all|control|display|config|ports|register|"
-		"filters|traffic_management|devices: "
+		"filters|traffic_management|devices|drivers: "
 		"Show help",
 	.tokens = {
 		(void *)&cmd_help_long_help,
@@ -17810,7 +17829,7 @@ cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = {
 /* ******************************************************************************** */
 
 /* list of instructions */
-cmdline_parse_ctx_t main_ctx[] = {
+static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_help_brief,
 	(cmdline_parse_inst_t *)&cmd_help_long,
 	(cmdline_parse_inst_t *)&cmd_quit,
@@ -18096,6 +18115,59 @@ cmdline_parse_ctx_t main_ctx[] = {
 	NULL,
 };
 
+void
+testpmd_add_commands(struct testpmd_cmdline_parser *parser)
+{
+	TAILQ_INSERT_TAIL(&cmdline_parsers, parser, next);
+}
+
+int
+init_cmdline(void)
+{
+	struct testpmd_cmdline_parser *parser;
+	cmdline_parse_ctx_t *ctx;
+	unsigned int count = 0;
+	unsigned int i;
+
+	/* initialize non-constant commands */
+	cmd_set_fwd_mode_init();
+	cmd_set_fwd_retry_mode_init();
+
+	main_ctx = NULL;
+	for (i = 0; builtin_ctx[i] != NULL; i++) {
+		ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
+		if (ctx == NULL)
+			goto err;
+		main_ctx = ctx;
+		main_ctx[count + i] = builtin_ctx[i];
+	}
+	count += i;
+
+	TAILQ_FOREACH(parser, &cmdline_parsers, next) {
+		for (i = 0; parser->ctx[i] != NULL; i++) {
+			ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
+			if (ctx == NULL)
+				goto err;
+			ctx[count + i] = parser->ctx[i];
+		}
+		count += i;
+	}
+
+	/* cmdline expects a NULL terminated array */
+	ctx = realloc(main_ctx, (count + 1) * sizeof(*ctx));
+	if (ctx == NULL)
+		goto err;
+	ctx[count] = NULL;
+	count += 1;
+
+	main_ctx = ctx;
+
+	return 0;
+err:
+	free(main_ctx);
+	return -1;
+}
+
 /* read cmdline commands from file */
 void
 cmdline_read_from_file(const char *filename)
@@ -18123,9 +18195,6 @@ void
 prompt(void)
 {
 	int ret;
-	/* initialize non-constant commands */
-	cmd_set_fwd_mode_init();
-	cmd_set_fwd_retry_mode_init();
 
 	testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> ");
 	if (testpmd_cl == NULL)
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 43130c8856..46a7511e9a 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -73,3 +73,8 @@ endif
 if dpdk_conf.has('RTE_NET_DPAA')
     deps += ['bus_dpaa', 'mempool_dpaa', 'net_dpaa']
 endif
+
+# Driver specific sources include some testpmd headers.
+includes = include_directories('.')
+sources += testpmd_drivers_sources
+deps += testpmd_drivers_deps
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index fe2ce19f99..5bda46e32b 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -4263,6 +4263,10 @@ main(int argc, char** argv)
 	}
 #endif
 #ifdef RTE_LIB_CMDLINE
+	if (init_cmdline() != 0)
+		rte_exit(EXIT_FAILURE,
+			"Could not initialise cmdline context.\n");
+
 	if (strlen(cmdline_filename) != 0)
 		cmdline_read_from_file(cmdline_filename);
 
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 31f766c965..9058d21a07 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -16,7 +16,13 @@
 #include <rte_gso.h>
 #endif
 #include <rte_os_shim.h>
+#include <rte_ethdev.h>
+#include <rte_flow.h>
+#include <rte_mbuf_dyn.h>
+
 #include <cmdline.h>
+#include <cmdline_parse.h>
+
 #include <sys/queue.h>
 #ifdef RTE_HAS_JANSSON
 #include <jansson.h>
@@ -866,6 +872,7 @@ unsigned int parse_item_list(const char *str, const char *item_name,
 			unsigned int *parsed_items, int check_unique_values);
 void launch_args_parse(int argc, char** argv);
 void cmdline_read_from_file(const char *filename);
+int init_cmdline(void);
 void prompt(void);
 void prompt_exit(void);
 void nic_stats_display(portid_t port_id);
@@ -1169,6 +1176,15 @@ extern int flow_parse(const char *src, void *result, unsigned int size,
 		      struct rte_flow_item **pattern,
 		      struct rte_flow_action **actions);
 
+/* For registering commands out of testpmd sources. */
+struct testpmd_cmdline_parser {
+	TAILQ_ENTRY(testpmd_cmdline_parser) next;
+	cmdline_parse_ctx_t *ctx;
+	const char *help[];
+};
+
+void testpmd_add_commands(struct testpmd_cmdline_parser *parser);
+
 /*
  * Work-around of a compilation error with ICC on invocations of the
  * rte_be_to_cpu_16() function.
diff --git a/drivers/meson.build b/drivers/meson.build
index 1d8123b00c..4daa2658b7 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -102,6 +102,7 @@ foreach subpath:subdirs
         # static builds.
         ext_deps = []
         pkgconfig_extra_libs = []
+        testpmd_sources = []
 
         if not enable_drivers.contains(drv_path)
             build = false
@@ -246,6 +247,10 @@ foreach subpath:subdirs
         set_variable('shared_@0@'.format(lib_name), shared_dep)
         set_variable('static_@0@'.format(lib_name), static_dep)
         dependency_name = ''.join(lib_name.split('rte_'))
+        if testpmd_sources.length() != 0
+            testpmd_drivers_sources += testpmd_sources
+            testpmd_drivers_deps += dependency_name
+        endif
         if developer_mode
             message('drivers/@0@: Defining dependency "@1@"'.format(
                     drv_path, dependency_name))
diff --git a/meson.build b/meson.build
index 937f6110c0..5561171617 100644
--- a/meson.build
+++ b/meson.build
@@ -42,6 +42,8 @@ dpdk_drivers = []
 dpdk_extra_ldflags = []
 dpdk_libs_disabled = []
 dpdk_drvs_disabled = []
+testpmd_drivers_sources = []
+testpmd_drivers_deps = []
 abi_version_file = files('ABI_VERSION')
 
 if host_machine.cpu_family().startswith('x86')
-- 
2.23.0


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

* [RFC PATCH 2/4] net/bonding: move testpmd commands
  2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
  2022-05-13  7:57 ` [RFC PATCH 1/4] app/testpmd: register driver specific commands David Marchand
@ 2022-05-13  7:57 ` David Marchand
  2022-05-13 10:09   ` Min Hu (Connor)
  2022-05-13  7:57 ` [RFC PATCH 3/4] net/i40e: " David Marchand
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: David Marchand @ 2022-05-13  7:57 UTC (permalink / raw)
  To: dev
  Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Chas Williams,
	Min Hu (Connor)

Move related specific testpmd commands into this driver directory.
While at it, fix checkpatch warnings.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c                     | 1035 -------------------
 app/test-pmd/meson.build                   |    3 -
 drivers/net/bonding/meson.build            |    1 +
 drivers/net/bonding/rte_eth_bond_testpmd.c | 1037 ++++++++++++++++++++
 4 files changed, 1038 insertions(+), 1038 deletions(-)
 create mode 100644 drivers/net/bonding/rte_eth_bond_testpmd.c

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index ed62027834..ae4759fbfe 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -47,10 +47,6 @@
 #include <cmdline_parse_etheraddr.h>
 #include <cmdline_socket.h>
 #include <cmdline.h>
-#ifdef RTE_NET_BOND
-#include <rte_eth_bond.h>
-#include <rte_eth_bond_8023ad.h>
-#endif
 #if defined RTE_BUS_DPAA && defined RTE_NET_DPAA
 #include <rte_pmd_dpaa.h>
 #endif
@@ -614,44 +610,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"   Show the bypass configuration for a bypass enabled NIC"
 			" using the lowest port on the NIC.\n\n"
 
-#ifdef RTE_NET_BOND
-			"create bonded device (mode) (socket)\n"
-			"	Create a new bonded device with specific bonding mode and socket.\n\n"
-
-			"add bonding slave (slave_id) (port_id)\n"
-			"	Add a slave device to a bonded device.\n\n"
-
-			"remove bonding slave (slave_id) (port_id)\n"
-			"	Remove a slave device from a bonded device.\n\n"
-
-			"set bonding mode (value) (port_id)\n"
-			"	Set the bonding mode on a bonded device.\n\n"
-
-			"set bonding primary (slave_id) (port_id)\n"
-			"	Set the primary slave for a bonded device.\n\n"
-
-			"show bonding config (port_id)\n"
-			"	Show the bonding config for port_id.\n\n"
-
-			"show bonding lacp info (port_id)\n"
-			"	Show the bonding lacp information for port_id.\n\n"
-
-			"set bonding mac_addr (port_id) (address)\n"
-			"	Set the MAC address of a bonded device.\n\n"
-
-			"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)"
-			"	Set Aggregation mode for IEEE802.3AD (mode 4)"
-
-			"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
-			"	Set the transmit balance policy for bonded device running in balance mode.\n\n"
-
-			"set bonding mon_period (port_id) (value)\n"
-			"	Set the bonding link status monitoring polling period in ms.\n\n"
-
-			"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
-			"	Enable/disable dedicated queues for LACP control traffic.\n\n"
-
-#endif
 			"set link-up port (port_id)\n"
 			"	Set link up for a port.\n\n"
 
@@ -5925,985 +5883,6 @@ cmdline_parse_inst_t cmd_show_bypass_config = {
 	},
 };
 
-#ifdef RTE_NET_BOND
-/* *** SET BONDING MODE *** */
-struct cmd_set_bonding_mode_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mode;
-	uint8_t value;
-	portid_t port_id;
-};
-
-static void cmd_set_bonding_mode_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_mode_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	struct rte_port *port = &ports[port_id];
-
-	/*
-	 * Bonding mode changed means resources of device changed, like whether
-	 * started rte timer or not. Device should be restarted when resources
-	 * of device changed.
-	 */
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr,
-			"\t Error: Can't set bonding mode when port %d is not stopped\n",
-			port_id);
-		return;
-	}
-
-	/* Set the bonding mode for the relevant port. */
-	if (0 != rte_eth_bond_mode_set(port_id, res->value))
-		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
-			port_id);
-}
-
-cmdline_parse_token_string_t cmd_setbonding_mode_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_mode_mode =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		mode, "mode");
-cmdline_parse_token_num_t cmd_setbonding_mode_value =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
-		value, RTE_UINT8);
-cmdline_parse_token_num_t cmd_setbonding_mode_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
-		port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_set_bonding_mode = {
-		.f = cmd_set_bonding_mode_parsed,
-		.help_str = "set bonding mode <mode_value> <port_id>: "
-			"Set the bonding mode for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *) &cmd_setbonding_mode_set,
-				(void *) &cmd_setbonding_mode_bonding,
-				(void *) &cmd_setbonding_mode_mode,
-				(void *) &cmd_setbonding_mode_value,
-				(void *) &cmd_setbonding_mode_port,
-				NULL
-		}
-};
-
-/* *** SET BONDING SLOW_QUEUE SW/HW *** */
-struct cmd_set_bonding_lacp_dedicated_queues_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t lacp;
-	cmdline_fixed_string_t dedicated_queues;
-	portid_t port_id;
-	cmdline_fixed_string_t mode;
-};
-
-static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	struct rte_port *port;
-
-	port = &ports[port_id];
-
-	/** Check if the port is not started **/
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr, "Please stop port %d first\n", port_id);
-		return;
-	}
-
-	if (!strcmp(res->mode, "enable")) {
-		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
-			printf("Dedicate queues for LACP control packets"
-					" enabled\n");
-		else
-			printf("Enabling dedicate queues for LACP control "
-					"packets on port %d failed\n", port_id);
-	} else if (!strcmp(res->mode, "disable")) {
-		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
-			printf("Dedicated queues for LACP control packets "
-					"disabled\n");
-		else
-			printf("Disabling dedicated queues for LACP control "
-					"traffic on port %d failed\n", port_id);
-	}
-}
-
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		lacp, "lacp");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		dedicated_queues, "dedicated_queues");
-cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		mode, "enable#disable");
-
-cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
-		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
-		.help_str = "set bonding lacp dedicated_queues <port_id> "
-			"enable|disable: "
-			"Enable/disable dedicated queues for LACP control traffic for port_id",
-		.data = NULL,
-		.tokens = {
-			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
-			NULL
-		}
-};
-
-/* *** SET BALANCE XMIT POLICY *** */
-struct cmd_set_bonding_balance_xmit_policy_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t balance_xmit_policy;
-	portid_t port_id;
-	cmdline_fixed_string_t policy;
-};
-
-static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	uint8_t policy;
-
-	if (!strcmp(res->policy, "l2")) {
-		policy = BALANCE_XMIT_POLICY_LAYER2;
-	} else if (!strcmp(res->policy, "l23")) {
-		policy = BALANCE_XMIT_POLICY_LAYER23;
-	} else if (!strcmp(res->policy, "l34")) {
-		policy = BALANCE_XMIT_POLICY_LAYER34;
-	} else {
-		fprintf(stderr, "\t Invalid xmit policy selection");
-		return;
-	}
-
-	/* Set the bonding mode for the relevant port. */
-	if (0 != rte_eth_bond_xmit_policy_set(port_id, policy)) {
-		fprintf(stderr,
-			"\t Failed to set bonding balance xmit policy for port = %d.\n",
-			port_id);
-	}
-}
-
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		balance_xmit_policy, "balance_xmit_policy");
-cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		policy, "l2#l23#l34");
-
-cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
-		.f = cmd_set_bonding_balance_xmit_policy_parsed,
-		.help_str = "set bonding balance_xmit_policy <port_id> "
-			"l2|l23|l34: "
-			"Set the bonding balance_xmit_policy for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_setbonding_balance_xmit_policy_set,
-				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
-				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
-				(void *)&cmd_setbonding_balance_xmit_policy_port,
-				(void *)&cmd_setbonding_balance_xmit_policy_policy,
-				NULL
-		}
-};
-
-/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
-struct cmd_show_bonding_lacp_info_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t lacp;
-	cmdline_fixed_string_t info;
-	portid_t port_id;
-};
-
-static void port_param_show(struct port_params *params)
-{
-	char buf[RTE_ETHER_ADDR_FMT_SIZE];
-
-	printf("\t\tsystem priority: %u\n", params->system_priority);
-	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
-	printf("\t\tsystem mac address: %s\n", buf);
-	printf("\t\tport key: %u\n", params->key);
-	printf("\t\tport priority: %u\n", params->port_priority);
-	printf("\t\tport number: %u\n", params->port_number);
-}
-
-static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
-{
-	char a_state[256] = { 0 };
-	char p_state[256] = { 0 };
-	int a_len = 0;
-	int p_len = 0;
-	uint32_t i;
-
-	static const char * const state[] = {
-		"ACTIVE",
-		"TIMEOUT",
-		"AGGREGATION",
-		"SYNCHRONIZATION",
-		"COLLECTING",
-		"DISTRIBUTING",
-		"DEFAULTED",
-		"EXPIRED"
-	};
-	static const char * const selection[] = {
-		"UNSELECTED",
-		"STANDBY",
-		"SELECTED"
-	};
-
-	for (i = 0; i < RTE_DIM(state); i++) {
-		if ((info->actor_state >> i) & 1)
-			a_len += snprintf(&a_state[a_len],
-						RTE_DIM(a_state) - a_len, "%s ",
-						state[i]);
-
-		if ((info->partner_state >> i) & 1)
-			p_len += snprintf(&p_state[p_len],
-						RTE_DIM(p_state) - p_len, "%s ",
-						state[i]);
-	}
-	printf("\tAggregator port id: %u\n", info->agg_port_id);
-	printf("\tselection: %s\n", selection[info->selected]);
-	printf("\tActor detail info:\n");
-	port_param_show(&info->actor);
-	printf("\t\tport state: %s\n", a_state);
-	printf("\tPartner detail info:\n");
-	port_param_show(&info->partner);
-	printf("\t\tport state: %s\n", p_state);
-	printf("\n");
-}
-
-static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
-{
-	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
-	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
-	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
-	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
-	printf("\taggregate wait timeout: %u ms\n",
-			conf->aggregate_wait_timeout_ms);
-	printf("\ttx period: %u ms\n", conf->tx_period_ms);
-	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
-	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
-	switch (conf->agg_selection) {
-	case AGG_BANDWIDTH:
-		printf("\taggregation mode: bandwidth\n");
-		break;
-	case AGG_STABLE:
-		printf("\taggregation mode: stable\n");
-		break;
-	case AGG_COUNT:
-		printf("\taggregation mode: count\n");
-		break;
-	default:
-		printf("\taggregation mode: invalid\n");
-		break;
-	}
-
-	printf("\n");
-}
-
-static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
-	struct rte_eth_bond_8023ad_slave_info slave_info;
-	struct rte_eth_bond_8023ad_conf port_conf;
-	portid_t slaves[RTE_MAX_ETHPORTS];
-	portid_t port_id = res->port_id;
-	int num_active_slaves;
-	int bonding_mode;
-	int i;
-	int ret;
-
-	bonding_mode = rte_eth_bond_mode_get(port_id);
-	if (bonding_mode != BONDING_MODE_8023AD) {
-		fprintf(stderr, "\tBonding mode is not mode 4\n");
-		return;
-	}
-
-	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
-			RTE_MAX_ETHPORTS);
-	if (num_active_slaves < 0) {
-		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
-				port_id);
-		return;
-	}
-	if (num_active_slaves == 0)
-		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
-			port_id);
-
-	printf("\tIEEE802.3 port: %u\n", port_id);
-	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
-	if (ret) {
-		fprintf(stderr, "\tGet bonded device %u info failed\n",
-			port_id);
-		return;
-	}
-	lacp_conf_show(&port_conf);
-
-	for (i = 0; i < num_active_slaves; i++) {
-		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
-				&slave_info);
-		if (ret) {
-			fprintf(stderr, "\tGet slave device %u info failed\n",
-				slaves[i]);
-			return;
-		}
-		printf("\tSlave Port: %u\n", slaves[i]);
-		lacp_slave_info_show(&slave_info);
-	}
-}
-
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		show, "show");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		bonding, "lacp");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		info, "info");
-cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
-TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
-		.f = cmd_show_bonding_lacp_info_parsed,
-		.help_str = "show bonding lacp info <port_id> : "
-			"Show bonding IEEE802.3 information for port_id",
-		.data = NULL,
-		.tokens = {
-			(void *)&cmd_show_bonding_lacp_info_show,
-			(void *)&cmd_show_bonding_lacp_info_bonding,
-			(void *)&cmd_show_bonding_lacp_info_lacp,
-			(void *)&cmd_show_bonding_lacp_info_info,
-			(void *)&cmd_show_bonding_lacp_info_port_id,
-			NULL
-		}
-};
-
-/* *** SHOW NIC BONDING CONFIGURATION *** */
-struct cmd_show_bonding_config_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t config;
-	portid_t port_id;
-};
-
-static void cmd_show_bonding_config_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_show_bonding_config_result *res = parsed_result;
-	int bonding_mode, agg_mode;
-	portid_t slaves[RTE_MAX_ETHPORTS];
-	int num_slaves, num_active_slaves;
-	int primary_id;
-	int i;
-	portid_t port_id = res->port_id;
-
-	/* Display the bonding mode.*/
-	bonding_mode = rte_eth_bond_mode_get(port_id);
-	if (bonding_mode < 0) {
-		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
-			port_id);
-		return;
-	} else
-		printf("\tBonding mode: %d\n", bonding_mode);
-
-	if (bonding_mode == BONDING_MODE_BALANCE ||
-		bonding_mode == BONDING_MODE_8023AD) {
-		int balance_xmit_policy;
-
-		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
-		if (balance_xmit_policy < 0) {
-			fprintf(stderr,
-				"\tFailed to get balance xmit policy for port = %d\n",
-				port_id);
-			return;
-		} else {
-			printf("\tBalance Xmit Policy: ");
-
-			switch (balance_xmit_policy) {
-			case BALANCE_XMIT_POLICY_LAYER2:
-				printf("BALANCE_XMIT_POLICY_LAYER2");
-				break;
-			case BALANCE_XMIT_POLICY_LAYER23:
-				printf("BALANCE_XMIT_POLICY_LAYER23");
-				break;
-			case BALANCE_XMIT_POLICY_LAYER34:
-				printf("BALANCE_XMIT_POLICY_LAYER34");
-				break;
-			}
-			printf("\n");
-		}
-	}
-
-	if (bonding_mode == BONDING_MODE_8023AD) {
-		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
-		printf("\tIEEE802.3AD Aggregator Mode: ");
-		switch (agg_mode) {
-		case AGG_BANDWIDTH:
-			printf("bandwidth");
-			break;
-		case AGG_STABLE:
-			printf("stable");
-			break;
-		case AGG_COUNT:
-			printf("count");
-			break;
-		}
-		printf("\n");
-	}
-
-	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
-
-	if (num_slaves < 0) {
-		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
-			port_id);
-		return;
-	}
-	if (num_slaves > 0) {
-		printf("\tSlaves (%d): [", num_slaves);
-		for (i = 0; i < num_slaves - 1; i++)
-			printf("%d ", slaves[i]);
-
-		printf("%d]\n", slaves[num_slaves - 1]);
-	} else {
-		printf("\tSlaves: []\n");
-
-	}
-
-	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
-			RTE_MAX_ETHPORTS);
-
-	if (num_active_slaves < 0) {
-		fprintf(stderr,
-			"\tFailed to get active slave list for port = %d\n",
-			port_id);
-		return;
-	}
-	if (num_active_slaves > 0) {
-		printf("\tActive Slaves (%d): [", num_active_slaves);
-		for (i = 0; i < num_active_slaves - 1; i++)
-			printf("%d ", slaves[i]);
-
-		printf("%d]\n", slaves[num_active_slaves - 1]);
-
-	} else {
-		printf("\tActive Slaves: []\n");
-
-	}
-
-	primary_id = rte_eth_bond_primary_get(port_id);
-	if (primary_id < 0) {
-		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
-			port_id);
-		return;
-	} else
-		printf("\tPrimary: [%d]\n", primary_id);
-
-}
-
-cmdline_parse_token_string_t cmd_showbonding_config_show =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		show, "show");
-cmdline_parse_token_string_t cmd_showbonding_config_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_showbonding_config_config =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		config, "config");
-cmdline_parse_token_num_t cmd_showbonding_config_port =
-TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
-		port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_show_bonding_config = {
-		.f = cmd_show_bonding_config_parsed,
-		.help_str = "show bonding config <port_id>: "
-			"Show the bonding config for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_showbonding_config_show,
-				(void *)&cmd_showbonding_config_bonding,
-				(void *)&cmd_showbonding_config_config,
-				(void *)&cmd_showbonding_config_port,
-				NULL
-		}
-};
-
-/* *** SET BONDING PRIMARY *** */
-struct cmd_set_bonding_primary_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t primary;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_set_bonding_primary_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_primary_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* Set the primary slave for a bonded device. */
-	if (0 != rte_eth_bond_primary_set(master_port_id, slave_port_id)) {
-		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
-			master_port_id);
-		return;
-	}
-	init_port_config();
-}
-
-cmdline_parse_token_string_t cmd_setbonding_primary_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_primary_primary =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		primary, "primary");
-cmdline_parse_token_num_t cmd_setbonding_primary_slave =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
-		slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_setbonding_primary_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
-		port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_set_bonding_primary = {
-		.f = cmd_set_bonding_primary_parsed,
-		.help_str = "set bonding primary <slave_id> <port_id>: "
-			"Set the primary slave for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_setbonding_primary_set,
-				(void *)&cmd_setbonding_primary_bonding,
-				(void *)&cmd_setbonding_primary_primary,
-				(void *)&cmd_setbonding_primary_slave,
-				(void *)&cmd_setbonding_primary_port,
-				NULL
-		}
-};
-
-/* *** ADD SLAVE *** */
-struct cmd_add_bonding_slave_result {
-	cmdline_fixed_string_t add;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t slave;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_add_bonding_slave_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_add_bonding_slave_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* add the slave for a bonded device. */
-	if (0 != rte_eth_bond_slave_add(master_port_id, slave_port_id)) {
-		fprintf(stderr,
-			"\t Failed to add slave %d to master port = %d.\n",
-			slave_port_id, master_port_id);
-		return;
-	}
-	init_port_config();
-	set_port_slave_flag(slave_port_id);
-}
-
-cmdline_parse_token_string_t cmd_addbonding_slave_add =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		add, "add");
-cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		bonding, "bonding");
-cmdline_parse_token_string_t cmd_addbonding_slave_slave =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		slave, "slave");
-cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
-TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
-		slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_addbonding_slave_port =
-TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
-		port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_add_bonding_slave = {
-		.f = cmd_add_bonding_slave_parsed,
-		.help_str = "add bonding slave <slave_id> <port_id>: "
-			"Add a slave device to a bonded device",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_addbonding_slave_add,
-				(void *)&cmd_addbonding_slave_bonding,
-				(void *)&cmd_addbonding_slave_slave,
-				(void *)&cmd_addbonding_slave_slaveid,
-				(void *)&cmd_addbonding_slave_port,
-				NULL
-		}
-};
-
-/* *** REMOVE SLAVE *** */
-struct cmd_remove_bonding_slave_result {
-	cmdline_fixed_string_t remove;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t slave;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_remove_bonding_slave_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_remove_bonding_slave_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* remove the slave from a bonded device. */
-	if (0 != rte_eth_bond_slave_remove(master_port_id, slave_port_id)) {
-		fprintf(stderr,
-			"\t Failed to remove slave %d from master port = %d.\n",
-			slave_port_id, master_port_id);
-		return;
-	}
-	init_port_config();
-	clear_port_slave_flag(slave_port_id);
-}
-
-cmdline_parse_token_string_t cmd_removebonding_slave_remove =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				remove, "remove");
-cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				bonding, "bonding");
-cmdline_parse_token_string_t cmd_removebonding_slave_slave =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				slave, "slave");
-cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
-		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_removebonding_slave_port =
-		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_remove_bonding_slave = {
-		.f = cmd_remove_bonding_slave_parsed,
-		.help_str = "remove bonding slave <slave_id> <port_id>: "
-			"Remove a slave device from a bonded device",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_removebonding_slave_remove,
-				(void *)&cmd_removebonding_slave_bonding,
-				(void *)&cmd_removebonding_slave_slave,
-				(void *)&cmd_removebonding_slave_slaveid,
-				(void *)&cmd_removebonding_slave_port,
-				NULL
-		}
-};
-
-/* *** CREATE BONDED DEVICE *** */
-struct cmd_create_bonded_device_result {
-	cmdline_fixed_string_t create;
-	cmdline_fixed_string_t bonded;
-	cmdline_fixed_string_t device;
-	uint8_t mode;
-	uint8_t socket;
-};
-
-static int bond_dev_num = 0;
-
-static void cmd_create_bonded_device_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_create_bonded_device_result *res = parsed_result;
-	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
-	int port_id;
-	int ret;
-
-	if (test_done == 0) {
-		fprintf(stderr, "Please stop forwarding first\n");
-		return;
-	}
-
-	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
-			bond_dev_num++);
-
-	/* Create a new bonded device. */
-	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
-	if (port_id < 0) {
-		fprintf(stderr, "\t Failed to create bonded device.\n");
-		return;
-	} else {
-		printf("Created new bonded device %s on (port %d).\n", ethdev_name,
-				port_id);
-
-		/* Update number of ports */
-		nb_ports = rte_eth_dev_count_avail();
-		reconfig(port_id, res->socket);
-		ret = rte_eth_promiscuous_enable(port_id);
-		if (ret != 0)
-			fprintf(stderr,
-				"Failed to enable promiscuous mode for port %u: %s - ignore\n",
-				port_id, rte_strerror(-ret));
-
-		ports[port_id].need_setup = 0;
-		ports[port_id].port_status = RTE_PORT_STOPPED;
-	}
-
-}
-
-cmdline_parse_token_string_t cmd_createbonded_device_create =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				create, "create");
-cmdline_parse_token_string_t cmd_createbonded_device_bonded =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				bonded, "bonded");
-cmdline_parse_token_string_t cmd_createbonded_device_device =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				device, "device");
-cmdline_parse_token_num_t cmd_createbonded_device_mode =
-		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
-				mode, RTE_UINT8);
-cmdline_parse_token_num_t cmd_createbonded_device_socket =
-		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
-				socket, RTE_UINT8);
-
-cmdline_parse_inst_t cmd_create_bonded_device = {
-		.f = cmd_create_bonded_device_parsed,
-		.help_str = "create bonded device <mode> <socket>: "
-			"Create a new bonded device with specific bonding mode and socket",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_createbonded_device_create,
-				(void *)&cmd_createbonded_device_bonded,
-				(void *)&cmd_createbonded_device_device,
-				(void *)&cmd_createbonded_device_mode,
-				(void *)&cmd_createbonded_device_socket,
-				NULL
-		}
-};
-
-/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
-struct cmd_set_bond_mac_addr_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mac_addr;
-	uint16_t port_num;
-	struct rte_ether_addr address;
-};
-
-static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bond_mac_addr_result *res = parsed_result;
-	int ret;
-
-	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
-		return;
-
-	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
-
-	/* check the return value and print it if is < 0 */
-	if (ret < 0)
-		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
-			strerror(-ret));
-}
-
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
-				"bonding");
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
-				"mac_addr");
-cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
-				port_num, RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
-		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
-
-cmdline_parse_inst_t cmd_set_bond_mac_addr = {
-		.f = cmd_set_bond_mac_addr_parsed,
-		.data = (void *) 0,
-		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
-		.tokens = {
-				(void *)&cmd_set_bond_mac_addr_set,
-				(void *)&cmd_set_bond_mac_addr_bonding,
-				(void *)&cmd_set_bond_mac_addr_mac,
-				(void *)&cmd_set_bond_mac_addr_portnum,
-				(void *)&cmd_set_bond_mac_addr_addr,
-				NULL
-		}
-};
-
-
-/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
-struct cmd_set_bond_mon_period_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mon_period;
-	uint16_t port_num;
-	uint32_t period_ms;
-};
-
-static void cmd_set_bond_mon_period_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bond_mon_period_result *res = parsed_result;
-	int ret;
-
-	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
-
-	/* check the return value and print it if is < 0 */
-	if (ret < 0)
-		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
-			strerror(-ret));
-}
-
-cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				set, "set");
-cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				bonding, "bonding");
-cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				mon_period,	"mon_period");
-cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				port_num, RTE_UINT16);
-cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				period_ms, RTE_UINT32);
-
-cmdline_parse_inst_t cmd_set_bond_mon_period = {
-		.f = cmd_set_bond_mon_period_parsed,
-		.data = (void *) 0,
-		.help_str = "set bonding mon_period <port_id> <period_ms>",
-		.tokens = {
-				(void *)&cmd_set_bond_mon_period_set,
-				(void *)&cmd_set_bond_mon_period_bonding,
-				(void *)&cmd_set_bond_mon_period_mon_period,
-				(void *)&cmd_set_bond_mon_period_portnum,
-				(void *)&cmd_set_bond_mon_period_period_ms,
-				NULL
-		}
-};
-
-
-
-struct cmd_set_bonding_agg_mode_policy_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t agg_mode;
-	uint16_t port_num;
-	cmdline_fixed_string_t policy;
-};
-
-
-static void
-cmd_set_bonding_agg_mode(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
-	uint8_t policy = AGG_BANDWIDTH;
-
-	if (!strcmp(res->policy, "bandwidth"))
-		policy = AGG_BANDWIDTH;
-	else if (!strcmp(res->policy, "stable"))
-		policy = AGG_STABLE;
-	else if (!strcmp(res->policy, "count"))
-		policy = AGG_COUNT;
-
-	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
-}
-
-
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				set, "set");
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				bonding, "bonding");
-
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				agg_mode, "agg_mode");
-
-cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				port_num, RTE_UINT16);
-
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
-	TOKEN_STRING_INITIALIZER(
-			struct cmd_set_bonding_balance_xmit_policy_result,
-		policy, "stable#bandwidth#count");
-
-cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
-	.f = cmd_set_bonding_agg_mode,
-	.data = (void *) 0,
-	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
-	.tokens = {
-			(void *)&cmd_set_bonding_agg_mode_set,
-			(void *)&cmd_set_bonding_agg_mode_bonding,
-			(void *)&cmd_set_bonding_agg_mode_agg_mode,
-			(void *)&cmd_set_bonding_agg_mode_portnum,
-			(void *)&cmd_set_bonding_agg_mode_policy_string,
-			NULL
-		}
-};
-
-
-#endif /* RTE_NET_BOND */
-
 /* *** SET FORWARDING MODE *** */
 struct cmd_set_fwd_mode_result {
 	cmdline_fixed_string_t set;
@@ -17870,20 +16849,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_bypass_event,
 	(cmdline_parse_inst_t *)&cmd_set_bypass_timeout,
 	(cmdline_parse_inst_t *)&cmd_show_bypass_config,
-#ifdef RTE_NET_BOND
-	(cmdline_parse_inst_t *) &cmd_set_bonding_mode,
-	(cmdline_parse_inst_t *) &cmd_show_bonding_config,
-	(cmdline_parse_inst_t *) &cmd_show_bonding_lacp_info,
-	(cmdline_parse_inst_t *) &cmd_set_bonding_primary,
-	(cmdline_parse_inst_t *) &cmd_add_bonding_slave,
-	(cmdline_parse_inst_t *) &cmd_remove_bonding_slave,
-	(cmdline_parse_inst_t *) &cmd_create_bonded_device,
-	(cmdline_parse_inst_t *) &cmd_set_bond_mac_addr,
-	(cmdline_parse_inst_t *) &cmd_set_balance_xmit_policy,
-	(cmdline_parse_inst_t *) &cmd_set_bond_mon_period,
-	(cmdline_parse_inst_t *) &cmd_set_lacp_dedicated_queues,
-	(cmdline_parse_inst_t *) &cmd_set_bonding_agg_mode_policy,
-#endif
 	(cmdline_parse_inst_t *)&cmd_vlan_offload,
 	(cmdline_parse_inst_t *)&cmd_vlan_tpid,
 	(cmdline_parse_inst_t *)&cmd_rx_vlan_filter_all,
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 46a7511e9a..07634332f3 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -58,9 +58,6 @@ endif
 if dpdk_conf.has('RTE_LIB_PDUMP')
     deps += 'pdump'
 endif
-if dpdk_conf.has('RTE_NET_BOND')
-    deps += 'net_bond'
-endif
 if dpdk_conf.has('RTE_NET_BNXT')
     deps += 'net_bnxt'
 endif
diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build
index 402b44be1a..faea892295 100644
--- a/drivers/net/bonding/meson.build
+++ b/drivers/net/bonding/meson.build
@@ -16,6 +16,7 @@ sources = files(
         'rte_eth_bond_flow.c',
         'rte_eth_bond_pmd.c',
 )
+testpmd_sources = files('rte_eth_bond_testpmd.c')
 
 deps += 'sched' # needed for rte_bitmap.h
 deps += ['ip_frag']
diff --git a/drivers/net/bonding/rte_eth_bond_testpmd.c b/drivers/net/bonding/rte_eth_bond_testpmd.c
new file mode 100644
index 0000000000..834e2da4e6
--- /dev/null
+++ b/drivers/net/bonding/rte_eth_bond_testpmd.c
@@ -0,0 +1,1037 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2016 Intel Corporation.
+ */
+
+#include <rte_eth_bond.h>
+#include <rte_eth_bond_8023ad.h>
+
+#include <cmdline_parse.h>
+#include <cmdline_parse_etheraddr.h>
+#include <cmdline_parse_num.h>
+#include <cmdline_parse_string.h>
+
+#include "testpmd.h"
+
+/* *** SET BONDING MODE *** */
+struct cmd_set_bonding_mode_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mode;
+	uint8_t value;
+	portid_t port_id;
+};
+
+static void cmd_set_bonding_mode_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_mode_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	struct rte_port *port = &ports[port_id];
+
+	/*
+	 * Bonding mode changed means resources of device changed, like whether
+	 * started rte timer or not. Device should be restarted when resources
+	 * of device changed.
+	 */
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr,
+			"\t Error: Can't set bonding mode when port %d is not stopped\n",
+			port_id);
+		return;
+	}
+
+	/* Set the bonding mode for the relevant port. */
+	if (rte_eth_bond_mode_set(port_id, res->value) != 0)
+		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
+			port_id);
+}
+
+cmdline_parse_token_string_t cmd_setbonding_mode_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		set, "set");
+cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_setbonding_mode_mode =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		mode, "mode");
+cmdline_parse_token_num_t cmd_setbonding_mode_value =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
+		value, RTE_UINT8);
+cmdline_parse_token_num_t cmd_setbonding_mode_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
+		port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_set_bonding_mode = {
+		.f = cmd_set_bonding_mode_parsed,
+		.help_str = "set bonding mode <mode_value> <port_id>: "
+			"Set the bonding mode for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_mode_set,
+				(void *)&cmd_setbonding_mode_bonding,
+				(void *)&cmd_setbonding_mode_mode,
+				(void *)&cmd_setbonding_mode_value,
+				(void *)&cmd_setbonding_mode_port,
+				NULL
+		}
+};
+
+/* *** SET BONDING SLOW_QUEUE SW/HW *** */
+struct cmd_set_bonding_lacp_dedicated_queues_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t lacp;
+	cmdline_fixed_string_t dedicated_queues;
+	portid_t port_id;
+	cmdline_fixed_string_t mode;
+};
+
+static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	struct rte_port *port;
+
+	port = &ports[port_id];
+
+	/** Check if the port is not started **/
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr, "Please stop port %d first\n", port_id);
+		return;
+	}
+
+	if (!strcmp(res->mode, "enable")) {
+		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
+			printf("Dedicate queues for LACP control packets"
+					" enabled\n");
+		else
+			printf("Enabling dedicate queues for LACP control "
+					"packets on port %d failed\n", port_id);
+	} else if (!strcmp(res->mode, "disable")) {
+		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
+			printf("Dedicated queues for LACP control packets "
+					"disabled\n");
+		else
+			printf("Disabling dedicated queues for LACP control "
+					"traffic on port %d failed\n", port_id);
+	}
+}
+
+cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		set, "set");
+cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		lacp, "lacp");
+cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		dedicated_queues, "dedicated_queues");
+cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		mode, "enable#disable");
+
+cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
+		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
+		.help_str = "set bonding lacp dedicated_queues <port_id> "
+			"enable|disable: "
+			"Enable/disable dedicated queues for LACP control traffic for port_id",
+		.data = NULL,
+		.tokens = {
+			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
+			NULL
+		}
+};
+
+/* *** SET BALANCE XMIT POLICY *** */
+struct cmd_set_bonding_balance_xmit_policy_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t balance_xmit_policy;
+	portid_t port_id;
+	cmdline_fixed_string_t policy;
+};
+
+static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	uint8_t policy;
+
+	if (!strcmp(res->policy, "l2")) {
+		policy = BALANCE_XMIT_POLICY_LAYER2;
+	} else if (!strcmp(res->policy, "l23")) {
+		policy = BALANCE_XMIT_POLICY_LAYER23;
+	} else if (!strcmp(res->policy, "l34")) {
+		policy = BALANCE_XMIT_POLICY_LAYER34;
+	} else {
+		fprintf(stderr, "\t Invalid xmit policy selection");
+		return;
+	}
+
+	/* Set the bonding mode for the relevant port. */
+	if (rte_eth_bond_xmit_policy_set(port_id, policy) != 0) {
+		fprintf(stderr,
+			"\t Failed to set bonding balance xmit policy for port = %d.\n",
+			port_id);
+	}
+}
+
+cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		set, "set");
+cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		balance_xmit_policy, "balance_xmit_policy");
+cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		policy, "l2#l23#l34");
+
+cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
+		.f = cmd_set_bonding_balance_xmit_policy_parsed,
+		.help_str = "set bonding balance_xmit_policy <port_id> "
+			"l2|l23|l34: "
+			"Set the bonding balance_xmit_policy for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_balance_xmit_policy_set,
+				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
+				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
+				(void *)&cmd_setbonding_balance_xmit_policy_port,
+				(void *)&cmd_setbonding_balance_xmit_policy_policy,
+				NULL
+		}
+};
+
+/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
+struct cmd_show_bonding_lacp_info_result {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t lacp;
+	cmdline_fixed_string_t info;
+	portid_t port_id;
+};
+
+static void port_param_show(struct port_params *params)
+{
+	char buf[RTE_ETHER_ADDR_FMT_SIZE];
+
+	printf("\t\tsystem priority: %u\n", params->system_priority);
+	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
+	printf("\t\tsystem mac address: %s\n", buf);
+	printf("\t\tport key: %u\n", params->key);
+	printf("\t\tport priority: %u\n", params->port_priority);
+	printf("\t\tport number: %u\n", params->port_number);
+}
+
+static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
+{
+	char a_state[256] = { 0 };
+	char p_state[256] = { 0 };
+	int a_len = 0;
+	int p_len = 0;
+	uint32_t i;
+
+	static const char * const state[] = {
+		"ACTIVE",
+		"TIMEOUT",
+		"AGGREGATION",
+		"SYNCHRONIZATION",
+		"COLLECTING",
+		"DISTRIBUTING",
+		"DEFAULTED",
+		"EXPIRED"
+	};
+	static const char * const selection[] = {
+		"UNSELECTED",
+		"STANDBY",
+		"SELECTED"
+	};
+
+	for (i = 0; i < RTE_DIM(state); i++) {
+		if ((info->actor_state >> i) & 1)
+			a_len += snprintf(&a_state[a_len],
+						RTE_DIM(a_state) - a_len, "%s ",
+						state[i]);
+
+		if ((info->partner_state >> i) & 1)
+			p_len += snprintf(&p_state[p_len],
+						RTE_DIM(p_state) - p_len, "%s ",
+						state[i]);
+	}
+	printf("\tAggregator port id: %u\n", info->agg_port_id);
+	printf("\tselection: %s\n", selection[info->selected]);
+	printf("\tActor detail info:\n");
+	port_param_show(&info->actor);
+	printf("\t\tport state: %s\n", a_state);
+	printf("\tPartner detail info:\n");
+	port_param_show(&info->partner);
+	printf("\t\tport state: %s\n", p_state);
+	printf("\n");
+}
+
+static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
+{
+	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
+	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
+	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
+	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
+	printf("\taggregate wait timeout: %u ms\n",
+			conf->aggregate_wait_timeout_ms);
+	printf("\ttx period: %u ms\n", conf->tx_period_ms);
+	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
+	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
+	switch (conf->agg_selection) {
+	case AGG_BANDWIDTH:
+		printf("\taggregation mode: bandwidth\n");
+		break;
+	case AGG_STABLE:
+		printf("\taggregation mode: stable\n");
+		break;
+	case AGG_COUNT:
+		printf("\taggregation mode: count\n");
+		break;
+	default:
+		printf("\taggregation mode: invalid\n");
+		break;
+	}
+
+	printf("\n");
+}
+
+static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
+	struct rte_eth_bond_8023ad_slave_info slave_info;
+	struct rte_eth_bond_8023ad_conf port_conf;
+	portid_t slaves[RTE_MAX_ETHPORTS];
+	portid_t port_id = res->port_id;
+	int num_active_slaves;
+	int bonding_mode;
+	int i;
+	int ret;
+
+	bonding_mode = rte_eth_bond_mode_get(port_id);
+	if (bonding_mode != BONDING_MODE_8023AD) {
+		fprintf(stderr, "\tBonding mode is not mode 4\n");
+		return;
+	}
+
+	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
+			RTE_MAX_ETHPORTS);
+	if (num_active_slaves < 0) {
+		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
+				port_id);
+		return;
+	}
+	if (num_active_slaves == 0)
+		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
+			port_id);
+
+	printf("\tIEEE802.3 port: %u\n", port_id);
+	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
+	if (ret) {
+		fprintf(stderr, "\tGet bonded device %u info failed\n",
+			port_id);
+		return;
+	}
+	lacp_conf_show(&port_conf);
+
+	for (i = 0; i < num_active_slaves; i++) {
+		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
+				&slave_info);
+		if (ret) {
+			fprintf(stderr, "\tGet slave device %u info failed\n",
+				slaves[i]);
+			return;
+		}
+		printf("\tSlave Port: %u\n", slaves[i]);
+		lacp_slave_info_show(&slave_info);
+	}
+}
+
+cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		show, "show");
+cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		bonding, "lacp");
+cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		info, "info");
+cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
+TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
+		.f = cmd_show_bonding_lacp_info_parsed,
+		.help_str = "show bonding lacp info <port_id> : "
+			"Show bonding IEEE802.3 information for port_id",
+		.data = NULL,
+		.tokens = {
+			(void *)&cmd_show_bonding_lacp_info_show,
+			(void *)&cmd_show_bonding_lacp_info_bonding,
+			(void *)&cmd_show_bonding_lacp_info_lacp,
+			(void *)&cmd_show_bonding_lacp_info_info,
+			(void *)&cmd_show_bonding_lacp_info_port_id,
+			NULL
+		}
+};
+
+/* *** SHOW NIC BONDING CONFIGURATION *** */
+struct cmd_show_bonding_config_result {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t config;
+	portid_t port_id;
+};
+
+static void cmd_show_bonding_config_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_show_bonding_config_result *res = parsed_result;
+	int bonding_mode, agg_mode;
+	portid_t slaves[RTE_MAX_ETHPORTS];
+	int num_slaves, num_active_slaves;
+	int primary_id;
+	int i;
+	portid_t port_id = res->port_id;
+
+	/* Display the bonding mode.*/
+	bonding_mode = rte_eth_bond_mode_get(port_id);
+	if (bonding_mode < 0) {
+		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
+			port_id);
+		return;
+	}
+	printf("\tBonding mode: %d\n", bonding_mode);
+
+	if (bonding_mode == BONDING_MODE_BALANCE ||
+		bonding_mode == BONDING_MODE_8023AD) {
+		int balance_xmit_policy;
+
+		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
+		if (balance_xmit_policy < 0) {
+			fprintf(stderr,
+				"\tFailed to get balance xmit policy for port = %d\n",
+				port_id);
+			return;
+		}
+		printf("\tBalance Xmit Policy: ");
+
+		switch (balance_xmit_policy) {
+		case BALANCE_XMIT_POLICY_LAYER2:
+			printf("BALANCE_XMIT_POLICY_LAYER2");
+			break;
+		case BALANCE_XMIT_POLICY_LAYER23:
+			printf("BALANCE_XMIT_POLICY_LAYER23");
+			break;
+		case BALANCE_XMIT_POLICY_LAYER34:
+			printf("BALANCE_XMIT_POLICY_LAYER34");
+			break;
+		}
+		printf("\n");
+	}
+
+	if (bonding_mode == BONDING_MODE_8023AD) {
+		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
+		printf("\tIEEE802.3AD Aggregator Mode: ");
+		switch (agg_mode) {
+		case AGG_BANDWIDTH:
+			printf("bandwidth");
+			break;
+		case AGG_STABLE:
+			printf("stable");
+			break;
+		case AGG_COUNT:
+			printf("count");
+			break;
+		}
+		printf("\n");
+	}
+
+	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
+
+	if (num_slaves < 0) {
+		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
+			port_id);
+		return;
+	}
+	if (num_slaves > 0) {
+		printf("\tSlaves (%d): [", num_slaves);
+		for (i = 0; i < num_slaves - 1; i++)
+			printf("%d ", slaves[i]);
+
+		printf("%d]\n", slaves[num_slaves - 1]);
+	} else {
+		printf("\tSlaves: []\n");
+	}
+
+	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
+			RTE_MAX_ETHPORTS);
+
+	if (num_active_slaves < 0) {
+		fprintf(stderr,
+			"\tFailed to get active slave list for port = %d\n",
+			port_id);
+		return;
+	}
+	if (num_active_slaves > 0) {
+		printf("\tActive Slaves (%d): [", num_active_slaves);
+		for (i = 0; i < num_active_slaves - 1; i++)
+			printf("%d ", slaves[i]);
+
+		printf("%d]\n", slaves[num_active_slaves - 1]);
+
+	} else {
+		printf("\tActive Slaves: []\n");
+	}
+
+	primary_id = rte_eth_bond_primary_get(port_id);
+	if (primary_id < 0) {
+		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
+			port_id);
+		return;
+	}
+	printf("\tPrimary: [%d]\n", primary_id);
+}
+
+cmdline_parse_token_string_t cmd_showbonding_config_show =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		show, "show");
+cmdline_parse_token_string_t cmd_showbonding_config_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_showbonding_config_config =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		config, "config");
+cmdline_parse_token_num_t cmd_showbonding_config_port =
+TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
+		port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_show_bonding_config = {
+		.f = cmd_show_bonding_config_parsed,
+		.help_str = "show bonding config <port_id>: "
+			"Show the bonding config for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_showbonding_config_show,
+				(void *)&cmd_showbonding_config_bonding,
+				(void *)&cmd_showbonding_config_config,
+				(void *)&cmd_showbonding_config_port,
+				NULL
+		}
+};
+
+/* *** SET BONDING PRIMARY *** */
+struct cmd_set_bonding_primary_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t primary;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_set_bonding_primary_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_primary_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* Set the primary slave for a bonded device. */
+	if (rte_eth_bond_primary_set(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
+			master_port_id);
+		return;
+	}
+	init_port_config();
+}
+
+cmdline_parse_token_string_t cmd_setbonding_primary_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		set, "set");
+cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_setbonding_primary_primary =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		primary, "primary");
+cmdline_parse_token_num_t cmd_setbonding_primary_slave =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
+		slave_id, RTE_UINT16);
+cmdline_parse_token_num_t cmd_setbonding_primary_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
+		port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_set_bonding_primary = {
+		.f = cmd_set_bonding_primary_parsed,
+		.help_str = "set bonding primary <slave_id> <port_id>: "
+			"Set the primary slave for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_primary_set,
+				(void *)&cmd_setbonding_primary_bonding,
+				(void *)&cmd_setbonding_primary_primary,
+				(void *)&cmd_setbonding_primary_slave,
+				(void *)&cmd_setbonding_primary_port,
+				NULL
+		}
+};
+
+/* *** ADD SLAVE *** */
+struct cmd_add_bonding_slave_result {
+	cmdline_fixed_string_t add;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t slave;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_add_bonding_slave_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_add_bonding_slave_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* add the slave for a bonded device. */
+	if (rte_eth_bond_slave_add(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr,
+			"\t Failed to add slave %d to master port = %d.\n",
+			slave_port_id, master_port_id);
+		return;
+	}
+	init_port_config();
+	set_port_slave_flag(slave_port_id);
+}
+
+cmdline_parse_token_string_t cmd_addbonding_slave_add =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		add, "add");
+cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		bonding, "bonding");
+cmdline_parse_token_string_t cmd_addbonding_slave_slave =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		slave, "slave");
+cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
+TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
+		slave_id, RTE_UINT16);
+cmdline_parse_token_num_t cmd_addbonding_slave_port =
+TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
+		port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_add_bonding_slave = {
+		.f = cmd_add_bonding_slave_parsed,
+		.help_str = "add bonding slave <slave_id> <port_id>: "
+			"Add a slave device to a bonded device",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_addbonding_slave_add,
+				(void *)&cmd_addbonding_slave_bonding,
+				(void *)&cmd_addbonding_slave_slave,
+				(void *)&cmd_addbonding_slave_slaveid,
+				(void *)&cmd_addbonding_slave_port,
+				NULL
+		}
+};
+
+/* *** REMOVE SLAVE *** */
+struct cmd_remove_bonding_slave_result {
+	cmdline_fixed_string_t remove;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t slave;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_remove_bonding_slave_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_remove_bonding_slave_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* remove the slave from a bonded device. */
+	if (rte_eth_bond_slave_remove(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr,
+			"\t Failed to remove slave %d from master port = %d.\n",
+			slave_port_id, master_port_id);
+		return;
+	}
+	init_port_config();
+	clear_port_slave_flag(slave_port_id);
+}
+
+cmdline_parse_token_string_t cmd_removebonding_slave_remove =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				remove, "remove");
+cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				bonding, "bonding");
+cmdline_parse_token_string_t cmd_removebonding_slave_slave =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				slave, "slave");
+cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
+		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				slave_id, RTE_UINT16);
+cmdline_parse_token_num_t cmd_removebonding_slave_port =
+		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				port_id, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_remove_bonding_slave = {
+		.f = cmd_remove_bonding_slave_parsed,
+		.help_str = "remove bonding slave <slave_id> <port_id>: "
+			"Remove a slave device from a bonded device",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_removebonding_slave_remove,
+				(void *)&cmd_removebonding_slave_bonding,
+				(void *)&cmd_removebonding_slave_slave,
+				(void *)&cmd_removebonding_slave_slaveid,
+				(void *)&cmd_removebonding_slave_port,
+				NULL
+		}
+};
+
+/* *** CREATE BONDED DEVICE *** */
+struct cmd_create_bonded_device_result {
+	cmdline_fixed_string_t create;
+	cmdline_fixed_string_t bonded;
+	cmdline_fixed_string_t device;
+	uint8_t mode;
+	uint8_t socket;
+};
+
+static int bond_dev_num;
+
+static void cmd_create_bonded_device_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_create_bonded_device_result *res = parsed_result;
+	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
+	int port_id;
+	int ret;
+
+	if (test_done == 0) {
+		fprintf(stderr, "Please stop forwarding first\n");
+		return;
+	}
+
+	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
+			bond_dev_num++);
+
+	/* Create a new bonded device. */
+	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
+	if (port_id < 0) {
+		fprintf(stderr, "\t Failed to create bonded device.\n");
+		return;
+	}
+	printf("Created new bonded device %s on (port %d).\n", ethdev_name,
+		port_id);
+
+	/* Update number of ports */
+	nb_ports = rte_eth_dev_count_avail();
+	reconfig(port_id, res->socket);
+	ret = rte_eth_promiscuous_enable(port_id);
+	if (ret != 0)
+		fprintf(stderr, "Failed to enable promiscuous mode for port %u: %s - ignore\n",
+			port_id, rte_strerror(-ret));
+
+	ports[port_id].need_setup = 0;
+	ports[port_id].port_status = RTE_PORT_STOPPED;
+}
+
+cmdline_parse_token_string_t cmd_createbonded_device_create =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				create, "create");
+cmdline_parse_token_string_t cmd_createbonded_device_bonded =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				bonded, "bonded");
+cmdline_parse_token_string_t cmd_createbonded_device_device =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				device, "device");
+cmdline_parse_token_num_t cmd_createbonded_device_mode =
+		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
+				mode, RTE_UINT8);
+cmdline_parse_token_num_t cmd_createbonded_device_socket =
+		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
+				socket, RTE_UINT8);
+
+cmdline_parse_inst_t cmd_create_bonded_device = {
+		.f = cmd_create_bonded_device_parsed,
+		.help_str = "create bonded device <mode> <socket>: "
+			"Create a new bonded device with specific bonding mode and socket",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_createbonded_device_create,
+				(void *)&cmd_createbonded_device_bonded,
+				(void *)&cmd_createbonded_device_device,
+				(void *)&cmd_createbonded_device_mode,
+				(void *)&cmd_createbonded_device_socket,
+				NULL
+		}
+};
+
+/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
+struct cmd_set_bond_mac_addr_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mac_addr;
+	uint16_t port_num;
+	struct rte_ether_addr address;
+};
+
+static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bond_mac_addr_result *res = parsed_result;
+	int ret;
+
+	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
+		return;
+
+	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
+
+	/* check the return value and print it if is < 0 */
+	if (ret < 0)
+		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
+			strerror(-ret));
+}
+
+cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
+cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
+				"bonding");
+cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
+				"mac_addr");
+cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
+				port_num, RTE_UINT16);
+cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
+		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
+
+cmdline_parse_inst_t cmd_set_bond_mac_addr = {
+		.f = cmd_set_bond_mac_addr_parsed,
+		.data = NULL,
+		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
+		.tokens = {
+				(void *)&cmd_set_bond_mac_addr_set,
+				(void *)&cmd_set_bond_mac_addr_bonding,
+				(void *)&cmd_set_bond_mac_addr_mac,
+				(void *)&cmd_set_bond_mac_addr_portnum,
+				(void *)&cmd_set_bond_mac_addr_addr,
+				NULL
+		}
+};
+
+/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
+struct cmd_set_bond_mon_period_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mon_period;
+	uint16_t port_num;
+	uint32_t period_ms;
+};
+
+static void cmd_set_bond_mon_period_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bond_mon_period_result *res = parsed_result;
+	int ret;
+
+	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
+
+	/* check the return value and print it if is < 0 */
+	if (ret < 0)
+		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
+			strerror(-ret));
+}
+
+cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				set, "set");
+cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				bonding, "bonding");
+cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				mon_period,	"mon_period");
+cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				port_num, RTE_UINT16);
+cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				period_ms, RTE_UINT32);
+
+cmdline_parse_inst_t cmd_set_bond_mon_period = {
+		.f = cmd_set_bond_mon_period_parsed,
+		.data = NULL,
+		.help_str = "set bonding mon_period <port_id> <period_ms>",
+		.tokens = {
+				(void *)&cmd_set_bond_mon_period_set,
+				(void *)&cmd_set_bond_mon_period_bonding,
+				(void *)&cmd_set_bond_mon_period_mon_period,
+				(void *)&cmd_set_bond_mon_period_portnum,
+				(void *)&cmd_set_bond_mon_period_period_ms,
+				NULL
+		}
+};
+
+struct cmd_set_bonding_agg_mode_policy_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t agg_mode;
+	uint16_t port_num;
+	cmdline_fixed_string_t policy;
+};
+
+static void
+cmd_set_bonding_agg_mode(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
+	uint8_t policy = AGG_BANDWIDTH;
+
+	if (!strcmp(res->policy, "bandwidth"))
+		policy = AGG_BANDWIDTH;
+	else if (!strcmp(res->policy, "stable"))
+		policy = AGG_STABLE;
+	else if (!strcmp(res->policy, "count"))
+		policy = AGG_COUNT;
+
+	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
+}
+
+cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				set, "set");
+cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				bonding, "bonding");
+
+cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				agg_mode, "agg_mode");
+
+cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				port_num, RTE_UINT16);
+
+cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		policy, "stable#bandwidth#count");
+
+cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
+	.f = cmd_set_bonding_agg_mode,
+	.data = NULL,
+	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
+	.tokens = {
+			(void *)&cmd_set_bonding_agg_mode_set,
+			(void *)&cmd_set_bonding_agg_mode_bonding,
+			(void *)&cmd_set_bonding_agg_mode_agg_mode,
+			(void *)&cmd_set_bonding_agg_mode_portnum,
+			(void *)&cmd_set_bonding_agg_mode_policy_string,
+			NULL
+		}
+};
+
+static struct testpmd_cmdline_parser driver_parser = {
+	.ctx = (cmdline_parse_ctx_t[]) {
+		(cmdline_parse_inst_t *)&cmd_set_bonding_mode,
+		(cmdline_parse_inst_t *)&cmd_show_bonding_config,
+		(cmdline_parse_inst_t *)&cmd_show_bonding_lacp_info,
+		(cmdline_parse_inst_t *)&cmd_set_bonding_primary,
+		(cmdline_parse_inst_t *)&cmd_add_bonding_slave,
+		(cmdline_parse_inst_t *)&cmd_remove_bonding_slave,
+		(cmdline_parse_inst_t *)&cmd_create_bonded_device,
+		(cmdline_parse_inst_t *)&cmd_set_bond_mac_addr,
+		(cmdline_parse_inst_t *)&cmd_set_balance_xmit_policy,
+		(cmdline_parse_inst_t *)&cmd_set_bond_mon_period,
+		(cmdline_parse_inst_t *)&cmd_set_lacp_dedicated_queues,
+		(cmdline_parse_inst_t *)&cmd_set_bonding_agg_mode_policy,
+		NULL
+	},
+	.help = {
+		"set bonding mode (value) (port_id)\n"
+		"	Set the bonding mode on a bonded device.\n",
+
+		"show bonding config (port_id)\n"
+		"	Show the bonding config for port_id.\n",
+
+		"show bonding lacp info (port_id)\n"
+		"	Show the bonding lacp information for port_id.\n",
+
+		"set bonding primary (slave_id) (port_id)\n"
+		"	Set the primary slave for a bonded device.\n",
+
+		"add bonding slave (slave_id) (port_id)\n"
+		"	Add a slave device to a bonded device.\n",
+
+		"remove bonding slave (slave_id) (port_id)\n"
+		"	Remove a slave device from a bonded device.\n",
+
+		"create bonded device (mode) (socket)\n"
+		"	Create a new bonded device with specific bonding mode and socket.\n",
+
+		"set bonding mac_addr (port_id) (address)\n"
+		"	Set the MAC address of a bonded device.\n",
+
+		"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
+		"	Set the transmit balance policy for bonded device running in balance mode.\n",
+
+		"set bonding mon_period (port_id) (value)\n"
+		"	Set the bonding link status monitoring polling period in ms.\n",
+
+		"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
+		"	Enable/disable dedicated queues for LACP control traffic.\n",
+
+		"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)\n"
+		"	Set Aggregation mode for IEEE802.3AD (mode 4)\n",
+
+		NULL
+	},
+};
+
+RTE_INIT(bonding_testpmd)
+{
+	testpmd_add_commands(&driver_parser);
+}
-- 
2.23.0


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

* [RFC PATCH 3/4] net/i40e: move testpmd commands
  2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
  2022-05-13  7:57 ` [RFC PATCH 1/4] app/testpmd: register driver specific commands David Marchand
  2022-05-13  7:57 ` [RFC PATCH 2/4] net/bonding: move testpmd commands David Marchand
@ 2022-05-13  7:57 ` David Marchand
  2022-05-13  7:57 ` [RFC PATCH 4/4] net/ixgbe: " David Marchand
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
  4 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-13  7:57 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Beilei Xing

Move related specific testpmd commands into this driver directory.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c          | 665 --------------------------------
 drivers/net/i40e/i40e_testpmd.c | 655 +++++++++++++++++++++++++++++++
 drivers/net/i40e/meson.build    |   2 +
 3 files changed, 657 insertions(+), 665 deletions(-)
 create mode 100644 drivers/net/i40e/i40e_testpmd.c

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index ae4759fbfe..fee05c1a0c 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -637,21 +637,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set port (port_id) ptype_mask (ptype_mask)\n"
 			"    set packet types classification for a specific port\n\n"
 
-			"set port (port_id) queue-region region_id (value) "
-			"queue_start_index (value) queue_num (value)\n"
-			"    Set a queue region on a port\n\n"
-
-			"set port (port_id) queue-region region_id (value) "
-			"flowtype (value)\n"
-			"    Set a flowtype region index on a port\n\n"
-
-			"set port (port_id) queue-region UP (value) region_id (value)\n"
-			"    Set the mapping of User Priority to "
-			"queue region on a port\n\n"
-
-			"set port (port_id) queue-region flush (on|off)\n"
-			"    flush all queue region related configuration\n\n"
-
 			"show port meter cap (port_id)\n"
 			"    Show port meter capability information\n\n"
 
@@ -702,9 +687,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set port meter stats mask (port_id) (mtr_id) (stats_mask)\n"
 			"    meter update stats\n\n"
 
-			"show port (port_id) queue-region\n"
-			"    show all queue region related configuration info\n\n"
-
 			"set port (port_id) fec_mode auto|off|rs|baser\n"
 			"    set fec mode for a specific port\n\n"
 
@@ -912,13 +894,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"filters:\n"
 			"--------\n\n"
 
-#ifdef RTE_NET_I40E
-			"flow_director_filter (port_id) mode raw (add|del|update)"
-			" flow (flow_id) (drop|fwd) queue (queue_id)"
-			" fd_id (fd_id_value) packet (packet file name)\n"
-			"    Add/Del a raw type flow director filter.\n\n"
-#endif
-
 			"flow_director_mask (port_id) mode IP vlan (vlan_value)"
 			" src_mask (ipv4_src) (ipv6_src) (src_port)"
 			" dst_mask (ipv4_dst) (ipv6_dst) (dst_port)\n"
@@ -9094,450 +9069,6 @@ cmdline_parse_inst_t cmd_dump_one = {
 	},
 };
 
-/* *** queue region set *** */
-struct cmd_queue_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-	cmdline_fixed_string_t queue_start_index;
-	uint8_t  queue_id;
-	cmdline_fixed_string_t queue_num;
-	uint8_t  queue_num_value;
-};
-
-static void
-cmd_queue_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_queue_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_SET;
-	region_conf.region_id = res->region_id;
-	region_conf.queue_num = res->queue_num_value;
-	region_conf.queue_start_index = res->queue_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-cmdline_parse_token_string_t cmd_queue_region_set =
-TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-		set, "set");
-cmdline_parse_token_string_t cmd_queue_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result, port, "port");
-cmdline_parse_token_num_t cmd_queue_region_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_queue_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				 cmd, "queue-region");
-cmdline_parse_token_string_t cmd_queue_region_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				region, "region_id");
-cmdline_parse_token_num_t cmd_queue_region_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				region_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_queue_region_queue_start_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				queue_start_index, "queue_start_index");
-cmdline_parse_token_num_t cmd_queue_region_queue_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				queue_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_queue_region_queue_num =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				queue_num, "queue_num");
-cmdline_parse_token_num_t cmd_queue_region_queue_num_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				queue_num_value, RTE_UINT8);
-
-cmdline_parse_inst_t cmd_queue_region = {
-	.f = cmd_queue_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region region_id <value> "
-		"queue_start_index <value> queue_num <value>: Set a queue region",
-	.tokens = {
-		(void *)&cmd_queue_region_set,
-		(void *)&cmd_queue_region_port,
-		(void *)&cmd_queue_region_port_id,
-		(void *)&cmd_queue_region_cmd,
-		(void *)&cmd_queue_region_id,
-		(void *)&cmd_queue_region_index,
-		(void *)&cmd_queue_region_queue_start_index,
-		(void *)&cmd_queue_region_queue_id,
-		(void *)&cmd_queue_region_queue_num,
-		(void *)&cmd_queue_region_queue_num_value,
-		NULL,
-	},
-};
-
-/* *** queue region and flowtype set *** */
-struct cmd_region_flowtype_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-	cmdline_fixed_string_t flowtype;
-	uint8_t  flowtype_id;
-};
-
-static void
-cmd_region_flowtype_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_region_flowtype_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_FLOWTYPE_SET;
-	region_conf.region_id = res->region_id;
-	region_conf.hw_flowtype = res->flowtype_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-			op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "region flowtype config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-cmdline_parse_token_string_t cmd_region_flowtype_set =
-TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				set, "set");
-cmdline_parse_token_string_t cmd_region_flowtype_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				port, "port");
-cmdline_parse_token_num_t cmd_region_flowtype_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_region_flowtype_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_region_flowtype_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				region, "region_id");
-cmdline_parse_token_num_t cmd_region_flowtype_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				region_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_region_flowtype_flow_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				flowtype, "flowtype");
-cmdline_parse_token_num_t cmd_region_flowtype_flow_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				flowtype_id, RTE_UINT8);
-cmdline_parse_inst_t cmd_region_flowtype = {
-	.f = cmd_region_flowtype_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region region_id <value> "
-		"flowtype <value>: Set a flowtype region index",
-	.tokens = {
-		(void *)&cmd_region_flowtype_set,
-		(void *)&cmd_region_flowtype_port,
-		(void *)&cmd_region_flowtype_port_index,
-		(void *)&cmd_region_flowtype_cmd,
-		(void *)&cmd_region_flowtype_index,
-		(void *)&cmd_region_flowtype_id,
-		(void *)&cmd_region_flowtype_flow_index,
-		(void *)&cmd_region_flowtype_flow_id,
-		NULL,
-	},
-};
-
-/* *** User Priority (UP) to queue region (region_id) set *** */
-struct cmd_user_priority_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t user_priority;
-	uint8_t  user_priority_id;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-};
-
-static void
-cmd_user_priority_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_user_priority_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_USER_PRIORITY_SET;
-	region_conf.user_priority = res->user_priority_id;
-	region_conf.region_id = res->region_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "user_priority region config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-cmdline_parse_token_string_t cmd_user_priority_region_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				set, "set");
-cmdline_parse_token_string_t cmd_user_priority_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				port, "port");
-cmdline_parse_token_num_t cmd_user_priority_region_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_user_priority_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_user_priority_region_UP =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				user_priority, "UP");
-cmdline_parse_token_num_t cmd_user_priority_region_UP_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				user_priority_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_user_priority_region_region =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				region, "region_id");
-cmdline_parse_token_num_t cmd_user_priority_region_region_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				region_id, RTE_UINT8);
-
-cmdline_parse_inst_t cmd_user_priority_region = {
-	.f = cmd_user_priority_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region UP <value> "
-		"region_id <value>: Set the mapping of User Priority (UP) "
-		"to queue region (region_id) ",
-	.tokens = {
-		(void *)&cmd_user_priority_region_set,
-		(void *)&cmd_user_priority_region_port,
-		(void *)&cmd_user_priority_region_port_index,
-		(void *)&cmd_user_priority_region_cmd,
-		(void *)&cmd_user_priority_region_UP,
-		(void *)&cmd_user_priority_region_UP_id,
-		(void *)&cmd_user_priority_region_region,
-		(void *)&cmd_user_priority_region_region_id,
-		NULL,
-	},
-};
-
-/* *** flush all queue region related configuration *** */
-struct cmd_flush_queue_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t flush;
-	cmdline_fixed_string_t what;
-};
-
-static void
-cmd_flush_queue_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_flush_queue_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-
-	if (strcmp(res->what, "on") == 0)
-		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_ON;
-	else
-		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_OFF;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config flush error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-cmdline_parse_token_string_t cmd_flush_queue_region_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				set, "set");
-cmdline_parse_token_string_t cmd_flush_queue_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				port, "port");
-cmdline_parse_token_num_t cmd_flush_queue_region_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_flush_queue_region_result,
-				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flush_queue_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_flush_queue_region_flush =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				flush, "flush");
-cmdline_parse_token_string_t cmd_flush_queue_region_what =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				what, "on#off");
-
-cmdline_parse_inst_t cmd_flush_queue_region = {
-	.f = cmd_flush_queue_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region flush on|off"
-		": flush all queue region related configuration",
-	.tokens = {
-		(void *)&cmd_flush_queue_region_set,
-		(void *)&cmd_flush_queue_region_port,
-		(void *)&cmd_flush_queue_region_port_index,
-		(void *)&cmd_flush_queue_region_cmd,
-		(void *)&cmd_flush_queue_region_flush,
-		(void *)&cmd_flush_queue_region_what,
-		NULL,
-	},
-};
-
-/* *** get all queue region related configuration info *** */
-struct cmd_show_queue_region_info {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-};
-
-static void
-cmd_show_queue_region_info_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_show_queue_region_info *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_regions rte_pmd_regions;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&rte_pmd_regions, 0, sizeof(rte_pmd_regions));
-
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_INFO_GET;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-					op_type, &rte_pmd_regions);
-
-	port_queue_region_info_display(res->port_id, &rte_pmd_regions);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config info show error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-cmdline_parse_token_string_t cmd_show_queue_region_info_get =
-TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				show, "show");
-cmdline_parse_token_string_t cmd_show_queue_region_info_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				port, "port");
-cmdline_parse_token_num_t cmd_show_queue_region_info_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_show_queue_region_info,
-				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_queue_region_info_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				cmd, "queue-region");
-
-cmdline_parse_inst_t cmd_show_queue_region_info_all = {
-	.f = cmd_show_queue_region_info_parsed,
-	.data = NULL,
-	.help_str = "show port <port_id> queue-region"
-		": show all queue region related configuration info",
-	.tokens = {
-		(void *)&cmd_show_queue_region_info_get,
-		(void *)&cmd_show_queue_region_info_port,
-		(void *)&cmd_show_queue_region_info_port_index,
-		(void *)&cmd_show_queue_region_info_cmd,
-		NULL,
-	},
-};
-
 /* *** Filters Control *** */
 
 #define IPV4_ADDR_TO_UINT(ip_addr, ip) \
@@ -9562,194 +9093,6 @@ do { \
 	} \
 } while (0)
 
-#ifdef RTE_NET_I40E
-
-static uint16_t
-str2flowtype(char *string)
-{
-	uint8_t i = 0;
-	static const struct {
-		char str[32];
-		uint16_t type;
-	} flowtype_str[] = {
-		{"raw", RTE_ETH_FLOW_RAW},
-		{"ipv4", RTE_ETH_FLOW_IPV4},
-		{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
-		{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
-		{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
-		{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
-		{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
-		{"ipv6", RTE_ETH_FLOW_IPV6},
-		{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
-		{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
-		{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
-		{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
-		{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
-		{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
-		{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
-		{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
-		{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
-		{"gtpu", RTE_ETH_FLOW_GTPU},
-	};
-
-	for (i = 0; i < RTE_DIM(flowtype_str); i++) {
-		if (!strcmp(flowtype_str[i].str, string))
-			return flowtype_str[i].type;
-	}
-
-	if (isdigit(string[0]) && atoi(string) > 0 && atoi(string) < 64)
-		return (uint16_t)atoi(string);
-
-	return RTE_ETH_FLOW_UNKNOWN;
-}
-
-/* *** deal with flow director filter *** */
-struct cmd_flow_director_result {
-	cmdline_fixed_string_t flow_director_filter;
-	portid_t port_id;
-	cmdline_fixed_string_t mode;
-	cmdline_fixed_string_t mode_value;
-	cmdline_fixed_string_t ops;
-	cmdline_fixed_string_t flow;
-	cmdline_fixed_string_t flow_type;
-	cmdline_fixed_string_t drop;
-	cmdline_fixed_string_t queue;
-	uint16_t  queue_id;
-	cmdline_fixed_string_t fd_id;
-	uint32_t  fd_id_value;
-	cmdline_fixed_string_t packet;
-	char filepath[];
-};
-
-static void
-cmd_flow_director_filter_parsed(void *parsed_result,
-			  __rte_unused struct cmdline *cl,
-			  __rte_unused void *data)
-{
-	struct cmd_flow_director_result *res = parsed_result;
-	int ret = 0;
-	struct rte_pmd_i40e_flow_type_mapping
-			mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
-	struct rte_pmd_i40e_pkt_template_conf conf;
-	uint16_t flow_type = str2flowtype(res->flow_type);
-	uint16_t i, port = res->port_id;
-	uint8_t add;
-
-	memset(&conf, 0, sizeof(conf));
-
-	if (flow_type == RTE_ETH_FLOW_UNKNOWN) {
-		fprintf(stderr, "Invalid flow type specified.\n");
-		return;
-	}
-	ret = rte_pmd_i40e_flow_type_mapping_get(res->port_id,
-						 mapping);
-	if (ret)
-		return;
-	if (mapping[flow_type].pctype == 0ULL) {
-		fprintf(stderr, "Invalid flow type specified.\n");
-		return;
-	}
-	for (i = 0; i < RTE_PMD_I40E_PCTYPE_MAX; i++) {
-		if (mapping[flow_type].pctype & (1ULL << i)) {
-			conf.input.pctype = i;
-			break;
-		}
-	}
-
-	conf.input.packet = open_file(res->filepath,
-				&conf.input.length);
-	if (!conf.input.packet)
-		return;
-	if (!strcmp(res->drop, "drop"))
-		conf.action.behavior =
-			RTE_PMD_I40E_PKT_TEMPLATE_REJECT;
-	else
-		conf.action.behavior =
-			RTE_PMD_I40E_PKT_TEMPLATE_ACCEPT;
-	conf.action.report_status =
-			RTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID;
-	conf.action.rx_queue = res->queue_id;
-	conf.soft_id = res->fd_id_value;
-	add  = strcmp(res->ops, "del") ? 1 : 0;
-	ret = rte_pmd_i40e_flow_add_del_packet_template(port,
-							&conf,
-							add);
-	if (ret < 0)
-		fprintf(stderr, "flow director config error: (%s)\n",
-			strerror(-ret));
-	close_file(conf.input.packet);
-}
-
-cmdline_parse_token_string_t cmd_flow_director_filter =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 flow_director_filter, "flow_director_filter");
-cmdline_parse_token_num_t cmd_flow_director_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_ops =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 ops, "add#del#update");
-cmdline_parse_token_string_t cmd_flow_director_flow =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 flow, "flow");
-cmdline_parse_token_string_t cmd_flow_director_flow_type =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-		flow_type, NULL);
-cmdline_parse_token_string_t cmd_flow_director_drop =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 drop, "drop#fwd");
-cmdline_parse_token_string_t cmd_flow_director_queue =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 queue, "queue");
-cmdline_parse_token_num_t cmd_flow_director_queue_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      queue_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_fd_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 fd_id, "fd_id");
-cmdline_parse_token_num_t cmd_flow_director_fd_id_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      fd_id_value, RTE_UINT32);
-
-cmdline_parse_token_string_t cmd_flow_director_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 mode, "mode");
-cmdline_parse_token_string_t cmd_flow_director_mode_raw =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 mode_value, "raw");
-cmdline_parse_token_string_t cmd_flow_director_packet =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 packet, "packet");
-cmdline_parse_token_string_t cmd_flow_director_filepath =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 filepath, NULL);
-
-cmdline_parse_inst_t cmd_add_del_raw_flow_director = {
-	.f = cmd_flow_director_filter_parsed,
-	.data = NULL,
-	.help_str = "flow_director_filter ... : Add or delete a raw flow "
-		"director entry on NIC",
-	.tokens = {
-		(void *)&cmd_flow_director_filter,
-		(void *)&cmd_flow_director_port_id,
-		(void *)&cmd_flow_director_mode,
-		(void *)&cmd_flow_director_mode_raw,
-		(void *)&cmd_flow_director_ops,
-		(void *)&cmd_flow_director_flow,
-		(void *)&cmd_flow_director_flow_type,
-		(void *)&cmd_flow_director_drop,
-		(void *)&cmd_flow_director_queue,
-		(void *)&cmd_flow_director_queue_id,
-		(void *)&cmd_flow_director_fd_id,
-		(void *)&cmd_flow_director_fd_id_value,
-		(void *)&cmd_flow_director_packet,
-		(void *)&cmd_flow_director_filepath,
-		NULL,
-	},
-};
-
-#endif /* RTE_NET_I40E */
-
 /* *** deal with flow director mask *** */
 struct cmd_flow_director_mask_result {
 	cmdline_fixed_string_t flow_director_mask;
@@ -16939,9 +16282,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_cleanup_txq_mbufs,
 	(cmdline_parse_inst_t *)&cmd_dump,
 	(cmdline_parse_inst_t *)&cmd_dump_one,
-#ifdef RTE_NET_I40E
-	(cmdline_parse_inst_t *)&cmd_add_del_raw_flow_director,
-#endif
 	(cmdline_parse_inst_t *)&cmd_set_flow_director_ip_mask,
 	(cmdline_parse_inst_t *)&cmd_set_flow_director_mac_vlan_mask,
 	(cmdline_parse_inst_t *)&cmd_set_flow_director_tunnel_mask,
@@ -17023,11 +16363,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_pctype_mapping_get,
 	(cmdline_parse_inst_t *)&cmd_pctype_mapping_reset,
 	(cmdline_parse_inst_t *)&cmd_pctype_mapping_update,
-	(cmdline_parse_inst_t *)&cmd_queue_region,
-	(cmdline_parse_inst_t *)&cmd_region_flowtype,
-	(cmdline_parse_inst_t *)&cmd_user_priority_region,
-	(cmdline_parse_inst_t *)&cmd_flush_queue_region,
-	(cmdline_parse_inst_t *)&cmd_show_queue_region_info_all,
 	(cmdline_parse_inst_t *)&cmd_show_port_tm_cap,
 	(cmdline_parse_inst_t *)&cmd_show_port_tm_level_cap,
 	(cmdline_parse_inst_t *)&cmd_show_port_tm_node_cap,
diff --git a/drivers/net/i40e/i40e_testpmd.c b/drivers/net/i40e/i40e_testpmd.c
new file mode 100644
index 0000000000..09cd4ff72d
--- /dev/null
+++ b/drivers/net/i40e/i40e_testpmd.c
@@ -0,0 +1,655 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2016 Intel Corporation.
+ */
+#include <rte_pmd_i40e.h>
+
+#include <cmdline_parse_num.h>
+#include <cmdline_parse_string.h>
+
+#include "testpmd.h"
+
+/* *** queue region set *** */
+struct cmd_queue_region_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t cmd;
+	cmdline_fixed_string_t region;
+	uint8_t  region_id;
+	cmdline_fixed_string_t queue_start_index;
+	uint8_t  queue_id;
+	cmdline_fixed_string_t queue_num;
+	uint8_t  queue_num_value;
+};
+
+static void
+cmd_queue_region_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_queue_region_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_pmd_i40e_queue_region_conf region_conf;
+	enum rte_pmd_i40e_queue_region_op op_type;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	memset(&region_conf, 0, sizeof(region_conf));
+	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_SET;
+	region_conf.region_id = res->region_id;
+	region_conf.queue_num = res->queue_num_value;
+	region_conf.queue_start_index = res->queue_id;
+
+	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
+				op_type, &region_conf);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented or supported\n");
+		break;
+	default:
+		fprintf(stderr, "queue region config error: (%s)\n",
+			strerror(-ret));
+	}
+}
+
+cmdline_parse_token_string_t cmd_queue_region_set =
+TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
+		set, "set");
+cmdline_parse_token_string_t cmd_queue_region_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result, port, "port");
+cmdline_parse_token_num_t cmd_queue_region_port_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
+				port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_queue_region_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
+				 cmd, "queue-region");
+cmdline_parse_token_string_t cmd_queue_region_id =
+	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
+				region, "region_id");
+cmdline_parse_token_num_t cmd_queue_region_index =
+	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
+				region_id, RTE_UINT8);
+cmdline_parse_token_string_t cmd_queue_region_queue_start_index =
+	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
+				queue_start_index, "queue_start_index");
+cmdline_parse_token_num_t cmd_queue_region_queue_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
+				queue_id, RTE_UINT8);
+cmdline_parse_token_string_t cmd_queue_region_queue_num =
+	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
+				queue_num, "queue_num");
+cmdline_parse_token_num_t cmd_queue_region_queue_num_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
+				queue_num_value, RTE_UINT8);
+
+cmdline_parse_inst_t cmd_queue_region = {
+	.f = cmd_queue_region_parsed,
+	.data = NULL,
+	.help_str = "set port <port_id> queue-region region_id <value> "
+		"queue_start_index <value> queue_num <value>: Set a queue region",
+	.tokens = {
+		(void *)&cmd_queue_region_set,
+		(void *)&cmd_queue_region_port,
+		(void *)&cmd_queue_region_port_id,
+		(void *)&cmd_queue_region_cmd,
+		(void *)&cmd_queue_region_id,
+		(void *)&cmd_queue_region_index,
+		(void *)&cmd_queue_region_queue_start_index,
+		(void *)&cmd_queue_region_queue_id,
+		(void *)&cmd_queue_region_queue_num,
+		(void *)&cmd_queue_region_queue_num_value,
+		NULL,
+	},
+};
+
+/* *** queue region and flowtype set *** */
+struct cmd_region_flowtype_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t cmd;
+	cmdline_fixed_string_t region;
+	uint8_t  region_id;
+	cmdline_fixed_string_t flowtype;
+	uint8_t  flowtype_id;
+};
+
+static void
+cmd_region_flowtype_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_region_flowtype_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_pmd_i40e_queue_region_conf region_conf;
+	enum rte_pmd_i40e_queue_region_op op_type;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	memset(&region_conf, 0, sizeof(region_conf));
+
+	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_FLOWTYPE_SET;
+	region_conf.region_id = res->region_id;
+	region_conf.hw_flowtype = res->flowtype_id;
+
+	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
+			op_type, &region_conf);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented or supported\n");
+		break;
+	default:
+		fprintf(stderr, "region flowtype config error: (%s)\n",
+			strerror(-ret));
+	}
+}
+
+cmdline_parse_token_string_t cmd_region_flowtype_set =
+TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
+				set, "set");
+cmdline_parse_token_string_t cmd_region_flowtype_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
+				port, "port");
+cmdline_parse_token_num_t cmd_region_flowtype_port_index =
+	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
+				port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_region_flowtype_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
+				cmd, "queue-region");
+cmdline_parse_token_string_t cmd_region_flowtype_index =
+	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
+				region, "region_id");
+cmdline_parse_token_num_t cmd_region_flowtype_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
+				region_id, RTE_UINT8);
+cmdline_parse_token_string_t cmd_region_flowtype_flow_index =
+	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
+				flowtype, "flowtype");
+cmdline_parse_token_num_t cmd_region_flowtype_flow_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
+				flowtype_id, RTE_UINT8);
+cmdline_parse_inst_t cmd_region_flowtype = {
+	.f = cmd_region_flowtype_parsed,
+	.data = NULL,
+	.help_str = "set port <port_id> queue-region region_id <value> "
+		"flowtype <value>: Set a flowtype region index",
+	.tokens = {
+		(void *)&cmd_region_flowtype_set,
+		(void *)&cmd_region_flowtype_port,
+		(void *)&cmd_region_flowtype_port_index,
+		(void *)&cmd_region_flowtype_cmd,
+		(void *)&cmd_region_flowtype_index,
+		(void *)&cmd_region_flowtype_id,
+		(void *)&cmd_region_flowtype_flow_index,
+		(void *)&cmd_region_flowtype_flow_id,
+		NULL,
+	},
+};
+
+/* *** User Priority (UP) to queue region (region_id) set *** */
+struct cmd_user_priority_region_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t cmd;
+	cmdline_fixed_string_t user_priority;
+	uint8_t  user_priority_id;
+	cmdline_fixed_string_t region;
+	uint8_t  region_id;
+};
+
+static void
+cmd_user_priority_region_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_user_priority_region_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_pmd_i40e_queue_region_conf region_conf;
+	enum rte_pmd_i40e_queue_region_op op_type;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	memset(&region_conf, 0, sizeof(region_conf));
+	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_USER_PRIORITY_SET;
+	region_conf.user_priority = res->user_priority_id;
+	region_conf.region_id = res->region_id;
+
+	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
+				op_type, &region_conf);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented or supported\n");
+		break;
+	default:
+		fprintf(stderr, "user_priority region config error: (%s)\n",
+			strerror(-ret));
+	}
+}
+
+cmdline_parse_token_string_t cmd_user_priority_region_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
+				set, "set");
+cmdline_parse_token_string_t cmd_user_priority_region_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
+				port, "port");
+cmdline_parse_token_num_t cmd_user_priority_region_port_index =
+	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
+				port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_user_priority_region_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
+				cmd, "queue-region");
+cmdline_parse_token_string_t cmd_user_priority_region_UP =
+	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
+				user_priority, "UP");
+cmdline_parse_token_num_t cmd_user_priority_region_UP_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
+				user_priority_id, RTE_UINT8);
+cmdline_parse_token_string_t cmd_user_priority_region_region =
+	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
+				region, "region_id");
+cmdline_parse_token_num_t cmd_user_priority_region_region_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
+				region_id, RTE_UINT8);
+
+cmdline_parse_inst_t cmd_user_priority_region = {
+	.f = cmd_user_priority_region_parsed,
+	.data = NULL,
+	.help_str = "set port <port_id> queue-region UP <value> "
+		"region_id <value>: Set the mapping of User Priority (UP) "
+		"to queue region (region_id) ",
+	.tokens = {
+		(void *)&cmd_user_priority_region_set,
+		(void *)&cmd_user_priority_region_port,
+		(void *)&cmd_user_priority_region_port_index,
+		(void *)&cmd_user_priority_region_cmd,
+		(void *)&cmd_user_priority_region_UP,
+		(void *)&cmd_user_priority_region_UP_id,
+		(void *)&cmd_user_priority_region_region,
+		(void *)&cmd_user_priority_region_region_id,
+		NULL,
+	},
+};
+
+/* *** flush all queue region related configuration *** */
+struct cmd_flush_queue_region_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t cmd;
+	cmdline_fixed_string_t flush;
+	cmdline_fixed_string_t what;
+};
+
+static void
+cmd_flush_queue_region_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_flush_queue_region_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_pmd_i40e_queue_region_conf region_conf;
+	enum rte_pmd_i40e_queue_region_op op_type;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	memset(&region_conf, 0, sizeof(region_conf));
+
+	if (strcmp(res->what, "on") == 0)
+		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_ON;
+	else
+		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_OFF;
+
+	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
+				op_type, &region_conf);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented or supported\n");
+		break;
+	default:
+		fprintf(stderr, "queue region config flush error: (%s)\n",
+			strerror(-ret));
+	}
+}
+
+cmdline_parse_token_string_t cmd_flush_queue_region_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
+				set, "set");
+cmdline_parse_token_string_t cmd_flush_queue_region_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
+				port, "port");
+cmdline_parse_token_num_t cmd_flush_queue_region_port_index =
+	TOKEN_NUM_INITIALIZER(struct cmd_flush_queue_region_result,
+				port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_flush_queue_region_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
+				cmd, "queue-region");
+cmdline_parse_token_string_t cmd_flush_queue_region_flush =
+	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
+				flush, "flush");
+cmdline_parse_token_string_t cmd_flush_queue_region_what =
+	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
+				what, "on#off");
+
+cmdline_parse_inst_t cmd_flush_queue_region = {
+	.f = cmd_flush_queue_region_parsed,
+	.data = NULL,
+	.help_str = "set port <port_id> queue-region flush on|off"
+		": flush all queue region related configuration",
+	.tokens = {
+		(void *)&cmd_flush_queue_region_set,
+		(void *)&cmd_flush_queue_region_port,
+		(void *)&cmd_flush_queue_region_port_index,
+		(void *)&cmd_flush_queue_region_cmd,
+		(void *)&cmd_flush_queue_region_flush,
+		(void *)&cmd_flush_queue_region_what,
+		NULL,
+	},
+};
+
+/* *** get all queue region related configuration info *** */
+struct cmd_show_queue_region_info {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t cmd;
+};
+
+static void
+cmd_show_queue_region_info_parsed(void *parsed_result,
+			__rte_unused struct cmdline *cl,
+			__rte_unused void *data)
+{
+	struct cmd_show_queue_region_info *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_pmd_i40e_queue_regions rte_pmd_regions;
+	enum rte_pmd_i40e_queue_region_op op_type;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	memset(&rte_pmd_regions, 0, sizeof(rte_pmd_regions));
+
+	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_INFO_GET;
+
+	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
+					op_type, &rte_pmd_regions);
+
+	port_queue_region_info_display(res->port_id, &rte_pmd_regions);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented or supported\n");
+		break;
+	default:
+		fprintf(stderr, "queue region config info show error: (%s)\n",
+			strerror(-ret));
+	}
+}
+
+cmdline_parse_token_string_t cmd_show_queue_region_info_get =
+TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
+				show, "show");
+cmdline_parse_token_string_t cmd_show_queue_region_info_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
+				port, "port");
+cmdline_parse_token_num_t cmd_show_queue_region_info_port_index =
+	TOKEN_NUM_INITIALIZER(struct cmd_show_queue_region_info,
+				port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_show_queue_region_info_cmd =
+	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
+				cmd, "queue-region");
+
+cmdline_parse_inst_t cmd_show_queue_region_info_all = {
+	.f = cmd_show_queue_region_info_parsed,
+	.data = NULL,
+	.help_str = "show port <port_id> queue-region"
+		": show all queue region related configuration info",
+	.tokens = {
+		(void *)&cmd_show_queue_region_info_get,
+		(void *)&cmd_show_queue_region_info_port,
+		(void *)&cmd_show_queue_region_info_port_index,
+		(void *)&cmd_show_queue_region_info_cmd,
+		NULL,
+	},
+};
+
+static uint16_t
+str2flowtype(char *string)
+{
+	uint8_t i = 0;
+	static const struct {
+		char str[32];
+		uint16_t type;
+	} flowtype_str[] = {
+		{"raw", RTE_ETH_FLOW_RAW},
+		{"ipv4", RTE_ETH_FLOW_IPV4},
+		{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
+		{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
+		{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
+		{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
+		{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
+		{"ipv6", RTE_ETH_FLOW_IPV6},
+		{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
+		{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
+		{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
+		{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
+		{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
+		{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
+		{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
+		{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
+		{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
+		{"gtpu", RTE_ETH_FLOW_GTPU},
+	};
+
+	for (i = 0; i < RTE_DIM(flowtype_str); i++) {
+		if (!strcmp(flowtype_str[i].str, string))
+			return flowtype_str[i].type;
+	}
+
+	if (isdigit(string[0]) && atoi(string) > 0 && atoi(string) < 64)
+		return (uint16_t)atoi(string);
+
+	return RTE_ETH_FLOW_UNKNOWN;
+}
+
+/* *** deal with flow director filter *** */
+struct cmd_flow_director_result {
+	cmdline_fixed_string_t flow_director_filter;
+	portid_t port_id;
+	cmdline_fixed_string_t mode;
+	cmdline_fixed_string_t mode_value;
+	cmdline_fixed_string_t ops;
+	cmdline_fixed_string_t flow;
+	cmdline_fixed_string_t flow_type;
+	cmdline_fixed_string_t drop;
+	cmdline_fixed_string_t queue;
+	uint16_t  queue_id;
+	cmdline_fixed_string_t fd_id;
+	uint32_t  fd_id_value;
+	cmdline_fixed_string_t packet;
+	char filepath[];
+};
+
+static void
+cmd_flow_director_filter_parsed(void *parsed_result,
+			  __rte_unused struct cmdline *cl,
+			  __rte_unused void *data)
+{
+	struct cmd_flow_director_result *res = parsed_result;
+	int ret = 0;
+	struct rte_pmd_i40e_flow_type_mapping
+			mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
+	struct rte_pmd_i40e_pkt_template_conf conf;
+	uint16_t flow_type = str2flowtype(res->flow_type);
+	uint16_t i, port = res->port_id;
+	uint8_t add;
+
+	memset(&conf, 0, sizeof(conf));
+
+	if (flow_type == RTE_ETH_FLOW_UNKNOWN) {
+		fprintf(stderr, "Invalid flow type specified.\n");
+		return;
+	}
+	ret = rte_pmd_i40e_flow_type_mapping_get(res->port_id,
+						 mapping);
+	if (ret)
+		return;
+	if (mapping[flow_type].pctype == 0ULL) {
+		fprintf(stderr, "Invalid flow type specified.\n");
+		return;
+	}
+	for (i = 0; i < RTE_PMD_I40E_PCTYPE_MAX; i++) {
+		if (mapping[flow_type].pctype & (1ULL << i)) {
+			conf.input.pctype = i;
+			break;
+		}
+	}
+
+	conf.input.packet = open_file(res->filepath,
+				&conf.input.length);
+	if (!conf.input.packet)
+		return;
+	if (!strcmp(res->drop, "drop"))
+		conf.action.behavior =
+			RTE_PMD_I40E_PKT_TEMPLATE_REJECT;
+	else
+		conf.action.behavior =
+			RTE_PMD_I40E_PKT_TEMPLATE_ACCEPT;
+	conf.action.report_status =
+			RTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID;
+	conf.action.rx_queue = res->queue_id;
+	conf.soft_id = res->fd_id_value;
+	add  = strcmp(res->ops, "del") ? 1 : 0;
+	ret = rte_pmd_i40e_flow_add_del_packet_template(port,
+							&conf,
+							add);
+	if (ret < 0)
+		fprintf(stderr, "flow director config error: (%s)\n",
+			strerror(-ret));
+	close_file(conf.input.packet);
+}
+
+cmdline_parse_token_string_t cmd_flow_director_filter =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 flow_director_filter, "flow_director_filter");
+cmdline_parse_token_num_t cmd_flow_director_port_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
+			      port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_flow_director_ops =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 ops, "add#del#update");
+cmdline_parse_token_string_t cmd_flow_director_flow =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 flow, "flow");
+cmdline_parse_token_string_t cmd_flow_director_flow_type =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+		flow_type, NULL);
+cmdline_parse_token_string_t cmd_flow_director_drop =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 drop, "drop#fwd");
+cmdline_parse_token_string_t cmd_flow_director_queue =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 queue, "queue");
+cmdline_parse_token_num_t cmd_flow_director_queue_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
+			      queue_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_flow_director_fd_id =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 fd_id, "fd_id");
+cmdline_parse_token_num_t cmd_flow_director_fd_id_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
+			      fd_id_value, RTE_UINT32);
+
+cmdline_parse_token_string_t cmd_flow_director_mode =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 mode, "mode");
+cmdline_parse_token_string_t cmd_flow_director_mode_raw =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 mode_value, "raw");
+cmdline_parse_token_string_t cmd_flow_director_packet =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 packet, "packet");
+cmdline_parse_token_string_t cmd_flow_director_filepath =
+	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
+				 filepath, NULL);
+
+cmdline_parse_inst_t cmd_add_del_raw_flow_director = {
+	.f = cmd_flow_director_filter_parsed,
+	.data = NULL,
+	.help_str = "flow_director_filter ... : Add or delete a raw flow "
+		"director entry on NIC",
+	.tokens = {
+		(void *)&cmd_flow_director_filter,
+		(void *)&cmd_flow_director_port_id,
+		(void *)&cmd_flow_director_mode,
+		(void *)&cmd_flow_director_mode_raw,
+		(void *)&cmd_flow_director_ops,
+		(void *)&cmd_flow_director_flow,
+		(void *)&cmd_flow_director_flow_type,
+		(void *)&cmd_flow_director_drop,
+		(void *)&cmd_flow_director_queue,
+		(void *)&cmd_flow_director_queue_id,
+		(void *)&cmd_flow_director_fd_id,
+		(void *)&cmd_flow_director_fd_id_value,
+		(void *)&cmd_flow_director_packet,
+		(void *)&cmd_flow_director_filepath,
+		NULL,
+	},
+};
+
+static struct testpmd_cmdline_parser driver_parser = {
+	.ctx = (cmdline_parse_ctx_t[]) {
+		(cmdline_parse_inst_t *)&cmd_queue_region,
+		(cmdline_parse_inst_t *)&cmd_region_flowtype,
+		(cmdline_parse_inst_t *)&cmd_user_priority_region,
+		(cmdline_parse_inst_t *)&cmd_flush_queue_region,
+		(cmdline_parse_inst_t *)&cmd_show_queue_region_info_all,
+		(cmdline_parse_inst_t *)&cmd_add_del_raw_flow_director,
+		NULL
+	},
+	.help = {
+		"set port (port_id) queue-region region_id (value) "
+		"queue_start_index (value) queue_num (value)\n"
+		"    Set a queue region on a port\n",
+
+		"set port (port_id) queue-region region_id (value) "
+		"flowtype (value)\n"
+		"    Set a flowtype region index on a port\n",
+
+		"set port (port_id) queue-region UP (value) region_id (value)\n"
+		"    Set the mapping of User Priority to "
+		"queue region on a port\n",
+
+		"set port (port_id) queue-region flush (on|off)\n"
+		"    flush all queue region related configuration\n",
+
+		"show port (port_id) queue-region\n"
+		"    show all queue region related configuration info\n",
+
+		"flow_director_filter (port_id) mode raw (add|del|update)"
+		" flow (flow_id) (drop|fwd) queue (queue_id)"
+		" fd_id (fd_id_value) packet (packet file name)\n"
+		"    Add/Del a raw type flow director filter.\n",
+
+		NULL
+	},
+};
+
+RTE_INIT(i40e_testpmd)
+{
+	testpmd_add_commands(&driver_parser);
+}
diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index efc5f93e35..b282ec7213 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -21,6 +21,8 @@ sources = files(
         'rte_pmd_i40e.c',
 )
 
+testpmd_sources = files('i40e_testpmd.c')
+
 deps += ['hash']
 includes += include_directories('base')
 
-- 
2.23.0


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

* [RFC PATCH 4/4] net/ixgbe: move testpmd commands
  2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
                   ` (2 preceding siblings ...)
  2022-05-13  7:57 ` [RFC PATCH 3/4] net/i40e: " David Marchand
@ 2022-05-13  7:57 ` David Marchand
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
  4 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-13  7:57 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Qiming Yang, Wenjun Wu

Move related specific testpmd commands into this driver directory.
While at it, fix checkpatch warnings.

The bypass code required some special init code before starting a port.
This is removed from testpmd itself and a new (*untested*) command is
added.

Note: bypass commands were not compiled since the switch to meson.
This change reinstates them, though I am really tempted to drop them
since we had no complaint for such a long time.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c            |  977 +-----------------------
 app/test-pmd/testpmd.c            |   14 -
 app/test-pmd/testpmd.h            |    5 +-
 drivers/net/ixgbe/ixgbe_testpmd.c | 1147 +++++++++++++++++++++++++++++
 drivers/net/ixgbe/meson.build     |    2 +
 5 files changed, 1151 insertions(+), 994 deletions(-)
 create mode 100644 drivers/net/ixgbe/ixgbe_testpmd.c

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index fee05c1a0c..a5a5ef9588 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -69,8 +69,6 @@ static cmdline_parse_ctx_t *main_ctx;
 static TAILQ_HEAD(, testpmd_cmdline_parser) cmdline_parsers =
 	TAILQ_HEAD_INITIALIZER(cmdline_parsers);
 
-static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue);
-
 /* *** Help command with introduction. *** */
 struct cmd_help_brief_result {
 	cmdline_fixed_string_t help;
@@ -344,24 +342,9 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set all queues drop (port_id) (on|off)\n"
 			"    Set drop enable bit for all queues.\n\n"
 
-			"set vf split drop (port_id) (vf_id) (on|off)\n"
-			"    Set split drop enable bit for a VF from the PF.\n\n"
-
 			"set vf mac antispoof (port_id) (vf_id) (on|off).\n"
 			"    Set MAC antispoof for a VF from the PF.\n\n"
 
-			"set macsec offload (port_id) on encrypt (on|off) replay-protect (on|off)\n"
-			"    Enable MACsec offload.\n\n"
-
-			"set macsec offload (port_id) off\n"
-			"    Disable MACsec offload.\n\n"
-
-			"set macsec sc (tx|rx) (port_id) (mac) (pi)\n"
-			"    Configure MACsec secure connection (SC).\n\n"
-
-			"set macsec sa (tx|rx) (port_id) (idx) (an) (pn) (key)\n"
-			"    Configure MACsec secure association (SA).\n\n"
-
 			"set vf broadcast (port_id) (vf_id) (on|off)\n"
 			"    Set VF broadcast for a VF from the PF.\n\n"
 
@@ -392,9 +375,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set tx strict-link-priority (port_id) (tc_bitmap)\n"
 			"    Set some TCs' strict link priority mode on a physical port.\n\n"
 
-			"set tc tx min-bandwidth (port_id) (bw1, bw2, ...)\n"
-			"    Set all TCs' min bandwidth(%%) for all PF and VFs.\n\n"
-
 			"vlan set (strip|filter|qinq_strip|extend) (on|off) (port_id)\n"
 			"    Set the VLAN strip or filter or qinq strip or extend\n\n"
 
@@ -587,29 +567,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"   Flush (default) or don't flush RX streams before"
 			" forwarding. Mainly used with PCAP drivers.\n\n"
 
-			"set bypass mode (normal|bypass|isolate) (port_id)\n"
-			"   Set the bypass mode for the lowest port on bypass enabled"
-			" NIC.\n\n"
-
-			"set bypass event (timeout|os_on|os_off|power_on|power_off) "
-			"mode (normal|bypass|isolate) (port_id)\n"
-			"   Set the event required to initiate specified bypass mode for"
-			" the lowest port on a bypass enabled NIC where:\n"
-			"       timeout   = enable bypass after watchdog timeout.\n"
-			"       os_on     = enable bypass when OS/board is powered on.\n"
-			"       os_off    = enable bypass when OS/board is powered off.\n"
-			"       power_on  = enable bypass when power supply is turned on.\n"
-			"       power_off = enable bypass when power supply is turned off."
-			"\n\n"
-
-			"set bypass timeout (0|1.5|2|3|4|8|16|32)\n"
-			"   Set the bypass watchdog timeout to 'n' seconds"
-			" where 0 = instant.\n\n"
-
-			"show bypass config (port_id)\n"
-			"   Show the bypass configuration for a bypass enabled NIC"
-			" using the lowest port on the NIC.\n\n"
-
 			"set link-up port (port_id)\n"
 			"	Set link up for a port.\n\n"
 
@@ -5517,347 +5474,6 @@ cmdline_parse_inst_t cmd_set_link_check = {
 	},
 };
 
-/* *** SET NIC BYPASS MODE *** */
-struct cmd_set_bypass_mode_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bypass;
-	cmdline_fixed_string_t mode;
-	cmdline_fixed_string_t value;
-	portid_t port_id;
-};
-
-static void
-cmd_set_bypass_mode_parsed(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bypass_mode_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	int32_t rc = -EINVAL;
-
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-	uint32_t bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
-
-	if (!strcmp(res->value, "bypass"))
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_BYPASS;
-	else if (!strcmp(res->value, "isolate"))
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_ISOLATE;
-	else
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
-
-	/* Set the bypass mode for the relevant port. */
-	rc = rte_pmd_ixgbe_bypass_state_set(port_id, &bypass_mode);
-#endif
-	if (rc != 0)
-		fprintf(stderr, "\t Failed to set bypass mode for port = %d.\n",
-			port_id);
-}
-
-cmdline_parse_token_string_t cmd_setbypass_mode_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
-			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_mode_bypass =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
-			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_mode_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
-			mode, "mode");
-cmdline_parse_token_string_t cmd_setbypass_mode_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
-			value, "normal#bypass#isolate");
-cmdline_parse_token_num_t cmd_setbypass_mode_port =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_mode_result,
-				port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_set_bypass_mode = {
-	.f = cmd_set_bypass_mode_parsed,
-	.help_str = "set bypass mode normal|bypass|isolate <port_id>: "
-	            "Set the NIC bypass mode for port_id",
-	.data = NULL,
-	.tokens = {
-		(void *)&cmd_setbypass_mode_set,
-		(void *)&cmd_setbypass_mode_bypass,
-		(void *)&cmd_setbypass_mode_mode,
-		(void *)&cmd_setbypass_mode_value,
-		(void *)&cmd_setbypass_mode_port,
-		NULL,
-	},
-};
-
-/* *** SET NIC BYPASS EVENT *** */
-struct cmd_set_bypass_event_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bypass;
-	cmdline_fixed_string_t event;
-	cmdline_fixed_string_t event_value;
-	cmdline_fixed_string_t mode;
-	cmdline_fixed_string_t mode_value;
-	portid_t port_id;
-};
-
-static void
-cmd_set_bypass_event_parsed(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	int32_t rc = -EINVAL;
-	struct cmd_set_bypass_event_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-	uint32_t bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_NONE;
-	uint32_t bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
-
-	if (!strcmp(res->event_value, "timeout"))
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_TIMEOUT;
-	else if (!strcmp(res->event_value, "os_on"))
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_OS_ON;
-	else if (!strcmp(res->event_value, "os_off"))
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_OS_OFF;
-	else if (!strcmp(res->event_value, "power_on"))
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_POWER_ON;
-	else if (!strcmp(res->event_value, "power_off"))
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_POWER_OFF;
-	else
-		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_NONE;
-
-	if (!strcmp(res->mode_value, "bypass"))
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_BYPASS;
-	else if (!strcmp(res->mode_value, "isolate"))
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_ISOLATE;
-	else
-		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
-
-	/* Set the watchdog timeout. */
-	if (bypass_event == RTE_PMD_IXGBE_BYPASS_EVENT_TIMEOUT) {
-
-		rc = -EINVAL;
-		if (RTE_PMD_IXGBE_BYPASS_TMT_VALID(bypass_timeout)) {
-			rc = rte_pmd_ixgbe_bypass_wd_timeout_store(port_id,
-							   bypass_timeout);
-		}
-		if (rc != 0) {
-			fprintf(stderr,
-				"Failed to set timeout value %u for port %d, errto code: %d.\n",
-				bypass_timeout, port_id, rc);
-		}
-	}
-
-	/* Set the bypass event to transition to bypass mode. */
-	rc = rte_pmd_ixgbe_bypass_event_store(port_id, bypass_event,
-					      bypass_mode);
-#endif
-
-	if (rc != 0)
-		fprintf(stderr, "\t Failed to set bypass event for port = %d.\n",
-			port_id);
-}
-
-cmdline_parse_token_string_t cmd_setbypass_event_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_event_bypass =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_event_event =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			event, "event");
-cmdline_parse_token_string_t cmd_setbypass_event_event_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			event_value, "none#timeout#os_off#os_on#power_on#power_off");
-cmdline_parse_token_string_t cmd_setbypass_event_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			mode, "mode");
-cmdline_parse_token_string_t cmd_setbypass_event_mode_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
-			mode_value, "normal#bypass#isolate");
-cmdline_parse_token_num_t cmd_setbypass_event_port =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_event_result,
-				port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_set_bypass_event = {
-	.f = cmd_set_bypass_event_parsed,
-	.help_str = "set bypass event none|timeout|os_on|os_off|power_on|"
-		"power_off mode normal|bypass|isolate <port_id>: "
-		"Set the NIC bypass event mode for port_id",
-	.data = NULL,
-	.tokens = {
-		(void *)&cmd_setbypass_event_set,
-		(void *)&cmd_setbypass_event_bypass,
-		(void *)&cmd_setbypass_event_event,
-		(void *)&cmd_setbypass_event_event_value,
-		(void *)&cmd_setbypass_event_mode,
-		(void *)&cmd_setbypass_event_mode_value,
-		(void *)&cmd_setbypass_event_port,
-		NULL,
-	},
-};
-
-
-/* *** SET NIC BYPASS TIMEOUT *** */
-struct cmd_set_bypass_timeout_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bypass;
-	cmdline_fixed_string_t timeout;
-	cmdline_fixed_string_t value;
-};
-
-static void
-cmd_set_bypass_timeout_parsed(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	__rte_unused struct cmd_set_bypass_timeout_result *res = parsed_result;
-
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-	if (!strcmp(res->value, "1.5"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_1_5_SEC;
-	else if (!strcmp(res->value, "2"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_2_SEC;
-	else if (!strcmp(res->value, "3"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_3_SEC;
-	else if (!strcmp(res->value, "4"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_4_SEC;
-	else if (!strcmp(res->value, "8"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_8_SEC;
-	else if (!strcmp(res->value, "16"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_16_SEC;
-	else if (!strcmp(res->value, "32"))
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_32_SEC;
-	else
-		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
-#endif
-}
-
-cmdline_parse_token_string_t cmd_setbypass_timeout_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
-			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_timeout_bypass =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
-			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_timeout_timeout =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
-			timeout, "timeout");
-cmdline_parse_token_string_t cmd_setbypass_timeout_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
-			value, "0#1.5#2#3#4#8#16#32");
-
-cmdline_parse_inst_t cmd_set_bypass_timeout = {
-	.f = cmd_set_bypass_timeout_parsed,
-	.help_str = "set bypass timeout 0|1.5|2|3|4|8|16|32: "
-		"Set the NIC bypass watchdog timeout in seconds",
-	.data = NULL,
-	.tokens = {
-		(void *)&cmd_setbypass_timeout_set,
-		(void *)&cmd_setbypass_timeout_bypass,
-		(void *)&cmd_setbypass_timeout_timeout,
-		(void *)&cmd_setbypass_timeout_value,
-		NULL,
-	},
-};
-
-/* *** SHOW NIC BYPASS MODE *** */
-struct cmd_show_bypass_config_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t bypass;
-	cmdline_fixed_string_t config;
-	portid_t port_id;
-};
-
-static void
-cmd_show_bypass_config_parsed(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_show_bypass_config_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	int rc = -EINVAL;
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-	uint32_t event_mode;
-	uint32_t bypass_mode;
-	uint32_t timeout = bypass_timeout;
-	unsigned int i;
-
-	static const char * const timeouts[RTE_PMD_IXGBE_BYPASS_TMT_NUM] =
-		{"off", "1.5", "2", "3", "4", "8", "16", "32"};
-	static const char * const modes[RTE_PMD_IXGBE_BYPASS_MODE_NUM] =
-		{"UNKNOWN", "normal", "bypass", "isolate"};
-	static const char * const events[RTE_PMD_IXGBE_BYPASS_EVENT_NUM] = {
-		"NONE",
-		"OS/board on",
-		"power supply on",
-		"OS/board off",
-		"power supply off",
-		"timeout"};
-
-	/* Display the bypass mode.*/
-	if (rte_pmd_ixgbe_bypass_state_show(port_id, &bypass_mode) != 0) {
-		fprintf(stderr, "\tFailed to get bypass mode for port = %d\n",
-			port_id);
-		return;
-	}
-	else {
-		if (!RTE_PMD_IXGBE_BYPASS_MODE_VALID(bypass_mode))
-			bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NONE;
-
-		printf("\tbypass mode    = %s\n",  modes[bypass_mode]);
-	}
-
-	/* Display the bypass timeout.*/
-	if (!RTE_PMD_IXGBE_BYPASS_TMT_VALID(timeout))
-		timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
-
-	printf("\tbypass timeout = %s\n", timeouts[timeout]);
-
-	/* Display the bypass events and associated modes. */
-	for (i = RTE_PMD_IXGBE_BYPASS_EVENT_START; i < RTE_DIM(events); i++) {
-
-		if (rte_pmd_ixgbe_bypass_event_show(port_id, i, &event_mode)) {
-			fprintf(stderr,
-				"\tFailed to get bypass mode for event = %s\n",
-				events[i]);
-		} else {
-			if (!RTE_PMD_IXGBE_BYPASS_MODE_VALID(event_mode))
-				event_mode = RTE_PMD_IXGBE_BYPASS_MODE_NONE;
-
-			printf("\tbypass event: %-16s = %s\n", events[i],
-				modes[event_mode]);
-		}
-	}
-#endif
-	if (rc != 0)
-		fprintf(stderr,
-			"\tFailed to get bypass configuration for port = %d\n",
-		       port_id);
-}
-
-cmdline_parse_token_string_t cmd_showbypass_config_show =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
-			show, "show");
-cmdline_parse_token_string_t cmd_showbypass_config_bypass =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
-			bypass, "bypass");
-cmdline_parse_token_string_t cmd_showbypass_config_config =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
-			config, "config");
-cmdline_parse_token_num_t cmd_showbypass_config_port =
-	TOKEN_NUM_INITIALIZER(struct cmd_show_bypass_config_result,
-				port_id, RTE_UINT16);
-
-cmdline_parse_inst_t cmd_show_bypass_config = {
-	.f = cmd_show_bypass_config_parsed,
-	.help_str = "show bypass config <port_id>: "
-	            "Show the NIC bypass config for port_id",
-	.data = NULL,
-	.tokens = {
-		(void *)&cmd_showbypass_config_show,
-		(void *)&cmd_showbypass_config_bypass,
-		(void *)&cmd_showbypass_config_config,
-		(void *)&cmd_showbypass_config_port,
-		NULL,
-	},
-};
-
 /* *** SET FORWARDING MODE *** */
 struct cmd_set_fwd_mode_result {
 	cmdline_fixed_string_t set;
@@ -10079,100 +9695,6 @@ cmdline_parse_inst_t cmd_set_all_queues_drop_en = {
 	},
 };
 
-/* vf split drop enable configuration */
-
-/* Common result structure for vf split drop enable */
-struct cmd_vf_split_drop_en_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t split;
-	cmdline_fixed_string_t drop;
-	portid_t port_id;
-	uint16_t vf_id;
-	cmdline_fixed_string_t on_off;
-};
-
-/* Common CLI fields for vf split drop enable disable */
-cmdline_parse_token_string_t cmd_vf_split_drop_en_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 set, "set");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_split =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 split, "split");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_drop =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 drop, "drop");
-cmdline_parse_token_num_t cmd_vf_split_drop_en_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_split_drop_en_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 vf_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_split_drop_en_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_split_drop_en_result,
-		 on_off, "on#off");
-
-static void
-cmd_set_vf_split_drop_en_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_split_drop_en_result *res = parsed_result;
-	int ret = -ENOTSUP;
-	int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_IXGBE
-	ret = rte_pmd_ixgbe_set_vf_split_drop_en(res->port_id, res->vf_id,
-			is_on);
-#endif
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d or is_on %d\n",
-			res->vf_id, is_on);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "not supported on port %d\n", res->port_id);
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_set_vf_split_drop_en = {
-	.f = cmd_set_vf_split_drop_en_parsed,
-	.data = NULL,
-	.help_str = "set vf split drop <port_id> <vf_id> on|off",
-	.tokens = {
-		(void *)&cmd_vf_split_drop_en_set,
-		(void *)&cmd_vf_split_drop_en_vf,
-		(void *)&cmd_vf_split_drop_en_split,
-		(void *)&cmd_vf_split_drop_en_drop,
-		(void *)&cmd_vf_split_drop_en_port_id,
-		(void *)&cmd_vf_split_drop_en_vf_id,
-		(void *)&cmd_vf_split_drop_en_on_off,
-		NULL,
-	},
-};
-
 /* vf mac address configuration */
 
 /* Common result structure for vf mac address */
@@ -10277,431 +9799,6 @@ cmdline_parse_inst_t cmd_set_vf_mac_addr = {
 	},
 };
 
-/* MACsec configuration */
-
-/* Common result structure for MACsec offload enable */
-struct cmd_macsec_offload_on_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t macsec;
-	cmdline_fixed_string_t offload;
-	portid_t port_id;
-	cmdline_fixed_string_t on;
-	cmdline_fixed_string_t encrypt;
-	cmdline_fixed_string_t en_on_off;
-	cmdline_fixed_string_t replay_protect;
-	cmdline_fixed_string_t rp_on_off;
-};
-
-/* Common CLI fields for MACsec offload disable */
-cmdline_parse_token_string_t cmd_macsec_offload_on_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_offload_on_macsec =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_offload_on_offload =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 offload, "offload");
-cmdline_parse_token_num_t cmd_macsec_offload_on_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_macsec_offload_on_on =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 on, "on");
-cmdline_parse_token_string_t cmd_macsec_offload_on_encrypt =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 encrypt, "encrypt");
-cmdline_parse_token_string_t cmd_macsec_offload_on_en_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 en_on_off, "on#off");
-cmdline_parse_token_string_t cmd_macsec_offload_on_replay_protect =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 replay_protect, "replay-protect");
-cmdline_parse_token_string_t cmd_macsec_offload_on_rp_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_on_result,
-		 rp_on_off, "on#off");
-
-static void
-cmd_set_macsec_offload_on_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_macsec_offload_on_result *res = parsed_result;
-	int ret = -ENOTSUP;
-	portid_t port_id = res->port_id;
-	int en = (strcmp(res->en_on_off, "on") == 0) ? 1 : 0;
-	int rp = (strcmp(res->rp_on_off, "on") == 0) ? 1 : 0;
-	struct rte_eth_dev_info dev_info;
-
-	if (port_id_is_invalid(port_id, ENABLED_WARN))
-		return;
-	if (!port_is_stopped(port_id)) {
-		fprintf(stderr, "Please stop port %d first\n", port_id);
-		return;
-	}
-
-	ret = eth_dev_info_get_print_err(port_id, &dev_info);
-	if (ret != 0)
-		return;
-
-	if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MACSEC_INSERT) {
-#ifdef RTE_NET_IXGBE
-		ret = rte_pmd_ixgbe_macsec_enable(port_id, en, rp);
-#endif
-	}
-	RTE_SET_USED(en);
-	RTE_SET_USED(rp);
-
-	switch (ret) {
-	case 0:
-		ports[port_id].dev_conf.txmode.offloads |=
-						RTE_ETH_TX_OFFLOAD_MACSEC_INSERT;
-		cmd_reconfig_device_queue(port_id, 1, 1);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "not supported on port %d\n", port_id);
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_set_macsec_offload_on = {
-	.f = cmd_set_macsec_offload_on_parsed,
-	.data = NULL,
-	.help_str = "set macsec offload <port_id> on "
-		"encrypt on|off replay-protect on|off",
-	.tokens = {
-		(void *)&cmd_macsec_offload_on_set,
-		(void *)&cmd_macsec_offload_on_macsec,
-		(void *)&cmd_macsec_offload_on_offload,
-		(void *)&cmd_macsec_offload_on_port_id,
-		(void *)&cmd_macsec_offload_on_on,
-		(void *)&cmd_macsec_offload_on_encrypt,
-		(void *)&cmd_macsec_offload_on_en_on_off,
-		(void *)&cmd_macsec_offload_on_replay_protect,
-		(void *)&cmd_macsec_offload_on_rp_on_off,
-		NULL,
-	},
-};
-
-/* Common result structure for MACsec offload disable */
-struct cmd_macsec_offload_off_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t macsec;
-	cmdline_fixed_string_t offload;
-	portid_t port_id;
-	cmdline_fixed_string_t off;
-};
-
-/* Common CLI fields for MACsec offload disable */
-cmdline_parse_token_string_t cmd_macsec_offload_off_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_off_result,
-		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_offload_off_macsec =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_off_result,
-		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_offload_off_offload =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_off_result,
-		 offload, "offload");
-cmdline_parse_token_num_t cmd_macsec_offload_off_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_offload_off_result,
-		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_macsec_offload_off_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_offload_off_result,
-		 off, "off");
-
-static void
-cmd_set_macsec_offload_off_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_macsec_offload_off_result *res = parsed_result;
-	int ret = -ENOTSUP;
-	struct rte_eth_dev_info dev_info;
-	portid_t port_id = res->port_id;
-
-	if (port_id_is_invalid(port_id, ENABLED_WARN))
-		return;
-	if (!port_is_stopped(port_id)) {
-		fprintf(stderr, "Please stop port %d first\n", port_id);
-		return;
-	}
-
-	ret = eth_dev_info_get_print_err(port_id, &dev_info);
-	if (ret != 0)
-		return;
-
-	if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MACSEC_INSERT) {
-#ifdef RTE_NET_IXGBE
-		ret = rte_pmd_ixgbe_macsec_disable(port_id);
-#endif
-	}
-	switch (ret) {
-	case 0:
-		ports[port_id].dev_conf.txmode.offloads &=
-						~RTE_ETH_TX_OFFLOAD_MACSEC_INSERT;
-		cmd_reconfig_device_queue(port_id, 1, 1);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "not supported on port %d\n", port_id);
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_set_macsec_offload_off = {
-	.f = cmd_set_macsec_offload_off_parsed,
-	.data = NULL,
-	.help_str = "set macsec offload <port_id> off",
-	.tokens = {
-		(void *)&cmd_macsec_offload_off_set,
-		(void *)&cmd_macsec_offload_off_macsec,
-		(void *)&cmd_macsec_offload_off_offload,
-		(void *)&cmd_macsec_offload_off_port_id,
-		(void *)&cmd_macsec_offload_off_off,
-		NULL,
-	},
-};
-
-/* Common result structure for MACsec secure connection configure */
-struct cmd_macsec_sc_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t macsec;
-	cmdline_fixed_string_t sc;
-	cmdline_fixed_string_t tx_rx;
-	portid_t port_id;
-	struct rte_ether_addr mac;
-	uint16_t pi;
-};
-
-/* Common CLI fields for MACsec secure connection configure */
-cmdline_parse_token_string_t cmd_macsec_sc_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_sc_macsec =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_sc_sc =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 sc, "sc");
-cmdline_parse_token_string_t cmd_macsec_sc_tx_rx =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 tx_rx, "tx#rx");
-cmdline_parse_token_num_t cmd_macsec_sc_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 port_id, RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_macsec_sc_mac =
-	TOKEN_ETHERADDR_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 mac);
-cmdline_parse_token_num_t cmd_macsec_sc_pi =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sc_result,
-		 pi, RTE_UINT16);
-
-static void
-cmd_set_macsec_sc_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_macsec_sc_result *res = parsed_result;
-	int ret = -ENOTSUP;
-	int is_tx = (strcmp(res->tx_rx, "tx") == 0) ? 1 : 0;
-
-#ifdef RTE_NET_IXGBE
-	ret = is_tx ?
-		rte_pmd_ixgbe_macsec_config_txsc(res->port_id,
-				res->mac.addr_bytes) :
-		rte_pmd_ixgbe_macsec_config_rxsc(res->port_id,
-				res->mac.addr_bytes, res->pi);
-#endif
-	RTE_SET_USED(is_tx);
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "not supported on port %d\n", res->port_id);
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_set_macsec_sc = {
-	.f = cmd_set_macsec_sc_parsed,
-	.data = NULL,
-	.help_str = "set macsec sc tx|rx <port_id> <mac> <pi>",
-	.tokens = {
-		(void *)&cmd_macsec_sc_set,
-		(void *)&cmd_macsec_sc_macsec,
-		(void *)&cmd_macsec_sc_sc,
-		(void *)&cmd_macsec_sc_tx_rx,
-		(void *)&cmd_macsec_sc_port_id,
-		(void *)&cmd_macsec_sc_mac,
-		(void *)&cmd_macsec_sc_pi,
-		NULL,
-	},
-};
-
-/* Common result structure for MACsec secure connection configure */
-struct cmd_macsec_sa_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t macsec;
-	cmdline_fixed_string_t sa;
-	cmdline_fixed_string_t tx_rx;
-	portid_t port_id;
-	uint8_t idx;
-	uint8_t an;
-	uint32_t pn;
-	cmdline_fixed_string_t key;
-};
-
-/* Common CLI fields for MACsec secure connection configure */
-cmdline_parse_token_string_t cmd_macsec_sa_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_sa_macsec =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_sa_sa =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 sa, "sa");
-cmdline_parse_token_string_t cmd_macsec_sa_tx_rx =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 tx_rx, "tx#rx");
-cmdline_parse_token_num_t cmd_macsec_sa_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_macsec_sa_idx =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 idx, RTE_UINT8);
-cmdline_parse_token_num_t cmd_macsec_sa_an =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 an, RTE_UINT8);
-cmdline_parse_token_num_t cmd_macsec_sa_pn =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 pn, RTE_UINT32);
-cmdline_parse_token_string_t cmd_macsec_sa_key =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_macsec_sa_result,
-		 key, NULL);
-
-static void
-cmd_set_macsec_sa_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_macsec_sa_result *res = parsed_result;
-	int ret = -ENOTSUP;
-	int is_tx = (strcmp(res->tx_rx, "tx") == 0) ? 1 : 0;
-	uint8_t key[16] = { 0 };
-	uint8_t xdgt0;
-	uint8_t xdgt1;
-	int key_len;
-	int i;
-
-	key_len = strlen(res->key) / 2;
-	if (key_len > 16)
-		key_len = 16;
-
-	for (i = 0; i < key_len; i++) {
-		xdgt0 = parse_and_check_key_hexa_digit(res->key, (i * 2));
-		if (xdgt0 == 0xFF)
-			return;
-		xdgt1 = parse_and_check_key_hexa_digit(res->key, (i * 2) + 1);
-		if (xdgt1 == 0xFF)
-			return;
-		key[i] = (uint8_t) ((xdgt0 * 16) + xdgt1);
-	}
-
-#ifdef RTE_NET_IXGBE
-	ret = is_tx ?
-		rte_pmd_ixgbe_macsec_select_txsa(res->port_id,
-			res->idx, res->an, res->pn, key) :
-		rte_pmd_ixgbe_macsec_select_rxsa(res->port_id,
-			res->idx, res->an, res->pn, key);
-#endif
-	RTE_SET_USED(is_tx);
-	RTE_SET_USED(key);
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid idx %d or an %d\n", res->idx, res->an);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "not supported on port %d\n", res->port_id);
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_set_macsec_sa = {
-	.f = cmd_set_macsec_sa_parsed,
-	.data = NULL,
-	.help_str = "set macsec sa tx|rx <port_id> <idx> <an> <pn> <key>",
-	.tokens = {
-		(void *)&cmd_macsec_sa_set,
-		(void *)&cmd_macsec_sa_macsec,
-		(void *)&cmd_macsec_sa_sa,
-		(void *)&cmd_macsec_sa_tx_rx,
-		(void *)&cmd_macsec_sa_port_id,
-		(void *)&cmd_macsec_sa_idx,
-		(void *)&cmd_macsec_sa_an,
-		(void *)&cmd_macsec_sa_pn,
-		(void *)&cmd_macsec_sa_key,
-		NULL,
-	},
-};
-
 /* VF unicast promiscuous mode configuration */
 
 /* Common result structure for VF unicast promiscuous mode */
@@ -11294,68 +10391,6 @@ cmdline_parse_inst_t cmd_vf_tc_min_bw = {
 	},
 };
 
-static void
-cmd_tc_min_bw_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	struct rte_port *port;
-	uint8_t tc_num;
-	uint8_t bw[16];
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-	port = &ports[res->port_id];
-	/** Check if the port is not started **/
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr, "Please stop port %d first\n", res->port_id);
-		return;
-	}
-
-	ret = vf_tc_min_bw_parse_bw_list(bw, &tc_num, res->bw_list);
-	if (ret)
-		return;
-
-#ifdef RTE_NET_IXGBE
-	ret = rte_pmd_ixgbe_set_tc_bw_alloc(res->port_id, tc_num, bw);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid bandwidth\n");
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-cmdline_parse_inst_t cmd_tc_min_bw = {
-	.f = cmd_tc_min_bw_parsed,
-	.data = NULL,
-	.help_str = "set tc tx min-bandwidth <port_id> <bw1, bw2, ...>",
-	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_tc,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_min_bw,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_bw_list,
-		NULL,
-	},
-};
-
 /* TC max bandwidth setting */
 static void
 cmd_vf_tc_max_bw_parsed(
@@ -16188,10 +15223,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_allmulti_mode_all,
 	(cmdline_parse_inst_t *)&cmd_set_flush_rx,
 	(cmdline_parse_inst_t *)&cmd_set_link_check,
-	(cmdline_parse_inst_t *)&cmd_set_bypass_mode,
-	(cmdline_parse_inst_t *)&cmd_set_bypass_event,
-	(cmdline_parse_inst_t *)&cmd_set_bypass_timeout,
-	(cmdline_parse_inst_t *)&cmd_show_bypass_config,
 	(cmdline_parse_inst_t *)&cmd_vlan_offload,
 	(cmdline_parse_inst_t *)&cmd_vlan_tpid,
 	(cmdline_parse_inst_t *)&cmd_rx_vlan_filter_all,
@@ -16307,11 +15338,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_vf_vlan_insert,
 	(cmdline_parse_inst_t *)&cmd_set_tx_loopback,
 	(cmdline_parse_inst_t *)&cmd_set_all_queues_drop_en,
-	(cmdline_parse_inst_t *)&cmd_set_vf_split_drop_en,
-	(cmdline_parse_inst_t *)&cmd_set_macsec_offload_on,
-	(cmdline_parse_inst_t *)&cmd_set_macsec_offload_off,
-	(cmdline_parse_inst_t *)&cmd_set_macsec_sc,
-	(cmdline_parse_inst_t *)&cmd_set_macsec_sa,
 	(cmdline_parse_inst_t *)&cmd_set_vf_traffic,
 	(cmdline_parse_inst_t *)&cmd_set_vf_rxmode,
 	(cmdline_parse_inst_t *)&cmd_vf_rate_limit,
@@ -16325,7 +15351,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_vf_tc_min_bw,
 	(cmdline_parse_inst_t *)&cmd_vf_tc_max_bw,
 	(cmdline_parse_inst_t *)&cmd_strict_link_prio,
-	(cmdline_parse_inst_t *)&cmd_tc_min_bw,
 	(cmdline_parse_inst_t *)&cmd_set_vxlan,
 	(cmdline_parse_inst_t *)&cmd_set_vxlan_tos_ttl,
 	(cmdline_parse_inst_t *)&cmd_set_vxlan_with_vlan,
@@ -16518,7 +15543,7 @@ prompt_exit(void)
 	}
 }
 
-static void
+void
 cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue)
 {
 	if (id == (portid_t)RTE_PORT_ALL) {
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 5bda46e32b..84e7996556 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -437,16 +437,6 @@ uint32_t event_print_mask = (UINT32_C(1) << RTE_ETH_EVENT_UNKNOWN) |
  */
 int do_mlockall = 0;
 
-/*
- * NIC bypass mode configuration options.
- */
-
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-/* The NIC bypass watchdog timeout. */
-uint32_t bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
-#endif
-
-
 #ifdef RTE_LIB_LATENCYSTATS
 
 /*
@@ -3800,10 +3790,6 @@ init_port_config(void)
 		if (ret != 0)
 			return;
 
-#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
-		rte_pmd_ixgbe_bypass_init(pid);
-#endif
-
 		if (lsc_interrupt && (*port->dev_info.dev_flags & RTE_ETH_DEV_INTR_LSC))
 			port->dev_conf.intr_conf.lsc = 1;
 		if (rmv_interrupt && (*port->dev_info.dev_flags & RTE_ETH_DEV_INTR_RMV))
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 9058d21a07..48dff3b8a6 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -439,10 +439,6 @@ extern uint8_t hot_plug; /**< enable by "--hot-plug" parameter */
 extern int do_mlockall; /**< set by "--mlockall" or "--no-mlockall" parameter */
 extern uint8_t clear_ptypes; /**< disabled by set ptype cmd */
 
-#ifdef RTE_LIBRTE_IXGBE_BYPASS
-extern uint32_t bypass_timeout; /**< Store the NIC bypass watchdog timeout */
-#endif
-
 /*
  * Store specified sockets on which memory pool to be used by ports
  * is allocated.
@@ -871,6 +867,7 @@ unsigned int parse_item_list(const char *str, const char *item_name,
 			unsigned int max_items,
 			unsigned int *parsed_items, int check_unique_values);
 void launch_args_parse(int argc, char** argv);
+void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue);
 void cmdline_read_from_file(const char *filename);
 int init_cmdline(void);
 void prompt(void);
diff --git a/drivers/net/ixgbe/ixgbe_testpmd.c b/drivers/net/ixgbe/ixgbe_testpmd.c
new file mode 100644
index 0000000000..1a4ffb69be
--- /dev/null
+++ b/drivers/net/ixgbe/ixgbe_testpmd.c
@@ -0,0 +1,1147 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2016 Intel Corporation.
+ */
+
+#define RTE_LIBRTE_IXGBE_BYPASS
+
+#include <ethdev_driver.h>
+#include "ixgbe_ethdev.h"
+#include "rte_pmd_ixgbe.h"
+
+#include <cmdline_parse_etheraddr.h>
+#include <cmdline_parse_num.h>
+#include <cmdline_parse_string.h>
+
+#include "testpmd.h"
+
+static uint8_t
+hexa_digit_to_value(char hexa_digit)
+{
+	if ((hexa_digit >= '0') && (hexa_digit <= '9'))
+		return (uint8_t)(hexa_digit - '0');
+	if ((hexa_digit >= 'a') && (hexa_digit <= 'f'))
+		return (uint8_t)((hexa_digit - 'a') + 10);
+	if ((hexa_digit >= 'A') && (hexa_digit <= 'F'))
+		return (uint8_t)((hexa_digit - 'A') + 10);
+	/* Invalid hexa digit */
+	return 0xFF;
+}
+
+static uint8_t
+parse_and_check_key_hexa_digit(char *key, int idx)
+{
+	uint8_t hexa_v;
+
+	hexa_v = hexa_digit_to_value(key[idx]);
+	if (hexa_v == 0xFF)
+		fprintf(stderr,
+			"invalid key: character %c at position %d is not a valid hexa digit\n",
+			key[idx], idx);
+	return hexa_v;
+}
+
+static int
+vf_tc_min_bw_parse_bw_list(uint8_t *bw_list,
+			   uint8_t *tc_num,
+			   char *str)
+{
+	uint32_t size;
+	const char *p, *p0 = str;
+	char s[256];
+	char *end;
+	char *str_fld[16];
+	uint16_t i;
+	int ret;
+
+	p = strchr(p0, '(');
+	if (p == NULL) {
+		fprintf(stderr,
+			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
+		return -1;
+	}
+	p++;
+	p0 = strchr(p, ')');
+	if (p0 == NULL) {
+		fprintf(stderr,
+			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
+		return -1;
+	}
+	size = p0 - p;
+	if (size >= sizeof(s)) {
+		fprintf(stderr,
+			"The string size exceeds the internal buffer size\n");
+		return -1;
+	}
+	snprintf(s, sizeof(s), "%.*s", size, p);
+	ret = rte_strsplit(s, sizeof(s), str_fld, 16, ',');
+	if (ret <= 0) {
+		fprintf(stderr, "Failed to get the bandwidth list.\n");
+		return -1;
+	}
+	*tc_num = ret;
+	for (i = 0; i < ret; i++)
+		bw_list[i] = (uint8_t)strtoul(str_fld[i], &end, 0);
+
+	return 0;
+}
+
+/* The NIC bypass watchdog timeout. */
+uint32_t bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
+
+static inline bool
+check_bypass_enabled(portid_t port_id)
+{
+	struct ixgbe_adapter *adapter;
+
+	adapter = rte_eth_devices[port_id].data->dev_private;
+	if (adapter->bps.ops.bypass_rw == NULL) {
+		fprintf(stderr, "Bypass is not enabled on this port.\n");
+		return false;
+	}
+
+	return true;
+}
+
+/* Enable bypass mode */
+struct cmd_config_bypass_result {
+	cmdline_fixed_string_t port;
+	cmdline_fixed_string_t config;
+	cmdline_fixed_string_t bypass;
+	portid_t port_id;
+	cmdline_fixed_string_t value;
+};
+
+static void
+cmd_config_bypass_parsed(void *parsed_result,
+		      __rte_unused struct cmdline *cl,
+		      __rte_unused void *data)
+{
+	struct cmd_config_bypass_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+
+	if (ports[port_id].port_status == RTE_PORT_STARTED) {
+		fprintf(stderr, "Cannot change bypass configuration while port is started, please stop it and retry\n");
+		return;
+	}
+
+	if (strcmp(res->value, "on") == 0)
+		rte_pmd_ixgbe_bypass_init(port_id);
+}
+
+static cmdline_parse_token_string_t cmd_config_bypass_port =
+	TOKEN_STRING_INITIALIZER(struct cmd_config_bypass_result, port, "port");
+static cmdline_parse_token_string_t cmd_config_bypass_config =
+	TOKEN_STRING_INITIALIZER(struct cmd_config_bypass_result, config, "config");
+static cmdline_parse_token_string_t cmd_config_bypass_bypass =
+	TOKEN_STRING_INITIALIZER(struct cmd_config_bypass_result, bypass, "bypass");
+static cmdline_parse_token_num_t cmd_config_bypass_port_id =
+	TOKEN_NUM_INITIALIZER(struct cmd_config_bypass_result, port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_config_bypass_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_config_bypass_result, value, "on#off");
+
+static cmdline_parse_inst_t cmd_config_bypass = {
+	.f = cmd_config_bypass_parsed,
+	.data = NULL,
+	.help_str = "port config bypass <port_id> on|off",
+	.tokens = {
+		(void *)&cmd_config_bypass_port,
+		(void *)&cmd_config_bypass_config,
+		(void *)&cmd_config_bypass_bypass,
+		(void *)&cmd_config_bypass_port_id,
+		(void *)&cmd_config_bypass_value,
+		NULL,
+	},
+};
+
+/* *** SET NIC BYPASS MODE *** */
+struct cmd_set_bypass_mode_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bypass;
+	cmdline_fixed_string_t mode;
+	cmdline_fixed_string_t value;
+	portid_t port_id;
+};
+
+static void
+cmd_set_bypass_mode_parsed(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bypass_mode_result *res = parsed_result;
+	uint32_t bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
+	portid_t port_id = res->port_id;
+	int32_t rc = -EINVAL;
+
+	if (!check_bypass_enabled(port_id))
+		return;
+
+	if (!strcmp(res->value, "bypass"))
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_BYPASS;
+	else if (!strcmp(res->value, "isolate"))
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_ISOLATE;
+	else
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
+
+	/* Set the bypass mode for the relevant port. */
+	rc = rte_pmd_ixgbe_bypass_state_set(port_id, &bypass_mode);
+	if (rc != 0)
+		fprintf(stderr, "\t Failed to set bypass mode for port = %d.\n",
+			port_id);
+}
+
+static cmdline_parse_token_string_t cmd_setbypass_mode_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
+			set, "set");
+static cmdline_parse_token_string_t cmd_setbypass_mode_bypass =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
+			bypass, "bypass");
+static cmdline_parse_token_string_t cmd_setbypass_mode_mode =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
+			mode, "mode");
+static cmdline_parse_token_string_t cmd_setbypass_mode_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
+			value, "normal#bypass#isolate");
+static cmdline_parse_token_num_t cmd_setbypass_mode_port =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_mode_result,
+				port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_set_bypass_mode = {
+	.f = cmd_set_bypass_mode_parsed,
+	.help_str = "set bypass mode normal|bypass|isolate <port_id>: "
+		"Set the NIC bypass mode for port_id",
+	.data = NULL,
+	.tokens = {
+		(void *)&cmd_setbypass_mode_set,
+		(void *)&cmd_setbypass_mode_bypass,
+		(void *)&cmd_setbypass_mode_mode,
+		(void *)&cmd_setbypass_mode_value,
+		(void *)&cmd_setbypass_mode_port,
+		NULL,
+	},
+};
+
+/* *** SET NIC BYPASS EVENT *** */
+struct cmd_set_bypass_event_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bypass;
+	cmdline_fixed_string_t event;
+	cmdline_fixed_string_t event_value;
+	cmdline_fixed_string_t mode;
+	cmdline_fixed_string_t mode_value;
+	portid_t port_id;
+};
+
+static void
+cmd_set_bypass_event_parsed(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	int32_t rc = -EINVAL;
+	struct cmd_set_bypass_event_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	uint32_t bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_NONE;
+	uint32_t bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
+
+	if (!check_bypass_enabled(port_id))
+		return;
+
+	if (!strcmp(res->event_value, "timeout"))
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_TIMEOUT;
+	else if (!strcmp(res->event_value, "os_on"))
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_OS_ON;
+	else if (!strcmp(res->event_value, "os_off"))
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_OS_OFF;
+	else if (!strcmp(res->event_value, "power_on"))
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_POWER_ON;
+	else if (!strcmp(res->event_value, "power_off"))
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_POWER_OFF;
+	else
+		bypass_event = RTE_PMD_IXGBE_BYPASS_EVENT_NONE;
+
+	if (!strcmp(res->mode_value, "bypass"))
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_BYPASS;
+	else if (!strcmp(res->mode_value, "isolate"))
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_ISOLATE;
+	else
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NORMAL;
+
+	/* Set the watchdog timeout. */
+	if (bypass_event == RTE_PMD_IXGBE_BYPASS_EVENT_TIMEOUT) {
+		rc = -EINVAL;
+		if (RTE_PMD_IXGBE_BYPASS_TMT_VALID(bypass_timeout)) {
+			rc = rte_pmd_ixgbe_bypass_wd_timeout_store(port_id,
+							   bypass_timeout);
+		}
+		if (rc != 0) {
+			fprintf(stderr,
+				"Failed to set timeout value %u for port %d, errto code: %d.\n",
+				bypass_timeout, port_id, rc);
+		}
+	}
+
+	/* Set the bypass event to transition to bypass mode. */
+	rc = rte_pmd_ixgbe_bypass_event_store(port_id, bypass_event,
+					      bypass_mode);
+	if (rc != 0)
+		fprintf(stderr, "\t Failed to set bypass event for port = %d.\n",
+			port_id);
+}
+
+static cmdline_parse_token_string_t cmd_setbypass_event_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			set, "set");
+static cmdline_parse_token_string_t cmd_setbypass_event_bypass =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			bypass, "bypass");
+static cmdline_parse_token_string_t cmd_setbypass_event_event =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			event, "event");
+static cmdline_parse_token_string_t cmd_setbypass_event_event_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			event_value, "none#timeout#os_off#os_on#power_on#power_off");
+static cmdline_parse_token_string_t cmd_setbypass_event_mode =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			mode, "mode");
+static cmdline_parse_token_string_t cmd_setbypass_event_mode_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
+			mode_value, "normal#bypass#isolate");
+static cmdline_parse_token_num_t cmd_setbypass_event_port =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_event_result,
+				port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_set_bypass_event = {
+	.f = cmd_set_bypass_event_parsed,
+	.help_str = "set bypass event none|timeout|os_on|os_off|power_on|"
+		"power_off mode normal|bypass|isolate <port_id>: "
+		"Set the NIC bypass event mode for port_id",
+	.data = NULL,
+	.tokens = {
+		(void *)&cmd_setbypass_event_set,
+		(void *)&cmd_setbypass_event_bypass,
+		(void *)&cmd_setbypass_event_event,
+		(void *)&cmd_setbypass_event_event_value,
+		(void *)&cmd_setbypass_event_mode,
+		(void *)&cmd_setbypass_event_mode_value,
+		(void *)&cmd_setbypass_event_port,
+		NULL,
+	},
+};
+
+
+/* *** SET NIC BYPASS TIMEOUT *** */
+struct cmd_set_bypass_timeout_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bypass;
+	cmdline_fixed_string_t timeout;
+	cmdline_fixed_string_t value;
+};
+
+static void
+cmd_set_bypass_timeout_parsed(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bypass_timeout_result *res = parsed_result;
+
+	if (!strcmp(res->value, "1.5"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_1_5_SEC;
+	else if (!strcmp(res->value, "2"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_2_SEC;
+	else if (!strcmp(res->value, "3"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_3_SEC;
+	else if (!strcmp(res->value, "4"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_4_SEC;
+	else if (!strcmp(res->value, "8"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_8_SEC;
+	else if (!strcmp(res->value, "16"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_16_SEC;
+	else if (!strcmp(res->value, "32"))
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_32_SEC;
+	else
+		bypass_timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
+}
+
+static cmdline_parse_token_string_t cmd_setbypass_timeout_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
+			set, "set");
+static cmdline_parse_token_string_t cmd_setbypass_timeout_bypass =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
+			bypass, "bypass");
+static cmdline_parse_token_string_t cmd_setbypass_timeout_timeout =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
+			timeout, "timeout");
+static cmdline_parse_token_string_t cmd_setbypass_timeout_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
+			value, "0#1.5#2#3#4#8#16#32");
+
+static cmdline_parse_inst_t cmd_set_bypass_timeout = {
+	.f = cmd_set_bypass_timeout_parsed,
+	.help_str = "set bypass timeout 0|1.5|2|3|4|8|16|32: "
+		"Set the NIC bypass watchdog timeout in seconds",
+	.data = NULL,
+	.tokens = {
+		(void *)&cmd_setbypass_timeout_set,
+		(void *)&cmd_setbypass_timeout_bypass,
+		(void *)&cmd_setbypass_timeout_timeout,
+		(void *)&cmd_setbypass_timeout_value,
+		NULL,
+	},
+};
+
+/* *** SHOW NIC BYPASS MODE *** */
+struct cmd_show_bypass_config_result {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t bypass;
+	cmdline_fixed_string_t config;
+	portid_t port_id;
+};
+
+static void
+cmd_show_bypass_config_parsed(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_show_bypass_config_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	int rc = -EINVAL;
+	uint32_t event_mode;
+	uint32_t bypass_mode;
+	uint32_t timeout = bypass_timeout;
+	unsigned int i;
+
+	static const char * const timeouts[RTE_PMD_IXGBE_BYPASS_TMT_NUM] = {
+		"off", "1.5", "2", "3", "4", "8", "16", "32"
+	};
+	static const char * const modes[RTE_PMD_IXGBE_BYPASS_MODE_NUM] = {
+		"UNKNOWN", "normal", "bypass", "isolate"
+	};
+	static const char * const events[RTE_PMD_IXGBE_BYPASS_EVENT_NUM] = {
+		"NONE",
+		"OS/board on",
+		"power supply on",
+		"OS/board off",
+		"power supply off",
+		"timeout"};
+
+	if (!check_bypass_enabled(port_id))
+		return;
+
+	/* Display the bypass mode.*/
+	if (rte_pmd_ixgbe_bypass_state_show(port_id, &bypass_mode) != 0) {
+		fprintf(stderr, "\tFailed to get bypass mode for port = %d\n",
+			port_id);
+		return;
+	}
+	if (!RTE_PMD_IXGBE_BYPASS_MODE_VALID(bypass_mode))
+		bypass_mode = RTE_PMD_IXGBE_BYPASS_MODE_NONE;
+
+	printf("\tbypass mode    = %s\n",  modes[bypass_mode]);
+
+	/* Display the bypass timeout.*/
+	if (!RTE_PMD_IXGBE_BYPASS_TMT_VALID(timeout))
+		timeout = RTE_PMD_IXGBE_BYPASS_TMT_OFF;
+
+	printf("\tbypass timeout = %s\n", timeouts[timeout]);
+
+	/* Display the bypass events and associated modes. */
+	for (i = RTE_PMD_IXGBE_BYPASS_EVENT_START; i < RTE_DIM(events); i++) {
+		if (rte_pmd_ixgbe_bypass_event_show(port_id, i, &event_mode)) {
+			fprintf(stderr,
+				"\tFailed to get bypass mode for event = %s\n",
+				events[i]);
+		} else {
+			if (!RTE_PMD_IXGBE_BYPASS_MODE_VALID(event_mode))
+				event_mode = RTE_PMD_IXGBE_BYPASS_MODE_NONE;
+
+			printf("\tbypass event: %-16s = %s\n", events[i],
+				modes[event_mode]);
+		}
+	}
+	if (rc != 0)
+		fprintf(stderr,
+			"\tFailed to get bypass configuration for port = %d\n",
+		       port_id);
+}
+
+static cmdline_parse_token_string_t cmd_showbypass_config_show =
+	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
+			show, "show");
+static cmdline_parse_token_string_t cmd_showbypass_config_bypass =
+	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
+			bypass, "bypass");
+static cmdline_parse_token_string_t cmd_showbypass_config_config =
+	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
+			config, "config");
+static cmdline_parse_token_num_t cmd_showbypass_config_port =
+	TOKEN_NUM_INITIALIZER(struct cmd_show_bypass_config_result,
+				port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_show_bypass_config = {
+	.f = cmd_show_bypass_config_parsed,
+	.help_str = "show bypass config <port_id>: "
+		"Show the NIC bypass config for port_id",
+	.data = NULL,
+	.tokens = {
+		(void *)&cmd_showbypass_config_show,
+		(void *)&cmd_showbypass_config_bypass,
+		(void *)&cmd_showbypass_config_config,
+		(void *)&cmd_showbypass_config_port,
+		NULL,
+	},
+};
+
+/* Common result structure for vf split drop enable */
+struct cmd_vf_split_drop_en_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t vf;
+	cmdline_fixed_string_t split;
+	cmdline_fixed_string_t drop;
+	portid_t port_id;
+	uint16_t vf_id;
+	cmdline_fixed_string_t on_off;
+};
+
+/* Common CLI fields for vf split drop enable disable */
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_vf =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 vf, "vf");
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_split =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 split, "split");
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_drop =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 drop, "drop");
+static cmdline_parse_token_num_t cmd_vf_split_drop_en_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_vf_split_drop_en_vf_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 vf_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_on_off =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_split_drop_en_result,
+		 on_off, "on#off");
+
+static void
+cmd_set_vf_split_drop_en_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_vf_split_drop_en_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	ret = rte_pmd_ixgbe_set_vf_split_drop_en(res->port_id, res->vf_id,
+			is_on);
+	switch (ret) {
+	case 0:
+		break;
+	case -EINVAL:
+		fprintf(stderr, "invalid vf_id %d or is_on %d\n",
+			res->vf_id, is_on);
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", res->port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "not supported on port %d\n", res->port_id);
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+static cmdline_parse_inst_t cmd_set_vf_split_drop_en = {
+	.f = cmd_set_vf_split_drop_en_parsed,
+	.data = NULL,
+	.help_str = "set vf split drop <port_id> <vf_id> on|off",
+	.tokens = {
+		(void *)&cmd_vf_split_drop_en_set,
+		(void *)&cmd_vf_split_drop_en_vf,
+		(void *)&cmd_vf_split_drop_en_split,
+		(void *)&cmd_vf_split_drop_en_drop,
+		(void *)&cmd_vf_split_drop_en_port_id,
+		(void *)&cmd_vf_split_drop_en_vf_id,
+		(void *)&cmd_vf_split_drop_en_on_off,
+		NULL,
+	},
+};
+
+/* MACsec configuration */
+
+/* Common result structure for MACsec offload enable */
+struct cmd_macsec_offload_on_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t macsec;
+	cmdline_fixed_string_t offload;
+	portid_t port_id;
+	cmdline_fixed_string_t on;
+	cmdline_fixed_string_t encrypt;
+	cmdline_fixed_string_t en_on_off;
+	cmdline_fixed_string_t replay_protect;
+	cmdline_fixed_string_t rp_on_off;
+};
+
+/* Common CLI fields for MACsec offload disable */
+static cmdline_parse_token_string_t cmd_macsec_offload_on_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_macsec =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 macsec, "macsec");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_offload =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 offload, "offload");
+static cmdline_parse_token_num_t cmd_macsec_offload_on_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_macsec_offload_on_on =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 on, "on");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_encrypt =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 encrypt, "encrypt");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_en_on_off =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 en_on_off, "on#off");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_replay_protect =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 replay_protect, "replay-protect");
+static cmdline_parse_token_string_t cmd_macsec_offload_on_rp_on_off =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_on_result,
+		 rp_on_off, "on#off");
+
+static void
+cmd_set_macsec_offload_on_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_macsec_offload_on_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	portid_t port_id = res->port_id;
+	int en = (strcmp(res->en_on_off, "on") == 0) ? 1 : 0;
+	int rp = (strcmp(res->rp_on_off, "on") == 0) ? 1 : 0;
+	struct rte_eth_dev_info dev_info;
+
+	if (port_id_is_invalid(port_id, ENABLED_WARN))
+		return;
+	if (!port_is_stopped(port_id)) {
+		fprintf(stderr, "Please stop port %d first\n", port_id);
+		return;
+	}
+
+	ret = eth_dev_info_get_print_err(port_id, &dev_info);
+	if (ret != 0)
+		return;
+
+	if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MACSEC_INSERT)
+		ret = rte_pmd_ixgbe_macsec_enable(port_id, en, rp);
+
+	switch (ret) {
+	case 0:
+		ports[port_id].dev_conf.txmode.offloads |=
+						RTE_ETH_TX_OFFLOAD_MACSEC_INSERT;
+		cmd_reconfig_device_queue(port_id, 1, 1);
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "not supported on port %d\n", port_id);
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+static cmdline_parse_inst_t cmd_set_macsec_offload_on = {
+	.f = cmd_set_macsec_offload_on_parsed,
+	.data = NULL,
+	.help_str = "set macsec offload <port_id> on "
+		"encrypt on|off replay-protect on|off",
+	.tokens = {
+		(void *)&cmd_macsec_offload_on_set,
+		(void *)&cmd_macsec_offload_on_macsec,
+		(void *)&cmd_macsec_offload_on_offload,
+		(void *)&cmd_macsec_offload_on_port_id,
+		(void *)&cmd_macsec_offload_on_on,
+		(void *)&cmd_macsec_offload_on_encrypt,
+		(void *)&cmd_macsec_offload_on_en_on_off,
+		(void *)&cmd_macsec_offload_on_replay_protect,
+		(void *)&cmd_macsec_offload_on_rp_on_off,
+		NULL,
+	},
+};
+
+/* Common result structure for MACsec offload disable */
+struct cmd_macsec_offload_off_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t macsec;
+	cmdline_fixed_string_t offload;
+	portid_t port_id;
+	cmdline_fixed_string_t off;
+};
+
+/* Common CLI fields for MACsec offload disable */
+static cmdline_parse_token_string_t cmd_macsec_offload_off_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_off_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_macsec_offload_off_macsec =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_off_result,
+		 macsec, "macsec");
+static cmdline_parse_token_string_t cmd_macsec_offload_off_offload =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_off_result,
+		 offload, "offload");
+static cmdline_parse_token_num_t cmd_macsec_offload_off_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_offload_off_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_macsec_offload_off_off =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_offload_off_result,
+		 off, "off");
+
+static void
+cmd_set_macsec_offload_off_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_macsec_offload_off_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	struct rte_eth_dev_info dev_info;
+	portid_t port_id = res->port_id;
+
+	if (port_id_is_invalid(port_id, ENABLED_WARN))
+		return;
+	if (!port_is_stopped(port_id)) {
+		fprintf(stderr, "Please stop port %d first\n", port_id);
+		return;
+	}
+
+	ret = eth_dev_info_get_print_err(port_id, &dev_info);
+	if (ret != 0)
+		return;
+
+	if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MACSEC_INSERT)
+		ret = rte_pmd_ixgbe_macsec_disable(port_id);
+	switch (ret) {
+	case 0:
+		ports[port_id].dev_conf.txmode.offloads &=
+						~RTE_ETH_TX_OFFLOAD_MACSEC_INSERT;
+		cmd_reconfig_device_queue(port_id, 1, 1);
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "not supported on port %d\n", port_id);
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+static cmdline_parse_inst_t cmd_set_macsec_offload_off = {
+	.f = cmd_set_macsec_offload_off_parsed,
+	.data = NULL,
+	.help_str = "set macsec offload <port_id> off",
+	.tokens = {
+		(void *)&cmd_macsec_offload_off_set,
+		(void *)&cmd_macsec_offload_off_macsec,
+		(void *)&cmd_macsec_offload_off_offload,
+		(void *)&cmd_macsec_offload_off_port_id,
+		(void *)&cmd_macsec_offload_off_off,
+		NULL,
+	},
+};
+
+/* Common result structure for MACsec secure connection configure */
+struct cmd_macsec_sc_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t macsec;
+	cmdline_fixed_string_t sc;
+	cmdline_fixed_string_t tx_rx;
+	portid_t port_id;
+	struct rte_ether_addr mac;
+	uint16_t pi;
+};
+
+/* Common CLI fields for MACsec secure connection configure */
+static cmdline_parse_token_string_t cmd_macsec_sc_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_macsec_sc_macsec =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 macsec, "macsec");
+static cmdline_parse_token_string_t cmd_macsec_sc_sc =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 sc, "sc");
+static cmdline_parse_token_string_t cmd_macsec_sc_tx_rx =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 tx_rx, "tx#rx");
+static cmdline_parse_token_num_t cmd_macsec_sc_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_etheraddr_t cmd_macsec_sc_mac =
+	TOKEN_ETHERADDR_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 mac);
+static cmdline_parse_token_num_t cmd_macsec_sc_pi =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sc_result,
+		 pi, RTE_UINT16);
+
+static void
+cmd_set_macsec_sc_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_macsec_sc_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	int is_tx = (strcmp(res->tx_rx, "tx") == 0) ? 1 : 0;
+
+	ret = is_tx ?
+		rte_pmd_ixgbe_macsec_config_txsc(res->port_id,
+				res->mac.addr_bytes) :
+		rte_pmd_ixgbe_macsec_config_rxsc(res->port_id,
+				res->mac.addr_bytes, res->pi);
+	switch (ret) {
+	case 0:
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", res->port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "not supported on port %d\n", res->port_id);
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+static cmdline_parse_inst_t cmd_set_macsec_sc = {
+	.f = cmd_set_macsec_sc_parsed,
+	.data = NULL,
+	.help_str = "set macsec sc tx|rx <port_id> <mac> <pi>",
+	.tokens = {
+		(void *)&cmd_macsec_sc_set,
+		(void *)&cmd_macsec_sc_macsec,
+		(void *)&cmd_macsec_sc_sc,
+		(void *)&cmd_macsec_sc_tx_rx,
+		(void *)&cmd_macsec_sc_port_id,
+		(void *)&cmd_macsec_sc_mac,
+		(void *)&cmd_macsec_sc_pi,
+		NULL,
+	},
+};
+
+/* Common result structure for MACsec secure connection configure */
+struct cmd_macsec_sa_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t macsec;
+	cmdline_fixed_string_t sa;
+	cmdline_fixed_string_t tx_rx;
+	portid_t port_id;
+	uint8_t idx;
+	uint8_t an;
+	uint32_t pn;
+	cmdline_fixed_string_t key;
+};
+
+/* Common CLI fields for MACsec secure connection configure */
+static cmdline_parse_token_string_t cmd_macsec_sa_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_macsec_sa_macsec =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 macsec, "macsec");
+static cmdline_parse_token_string_t cmd_macsec_sa_sa =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 sa, "sa");
+static cmdline_parse_token_string_t cmd_macsec_sa_tx_rx =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 tx_rx, "tx#rx");
+static cmdline_parse_token_num_t cmd_macsec_sa_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_macsec_sa_idx =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 idx, RTE_UINT8);
+static cmdline_parse_token_num_t cmd_macsec_sa_an =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 an, RTE_UINT8);
+static cmdline_parse_token_num_t cmd_macsec_sa_pn =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 pn, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_macsec_sa_key =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_macsec_sa_result,
+		 key, NULL);
+
+static void
+cmd_set_macsec_sa_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_macsec_sa_result *res = parsed_result;
+	int ret = -ENOTSUP;
+	int is_tx = (strcmp(res->tx_rx, "tx") == 0) ? 1 : 0;
+	uint8_t key[16] = { 0 };
+	uint8_t xdgt0;
+	uint8_t xdgt1;
+	int key_len;
+	int i;
+
+	key_len = strlen(res->key) / 2;
+	if (key_len > 16)
+		key_len = 16;
+
+	for (i = 0; i < key_len; i++) {
+		xdgt0 = parse_and_check_key_hexa_digit(res->key, (i * 2));
+		if (xdgt0 == 0xFF)
+			return;
+		xdgt1 = parse_and_check_key_hexa_digit(res->key, (i * 2) + 1);
+		if (xdgt1 == 0xFF)
+			return;
+		key[i] = (uint8_t)((xdgt0 * 16) + xdgt1);
+	}
+
+	ret = is_tx ?
+		rte_pmd_ixgbe_macsec_select_txsa(res->port_id,
+			res->idx, res->an, res->pn, key) :
+		rte_pmd_ixgbe_macsec_select_rxsa(res->port_id,
+			res->idx, res->an, res->pn, key);
+
+	switch (ret) {
+	case 0:
+		break;
+	case -EINVAL:
+		fprintf(stderr, "invalid idx %d or an %d\n", res->idx, res->an);
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", res->port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "not supported on port %d\n", res->port_id);
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+struct cmd_vf_tc_bw_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t tc;
+	cmdline_fixed_string_t tx;
+	cmdline_fixed_string_t min_bw;
+	portid_t port_id;
+	cmdline_fixed_string_t bw_list;
+};
+
+static cmdline_parse_token_string_t cmd_vf_tc_bw_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 set, "set");
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tc =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 tc, "tc");
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tx =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 tx, "tx");
+static cmdline_parse_token_string_t cmd_vf_tc_bw_min_bw =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 min_bw, "min-bandwidth");
+static cmdline_parse_token_num_t cmd_vf_tc_bw_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_vf_tc_bw_bw_list =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 bw_list, NULL);
+
+static cmdline_parse_inst_t cmd_set_macsec_sa = {
+	.f = cmd_set_macsec_sa_parsed,
+	.data = NULL,
+	.help_str = "set macsec sa tx|rx <port_id> <idx> <an> <pn> <key>",
+	.tokens = {
+		(void *)&cmd_macsec_sa_set,
+		(void *)&cmd_macsec_sa_macsec,
+		(void *)&cmd_macsec_sa_sa,
+		(void *)&cmd_macsec_sa_tx_rx,
+		(void *)&cmd_macsec_sa_port_id,
+		(void *)&cmd_macsec_sa_idx,
+		(void *)&cmd_macsec_sa_an,
+		(void *)&cmd_macsec_sa_pn,
+		(void *)&cmd_macsec_sa_key,
+		NULL,
+	},
+};
+
+static void
+cmd_tc_min_bw_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_vf_tc_bw_result *res = parsed_result;
+	struct rte_port *port;
+	uint8_t tc_num;
+	uint8_t bw[16];
+	int ret = -ENOTSUP;
+
+	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+		return;
+
+	port = &ports[res->port_id];
+	/** Check if the port is not started **/
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr, "Please stop port %d first\n", res->port_id);
+		return;
+	}
+
+	ret = vf_tc_min_bw_parse_bw_list(bw, &tc_num, res->bw_list);
+	if (ret)
+		return;
+
+	ret = rte_pmd_ixgbe_set_tc_bw_alloc(res->port_id, tc_num, bw);
+
+	switch (ret) {
+	case 0:
+		break;
+	case -EINVAL:
+		fprintf(stderr, "invalid bandwidth\n");
+		break;
+	case -ENODEV:
+		fprintf(stderr, "invalid port_id %d\n", res->port_id);
+		break;
+	case -ENOTSUP:
+		fprintf(stderr, "function not implemented\n");
+		break;
+	default:
+		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	}
+}
+
+static cmdline_parse_inst_t cmd_tc_min_bw = {
+	.f = cmd_tc_min_bw_parsed,
+	.data = NULL,
+	.help_str = "set tc tx min-bandwidth <port_id> <bw1, bw2, ...>",
+	.tokens = {
+		(void *)&cmd_vf_tc_bw_set,
+		(void *)&cmd_vf_tc_bw_tc,
+		(void *)&cmd_vf_tc_bw_tx,
+		(void *)&cmd_vf_tc_bw_min_bw,
+		(void *)&cmd_vf_tc_bw_port_id,
+		(void *)&cmd_vf_tc_bw_bw_list,
+		NULL,
+	},
+};
+
+static struct testpmd_cmdline_parser driver_parser = {
+	.ctx = (cmdline_parse_ctx_t[]) {
+		(cmdline_parse_inst_t *)&cmd_config_bypass,
+		(cmdline_parse_inst_t *)&cmd_set_bypass_mode,
+		(cmdline_parse_inst_t *)&cmd_set_bypass_event,
+		(cmdline_parse_inst_t *)&cmd_set_bypass_timeout,
+		(cmdline_parse_inst_t *)&cmd_show_bypass_config,
+		(cmdline_parse_inst_t *)&cmd_set_vf_split_drop_en,
+		(cmdline_parse_inst_t *)&cmd_set_macsec_offload_on,
+		(cmdline_parse_inst_t *)&cmd_set_macsec_offload_off,
+		(cmdline_parse_inst_t *)&cmd_set_macsec_sc,
+		(cmdline_parse_inst_t *)&cmd_set_macsec_sa,
+		(cmdline_parse_inst_t *)&cmd_tc_min_bw,
+		NULL
+	},
+	.help = {
+		"port config bypass (port_id) (on|off)\n",
+		"   Enable/disable bypass before starting the port\n",
+
+		"set bypass mode (normal|bypass|isolate) (port_id)\n"
+		"   Set the bypass mode for the lowest port on bypass enabled"
+		" NIC.\n",
+
+		"set bypass event (timeout|os_on|os_off|power_on|power_off) "
+		"mode (normal|bypass|isolate) (port_id)\n"
+		"   Set the event required to initiate specified bypass mode for"
+		" the lowest port on a bypass enabled NIC where:\n"
+		"       timeout   = enable bypass after watchdog timeout.\n"
+		"       os_on     = enable bypass when OS/board is powered on.\n"
+		"       os_off    = enable bypass when OS/board is powered off.\n"
+		"       power_on  = enable bypass when power supply is turned on.\n"
+		"       power_off = enable bypass when power supply is turned off."
+		"\n",
+
+		"set bypass timeout (0|1.5|2|3|4|8|16|32)\n"
+		"   Set the bypass watchdog timeout to 'n' seconds"
+		" where 0 = instant.\n",
+
+		"show bypass config (port_id)\n"
+		"   Show the bypass configuration for a bypass enabled NIC"
+		" using the lowest port on the NIC.\n",
+
+		"set vf split drop (port_id) (vf_id) (on|off)\n"
+		"    Set split drop enable bit for a VF from the PF.\n",
+
+		"set macsec offload (port_id) on encrypt (on|off) replay-protect (on|off)\n"
+		"    Enable MACsec offload.\n",
+
+		"set macsec offload (port_id) off\n"
+		"    Disable MACsec offload.\n",
+
+		"set macsec sc (tx|rx) (port_id) (mac) (pi)\n"
+		"    Configure MACsec secure connection (SC).\n",
+
+		"set macsec sa (tx|rx) (port_id) (idx) (an) (pn) (key)\n"
+		"    Configure MACsec secure association (SA).\n",
+
+		"set tc tx min-bandwidth (port_id) (bw1, bw2, ...)\n"
+		"    Set all TCs' min bandwidth(%%) for all PF and VFs.\n",
+
+		NULL
+	},
+};
+
+RTE_INIT(ixgbe_testpmd)
+{
+	testpmd_add_commands(&driver_parser);
+}
diff --git a/drivers/net/ixgbe/meson.build b/drivers/net/ixgbe/meson.build
index 162f8d5f46..a18908ef7c 100644
--- a/drivers/net/ixgbe/meson.build
+++ b/drivers/net/ixgbe/meson.build
@@ -20,6 +20,8 @@ sources = files(
         'rte_pmd_ixgbe.c',
 )
 
+testpmd_sources = files('ixgbe_testpmd.c')
+
 deps += ['hash', 'security']
 
 if arch_subdir == 'x86'
-- 
2.23.0


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

* Re: [RFC PATCH 2/4] net/bonding: move testpmd commands
  2022-05-13  7:57 ` [RFC PATCH 2/4] net/bonding: move testpmd commands David Marchand
@ 2022-05-13 10:09   ` Min Hu (Connor)
  2022-05-18 17:24     ` David Marchand
  0 siblings, 1 reply; 18+ messages in thread
From: Min Hu (Connor) @ 2022-05-13 10:09 UTC (permalink / raw)
  To: David Marchand, dev
  Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Chas Williams

Hi, David,

  I think net/bonding offer 'API' for APP to use the bonding.
    and use the specific PMD as slave device.
  The software framwork is like:
   APP
   ethdev
   bonding PMD
   PMD
   hardware

so, I think cmdlines for testpmd should not put in net/bonding.
  Thanks.

在 2022/5/13 15:57, David Marchand 写道:
> Move related specific testpmd commands into this driver directory.
> While at it, fix checkpatch warnings.
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
>   app/test-pmd/cmdline.c                     | 1035 -------------------
>   app/test-pmd/meson.build                   |    3 -
>   drivers/net/bonding/meson.build            |    1 +
>   drivers/net/bonding/rte_eth_bond_testpmd.c | 1037 ++++++++++++++++++++
>   4 files changed, 1038 insertions(+), 1038 deletions(-)
>   create mode 100644 drivers/net/bonding/rte_eth_bond_testpmd.c
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index ed62027834..ae4759fbfe 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -47,10 +47,6 @@
>   #include <cmdline_parse_etheraddr.h>
>   #include <cmdline_socket.h>
>   #include <cmdline.h>
> -#ifdef RTE_NET_BOND
> -#include <rte_eth_bond.h>
> -#include <rte_eth_bond_8023ad.h>
> -#endif
>   #if defined RTE_BUS_DPAA && defined RTE_NET_DPAA
>   #include <rte_pmd_dpaa.h>
>   #endif
> @@ -614,44 +610,6 @@ static void cmd_help_long_parsed(void *parsed_result,
>   			"   Show the bypass configuration for a bypass enabled NIC"
>   			" using the lowest port on the NIC.\n\n"
>   
> -#ifdef RTE_NET_BOND
> -			"create bonded device (mode) (socket)\n"
> -			"	Create a new bonded device with specific bonding mode and socket.\n\n"
> -
> -			"add bonding slave (slave_id) (port_id)\n"
> -			"	Add a slave device to a bonded device.\n\n"
> -
> -			"remove bonding slave (slave_id) (port_id)\n"
> -			"	Remove a slave device from a bonded device.\n\n"
> -
> -			"set bonding mode (value) (port_id)\n"
> -			"	Set the bonding mode on a bonded device.\n\n"
> -
> -			"set bonding primary (slave_id) (port_id)\n"
> -			"	Set the primary slave for a bonded device.\n\n"
> -
> -			"show bonding config (port_id)\n"
> -			"	Show the bonding config for port_id.\n\n"
> -
> -			"show bonding lacp info (port_id)\n"
> -			"	Show the bonding lacp information for port_id.\n\n"
> -
> -			"set bonding mac_addr (port_id) (address)\n"
> -			"	Set the MAC address of a bonded device.\n\n"
> -
> -			"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)"
> -			"	Set Aggregation mode for IEEE802.3AD (mode 4)"
> -
> -			"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
> -			"	Set the transmit balance policy for bonded device running in balance mode.\n\n"
> -
> -			"set bonding mon_period (port_id) (value)\n"
> -			"	Set the bonding link status monitoring polling period in ms.\n\n"
> -
> -			"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
> -			"	Enable/disable dedicated queues for LACP control traffic.\n\n"
> -
> -#endif
>   			"set link-up port (port_id)\n"
>   			"	Set link up for a port.\n\n"
>   
> @@ -5925,985 +5883,6 @@ cmdline_parse_inst_t cmd_show_bypass_config = {
>   	},
>   };
>   
> -#ifdef RTE_NET_BOND
> -/* *** SET BONDING MODE *** */
> -struct cmd_set_bonding_mode_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t mode;
> -	uint8_t value;
> -	portid_t port_id;
> -};
> -
> -static void cmd_set_bonding_mode_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bonding_mode_result *res = parsed_result;
> -	portid_t port_id = res->port_id;
> -	struct rte_port *port = &ports[port_id];
> -
> -	/*
> -	 * Bonding mode changed means resources of device changed, like whether
> -	 * started rte timer or not. Device should be restarted when resources
> -	 * of device changed.
> -	 */
> -	if (port->port_status != RTE_PORT_STOPPED) {
> -		fprintf(stderr,
> -			"\t Error: Can't set bonding mode when port %d is not stopped\n",
> -			port_id);
> -		return;
> -	}
> -
> -	/* Set the bonding mode for the relevant port. */
> -	if (0 != rte_eth_bond_mode_set(port_id, res->value))
> -		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
> -			port_id);
> -}
> -
> -cmdline_parse_token_string_t cmd_setbonding_mode_set =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> -		set, "set");
> -cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_setbonding_mode_mode =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> -		mode, "mode");
> -cmdline_parse_token_num_t cmd_setbonding_mode_value =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
> -		value, RTE_UINT8);
> -cmdline_parse_token_num_t cmd_setbonding_mode_port =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
> -		port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_set_bonding_mode = {
> -		.f = cmd_set_bonding_mode_parsed,
> -		.help_str = "set bonding mode <mode_value> <port_id>: "
> -			"Set the bonding mode for port_id",
> -		.data = NULL,
> -		.tokens = {
> -				(void *) &cmd_setbonding_mode_set,
> -				(void *) &cmd_setbonding_mode_bonding,
> -				(void *) &cmd_setbonding_mode_mode,
> -				(void *) &cmd_setbonding_mode_value,
> -				(void *) &cmd_setbonding_mode_port,
> -				NULL
> -		}
> -};
> -
> -/* *** SET BONDING SLOW_QUEUE SW/HW *** */
> -struct cmd_set_bonding_lacp_dedicated_queues_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t lacp;
> -	cmdline_fixed_string_t dedicated_queues;
> -	portid_t port_id;
> -	cmdline_fixed_string_t mode;
> -};
> -
> -static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
> -	portid_t port_id = res->port_id;
> -	struct rte_port *port;
> -
> -	port = &ports[port_id];
> -
> -	/** Check if the port is not started **/
> -	if (port->port_status != RTE_PORT_STOPPED) {
> -		fprintf(stderr, "Please stop port %d first\n", port_id);
> -		return;
> -	}
> -
> -	if (!strcmp(res->mode, "enable")) {
> -		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
> -			printf("Dedicate queues for LACP control packets"
> -					" enabled\n");
> -		else
> -			printf("Enabling dedicate queues for LACP control "
> -					"packets on port %d failed\n", port_id);
> -	} else if (!strcmp(res->mode, "disable")) {
> -		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
> -			printf("Dedicated queues for LACP control packets "
> -					"disabled\n");
> -		else
> -			printf("Disabling dedicated queues for LACP control "
> -					"traffic on port %d failed\n", port_id);
> -	}
> -}
> -
> -cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		set, "set");
> -cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		lacp, "lacp");
> -cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		dedicated_queues, "dedicated_queues");
> -cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		port_id, RTE_UINT16);
> -cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> -		mode, "enable#disable");
> -
> -cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
> -		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
> -		.help_str = "set bonding lacp dedicated_queues <port_id> "
> -			"enable|disable: "
> -			"Enable/disable dedicated queues for LACP control traffic for port_id",
> -		.data = NULL,
> -		.tokens = {
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
> -			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
> -			NULL
> -		}
> -};
> -
> -/* *** SET BALANCE XMIT POLICY *** */
> -struct cmd_set_bonding_balance_xmit_policy_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t balance_xmit_policy;
> -	portid_t port_id;
> -	cmdline_fixed_string_t policy;
> -};
> -
> -static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
> -	portid_t port_id = res->port_id;
> -	uint8_t policy;
> -
> -	if (!strcmp(res->policy, "l2")) {
> -		policy = BALANCE_XMIT_POLICY_LAYER2;
> -	} else if (!strcmp(res->policy, "l23")) {
> -		policy = BALANCE_XMIT_POLICY_LAYER23;
> -	} else if (!strcmp(res->policy, "l34")) {
> -		policy = BALANCE_XMIT_POLICY_LAYER34;
> -	} else {
> -		fprintf(stderr, "\t Invalid xmit policy selection");
> -		return;
> -	}
> -
> -	/* Set the bonding mode for the relevant port. */
> -	if (0 != rte_eth_bond_xmit_policy_set(port_id, policy)) {
> -		fprintf(stderr,
> -			"\t Failed to set bonding balance xmit policy for port = %d.\n",
> -			port_id);
> -	}
> -}
> -
> -cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> -		set, "set");
> -cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> -		balance_xmit_policy, "balance_xmit_policy");
> -cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> -		port_id, RTE_UINT16);
> -cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> -		policy, "l2#l23#l34");
> -
> -cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
> -		.f = cmd_set_bonding_balance_xmit_policy_parsed,
> -		.help_str = "set bonding balance_xmit_policy <port_id> "
> -			"l2|l23|l34: "
> -			"Set the bonding balance_xmit_policy for port_id",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_setbonding_balance_xmit_policy_set,
> -				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
> -				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
> -				(void *)&cmd_setbonding_balance_xmit_policy_port,
> -				(void *)&cmd_setbonding_balance_xmit_policy_policy,
> -				NULL
> -		}
> -};
> -
> -/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
> -struct cmd_show_bonding_lacp_info_result {
> -	cmdline_fixed_string_t show;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t lacp;
> -	cmdline_fixed_string_t info;
> -	portid_t port_id;
> -};
> -
> -static void port_param_show(struct port_params *params)
> -{
> -	char buf[RTE_ETHER_ADDR_FMT_SIZE];
> -
> -	printf("\t\tsystem priority: %u\n", params->system_priority);
> -	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
> -	printf("\t\tsystem mac address: %s\n", buf);
> -	printf("\t\tport key: %u\n", params->key);
> -	printf("\t\tport priority: %u\n", params->port_priority);
> -	printf("\t\tport number: %u\n", params->port_number);
> -}
> -
> -static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
> -{
> -	char a_state[256] = { 0 };
> -	char p_state[256] = { 0 };
> -	int a_len = 0;
> -	int p_len = 0;
> -	uint32_t i;
> -
> -	static const char * const state[] = {
> -		"ACTIVE",
> -		"TIMEOUT",
> -		"AGGREGATION",
> -		"SYNCHRONIZATION",
> -		"COLLECTING",
> -		"DISTRIBUTING",
> -		"DEFAULTED",
> -		"EXPIRED"
> -	};
> -	static const char * const selection[] = {
> -		"UNSELECTED",
> -		"STANDBY",
> -		"SELECTED"
> -	};
> -
> -	for (i = 0; i < RTE_DIM(state); i++) {
> -		if ((info->actor_state >> i) & 1)
> -			a_len += snprintf(&a_state[a_len],
> -						RTE_DIM(a_state) - a_len, "%s ",
> -						state[i]);
> -
> -		if ((info->partner_state >> i) & 1)
> -			p_len += snprintf(&p_state[p_len],
> -						RTE_DIM(p_state) - p_len, "%s ",
> -						state[i]);
> -	}
> -	printf("\tAggregator port id: %u\n", info->agg_port_id);
> -	printf("\tselection: %s\n", selection[info->selected]);
> -	printf("\tActor detail info:\n");
> -	port_param_show(&info->actor);
> -	printf("\t\tport state: %s\n", a_state);
> -	printf("\tPartner detail info:\n");
> -	port_param_show(&info->partner);
> -	printf("\t\tport state: %s\n", p_state);
> -	printf("\n");
> -}
> -
> -static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
> -{
> -	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
> -	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
> -	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
> -	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
> -	printf("\taggregate wait timeout: %u ms\n",
> -			conf->aggregate_wait_timeout_ms);
> -	printf("\ttx period: %u ms\n", conf->tx_period_ms);
> -	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
> -	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
> -	switch (conf->agg_selection) {
> -	case AGG_BANDWIDTH:
> -		printf("\taggregation mode: bandwidth\n");
> -		break;
> -	case AGG_STABLE:
> -		printf("\taggregation mode: stable\n");
> -		break;
> -	case AGG_COUNT:
> -		printf("\taggregation mode: count\n");
> -		break;
> -	default:
> -		printf("\taggregation mode: invalid\n");
> -		break;
> -	}
> -
> -	printf("\n");
> -}
> -
> -static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
> -	struct rte_eth_bond_8023ad_slave_info slave_info;
> -	struct rte_eth_bond_8023ad_conf port_conf;
> -	portid_t slaves[RTE_MAX_ETHPORTS];
> -	portid_t port_id = res->port_id;
> -	int num_active_slaves;
> -	int bonding_mode;
> -	int i;
> -	int ret;
> -
> -	bonding_mode = rte_eth_bond_mode_get(port_id);
> -	if (bonding_mode != BONDING_MODE_8023AD) {
> -		fprintf(stderr, "\tBonding mode is not mode 4\n");
> -		return;
> -	}
> -
> -	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
> -			RTE_MAX_ETHPORTS);
> -	if (num_active_slaves < 0) {
> -		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
> -				port_id);
> -		return;
> -	}
> -	if (num_active_slaves == 0)
> -		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
> -			port_id);
> -
> -	printf("\tIEEE802.3 port: %u\n", port_id);
> -	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
> -	if (ret) {
> -		fprintf(stderr, "\tGet bonded device %u info failed\n",
> -			port_id);
> -		return;
> -	}
> -	lacp_conf_show(&port_conf);
> -
> -	for (i = 0; i < num_active_slaves; i++) {
> -		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
> -				&slave_info);
> -		if (ret) {
> -			fprintf(stderr, "\tGet slave device %u info failed\n",
> -				slaves[i]);
> -			return;
> -		}
> -		printf("\tSlave Port: %u\n", slaves[i]);
> -		lacp_slave_info_show(&slave_info);
> -	}
> -}
> -
> -cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> -		show, "show");
> -cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> -		bonding, "lacp");
> -cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> -		info, "info");
> -cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
> -TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> -		port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
> -		.f = cmd_show_bonding_lacp_info_parsed,
> -		.help_str = "show bonding lacp info <port_id> : "
> -			"Show bonding IEEE802.3 information for port_id",
> -		.data = NULL,
> -		.tokens = {
> -			(void *)&cmd_show_bonding_lacp_info_show,
> -			(void *)&cmd_show_bonding_lacp_info_bonding,
> -			(void *)&cmd_show_bonding_lacp_info_lacp,
> -			(void *)&cmd_show_bonding_lacp_info_info,
> -			(void *)&cmd_show_bonding_lacp_info_port_id,
> -			NULL
> -		}
> -};
> -
> -/* *** SHOW NIC BONDING CONFIGURATION *** */
> -struct cmd_show_bonding_config_result {
> -	cmdline_fixed_string_t show;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t config;
> -	portid_t port_id;
> -};
> -
> -static void cmd_show_bonding_config_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_show_bonding_config_result *res = parsed_result;
> -	int bonding_mode, agg_mode;
> -	portid_t slaves[RTE_MAX_ETHPORTS];
> -	int num_slaves, num_active_slaves;
> -	int primary_id;
> -	int i;
> -	portid_t port_id = res->port_id;
> -
> -	/* Display the bonding mode.*/
> -	bonding_mode = rte_eth_bond_mode_get(port_id);
> -	if (bonding_mode < 0) {
> -		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
> -			port_id);
> -		return;
> -	} else
> -		printf("\tBonding mode: %d\n", bonding_mode);
> -
> -	if (bonding_mode == BONDING_MODE_BALANCE ||
> -		bonding_mode == BONDING_MODE_8023AD) {
> -		int balance_xmit_policy;
> -
> -		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
> -		if (balance_xmit_policy < 0) {
> -			fprintf(stderr,
> -				"\tFailed to get balance xmit policy for port = %d\n",
> -				port_id);
> -			return;
> -		} else {
> -			printf("\tBalance Xmit Policy: ");
> -
> -			switch (balance_xmit_policy) {
> -			case BALANCE_XMIT_POLICY_LAYER2:
> -				printf("BALANCE_XMIT_POLICY_LAYER2");
> -				break;
> -			case BALANCE_XMIT_POLICY_LAYER23:
> -				printf("BALANCE_XMIT_POLICY_LAYER23");
> -				break;
> -			case BALANCE_XMIT_POLICY_LAYER34:
> -				printf("BALANCE_XMIT_POLICY_LAYER34");
> -				break;
> -			}
> -			printf("\n");
> -		}
> -	}
> -
> -	if (bonding_mode == BONDING_MODE_8023AD) {
> -		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
> -		printf("\tIEEE802.3AD Aggregator Mode: ");
> -		switch (agg_mode) {
> -		case AGG_BANDWIDTH:
> -			printf("bandwidth");
> -			break;
> -		case AGG_STABLE:
> -			printf("stable");
> -			break;
> -		case AGG_COUNT:
> -			printf("count");
> -			break;
> -		}
> -		printf("\n");
> -	}
> -
> -	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
> -
> -	if (num_slaves < 0) {
> -		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
> -			port_id);
> -		return;
> -	}
> -	if (num_slaves > 0) {
> -		printf("\tSlaves (%d): [", num_slaves);
> -		for (i = 0; i < num_slaves - 1; i++)
> -			printf("%d ", slaves[i]);
> -
> -		printf("%d]\n", slaves[num_slaves - 1]);
> -	} else {
> -		printf("\tSlaves: []\n");
> -
> -	}
> -
> -	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
> -			RTE_MAX_ETHPORTS);
> -
> -	if (num_active_slaves < 0) {
> -		fprintf(stderr,
> -			"\tFailed to get active slave list for port = %d\n",
> -			port_id);
> -		return;
> -	}
> -	if (num_active_slaves > 0) {
> -		printf("\tActive Slaves (%d): [", num_active_slaves);
> -		for (i = 0; i < num_active_slaves - 1; i++)
> -			printf("%d ", slaves[i]);
> -
> -		printf("%d]\n", slaves[num_active_slaves - 1]);
> -
> -	} else {
> -		printf("\tActive Slaves: []\n");
> -
> -	}
> -
> -	primary_id = rte_eth_bond_primary_get(port_id);
> -	if (primary_id < 0) {
> -		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
> -			port_id);
> -		return;
> -	} else
> -		printf("\tPrimary: [%d]\n", primary_id);
> -
> -}
> -
> -cmdline_parse_token_string_t cmd_showbonding_config_show =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> -		show, "show");
> -cmdline_parse_token_string_t cmd_showbonding_config_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_showbonding_config_config =
> -TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> -		config, "config");
> -cmdline_parse_token_num_t cmd_showbonding_config_port =
> -TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
> -		port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_show_bonding_config = {
> -		.f = cmd_show_bonding_config_parsed,
> -		.help_str = "show bonding config <port_id>: "
> -			"Show the bonding config for port_id",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_showbonding_config_show,
> -				(void *)&cmd_showbonding_config_bonding,
> -				(void *)&cmd_showbonding_config_config,
> -				(void *)&cmd_showbonding_config_port,
> -				NULL
> -		}
> -};
> -
> -/* *** SET BONDING PRIMARY *** */
> -struct cmd_set_bonding_primary_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t primary;
> -	portid_t slave_id;
> -	portid_t port_id;
> -};
> -
> -static void cmd_set_bonding_primary_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bonding_primary_result *res = parsed_result;
> -	portid_t master_port_id = res->port_id;
> -	portid_t slave_port_id = res->slave_id;
> -
> -	/* Set the primary slave for a bonded device. */
> -	if (0 != rte_eth_bond_primary_set(master_port_id, slave_port_id)) {
> -		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
> -			master_port_id);
> -		return;
> -	}
> -	init_port_config();
> -}
> -
> -cmdline_parse_token_string_t cmd_setbonding_primary_set =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> -		set, "set");
> -cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_setbonding_primary_primary =
> -TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> -		primary, "primary");
> -cmdline_parse_token_num_t cmd_setbonding_primary_slave =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
> -		slave_id, RTE_UINT16);
> -cmdline_parse_token_num_t cmd_setbonding_primary_port =
> -TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
> -		port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_set_bonding_primary = {
> -		.f = cmd_set_bonding_primary_parsed,
> -		.help_str = "set bonding primary <slave_id> <port_id>: "
> -			"Set the primary slave for port_id",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_setbonding_primary_set,
> -				(void *)&cmd_setbonding_primary_bonding,
> -				(void *)&cmd_setbonding_primary_primary,
> -				(void *)&cmd_setbonding_primary_slave,
> -				(void *)&cmd_setbonding_primary_port,
> -				NULL
> -		}
> -};
> -
> -/* *** ADD SLAVE *** */
> -struct cmd_add_bonding_slave_result {
> -	cmdline_fixed_string_t add;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t slave;
> -	portid_t slave_id;
> -	portid_t port_id;
> -};
> -
> -static void cmd_add_bonding_slave_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_add_bonding_slave_result *res = parsed_result;
> -	portid_t master_port_id = res->port_id;
> -	portid_t slave_port_id = res->slave_id;
> -
> -	/* add the slave for a bonded device. */
> -	if (0 != rte_eth_bond_slave_add(master_port_id, slave_port_id)) {
> -		fprintf(stderr,
> -			"\t Failed to add slave %d to master port = %d.\n",
> -			slave_port_id, master_port_id);
> -		return;
> -	}
> -	init_port_config();
> -	set_port_slave_flag(slave_port_id);
> -}
> -
> -cmdline_parse_token_string_t cmd_addbonding_slave_add =
> -TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> -		add, "add");
> -cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
> -TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> -		bonding, "bonding");
> -cmdline_parse_token_string_t cmd_addbonding_slave_slave =
> -TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> -		slave, "slave");
> -cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
> -TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
> -		slave_id, RTE_UINT16);
> -cmdline_parse_token_num_t cmd_addbonding_slave_port =
> -TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
> -		port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_add_bonding_slave = {
> -		.f = cmd_add_bonding_slave_parsed,
> -		.help_str = "add bonding slave <slave_id> <port_id>: "
> -			"Add a slave device to a bonded device",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_addbonding_slave_add,
> -				(void *)&cmd_addbonding_slave_bonding,
> -				(void *)&cmd_addbonding_slave_slave,
> -				(void *)&cmd_addbonding_slave_slaveid,
> -				(void *)&cmd_addbonding_slave_port,
> -				NULL
> -		}
> -};
> -
> -/* *** REMOVE SLAVE *** */
> -struct cmd_remove_bonding_slave_result {
> -	cmdline_fixed_string_t remove;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t slave;
> -	portid_t slave_id;
> -	portid_t port_id;
> -};
> -
> -static void cmd_remove_bonding_slave_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_remove_bonding_slave_result *res = parsed_result;
> -	portid_t master_port_id = res->port_id;
> -	portid_t slave_port_id = res->slave_id;
> -
> -	/* remove the slave from a bonded device. */
> -	if (0 != rte_eth_bond_slave_remove(master_port_id, slave_port_id)) {
> -		fprintf(stderr,
> -			"\t Failed to remove slave %d from master port = %d.\n",
> -			slave_port_id, master_port_id);
> -		return;
> -	}
> -	init_port_config();
> -	clear_port_slave_flag(slave_port_id);
> -}
> -
> -cmdline_parse_token_string_t cmd_removebonding_slave_remove =
> -		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> -				remove, "remove");
> -cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
> -		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> -				bonding, "bonding");
> -cmdline_parse_token_string_t cmd_removebonding_slave_slave =
> -		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> -				slave, "slave");
> -cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
> -		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
> -				slave_id, RTE_UINT16);
> -cmdline_parse_token_num_t cmd_removebonding_slave_port =
> -		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
> -				port_id, RTE_UINT16);
> -
> -cmdline_parse_inst_t cmd_remove_bonding_slave = {
> -		.f = cmd_remove_bonding_slave_parsed,
> -		.help_str = "remove bonding slave <slave_id> <port_id>: "
> -			"Remove a slave device from a bonded device",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_removebonding_slave_remove,
> -				(void *)&cmd_removebonding_slave_bonding,
> -				(void *)&cmd_removebonding_slave_slave,
> -				(void *)&cmd_removebonding_slave_slaveid,
> -				(void *)&cmd_removebonding_slave_port,
> -				NULL
> -		}
> -};
> -
> -/* *** CREATE BONDED DEVICE *** */
> -struct cmd_create_bonded_device_result {
> -	cmdline_fixed_string_t create;
> -	cmdline_fixed_string_t bonded;
> -	cmdline_fixed_string_t device;
> -	uint8_t mode;
> -	uint8_t socket;
> -};
> -
> -static int bond_dev_num = 0;
> -
> -static void cmd_create_bonded_device_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_create_bonded_device_result *res = parsed_result;
> -	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
> -	int port_id;
> -	int ret;
> -
> -	if (test_done == 0) {
> -		fprintf(stderr, "Please stop forwarding first\n");
> -		return;
> -	}
> -
> -	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
> -			bond_dev_num++);
> -
> -	/* Create a new bonded device. */
> -	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
> -	if (port_id < 0) {
> -		fprintf(stderr, "\t Failed to create bonded device.\n");
> -		return;
> -	} else {
> -		printf("Created new bonded device %s on (port %d).\n", ethdev_name,
> -				port_id);
> -
> -		/* Update number of ports */
> -		nb_ports = rte_eth_dev_count_avail();
> -		reconfig(port_id, res->socket);
> -		ret = rte_eth_promiscuous_enable(port_id);
> -		if (ret != 0)
> -			fprintf(stderr,
> -				"Failed to enable promiscuous mode for port %u: %s - ignore\n",
> -				port_id, rte_strerror(-ret));
> -
> -		ports[port_id].need_setup = 0;
> -		ports[port_id].port_status = RTE_PORT_STOPPED;
> -	}
> -
> -}
> -
> -cmdline_parse_token_string_t cmd_createbonded_device_create =
> -		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> -				create, "create");
> -cmdline_parse_token_string_t cmd_createbonded_device_bonded =
> -		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> -				bonded, "bonded");
> -cmdline_parse_token_string_t cmd_createbonded_device_device =
> -		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> -				device, "device");
> -cmdline_parse_token_num_t cmd_createbonded_device_mode =
> -		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
> -				mode, RTE_UINT8);
> -cmdline_parse_token_num_t cmd_createbonded_device_socket =
> -		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
> -				socket, RTE_UINT8);
> -
> -cmdline_parse_inst_t cmd_create_bonded_device = {
> -		.f = cmd_create_bonded_device_parsed,
> -		.help_str = "create bonded device <mode> <socket>: "
> -			"Create a new bonded device with specific bonding mode and socket",
> -		.data = NULL,
> -		.tokens = {
> -				(void *)&cmd_createbonded_device_create,
> -				(void *)&cmd_createbonded_device_bonded,
> -				(void *)&cmd_createbonded_device_device,
> -				(void *)&cmd_createbonded_device_mode,
> -				(void *)&cmd_createbonded_device_socket,
> -				NULL
> -		}
> -};
> -
> -/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
> -struct cmd_set_bond_mac_addr_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t mac_addr;
> -	uint16_t port_num;
> -	struct rte_ether_addr address;
> -};
> -
> -static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bond_mac_addr_result *res = parsed_result;
> -	int ret;
> -
> -	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
> -		return;
> -
> -	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
> -
> -	/* check the return value and print it if is < 0 */
> -	if (ret < 0)
> -		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
> -			strerror(-ret));
> -}
> -
> -cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
> -cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
> -				"bonding");
> -cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
> -				"mac_addr");
> -cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
> -		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
> -				port_num, RTE_UINT16);
> -cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
> -		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
> -
> -cmdline_parse_inst_t cmd_set_bond_mac_addr = {
> -		.f = cmd_set_bond_mac_addr_parsed,
> -		.data = (void *) 0,
> -		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
> -		.tokens = {
> -				(void *)&cmd_set_bond_mac_addr_set,
> -				(void *)&cmd_set_bond_mac_addr_bonding,
> -				(void *)&cmd_set_bond_mac_addr_mac,
> -				(void *)&cmd_set_bond_mac_addr_portnum,
> -				(void *)&cmd_set_bond_mac_addr_addr,
> -				NULL
> -		}
> -};
> -
> -
> -/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
> -struct cmd_set_bond_mon_period_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t mon_period;
> -	uint16_t port_num;
> -	uint32_t period_ms;
> -};
> -
> -static void cmd_set_bond_mon_period_parsed(void *parsed_result,
> -		__rte_unused  struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bond_mon_period_result *res = parsed_result;
> -	int ret;
> -
> -	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
> -
> -	/* check the return value and print it if is < 0 */
> -	if (ret < 0)
> -		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
> -			strerror(-ret));
> -}
> -
> -cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> -				set, "set");
> -cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> -				bonding, "bonding");
> -cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
> -		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> -				mon_period,	"mon_period");
> -cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
> -		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
> -				port_num, RTE_UINT16);
> -cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
> -		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
> -				period_ms, RTE_UINT32);
> -
> -cmdline_parse_inst_t cmd_set_bond_mon_period = {
> -		.f = cmd_set_bond_mon_period_parsed,
> -		.data = (void *) 0,
> -		.help_str = "set bonding mon_period <port_id> <period_ms>",
> -		.tokens = {
> -				(void *)&cmd_set_bond_mon_period_set,
> -				(void *)&cmd_set_bond_mon_period_bonding,
> -				(void *)&cmd_set_bond_mon_period_mon_period,
> -				(void *)&cmd_set_bond_mon_period_portnum,
> -				(void *)&cmd_set_bond_mon_period_period_ms,
> -				NULL
> -		}
> -};
> -
> -
> -
> -struct cmd_set_bonding_agg_mode_policy_result {
> -	cmdline_fixed_string_t set;
> -	cmdline_fixed_string_t bonding;
> -	cmdline_fixed_string_t agg_mode;
> -	uint16_t port_num;
> -	cmdline_fixed_string_t policy;
> -};
> -
> -
> -static void
> -cmd_set_bonding_agg_mode(void *parsed_result,
> -		__rte_unused struct cmdline *cl,
> -		__rte_unused void *data)
> -{
> -	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
> -	uint8_t policy = AGG_BANDWIDTH;
> -
> -	if (!strcmp(res->policy, "bandwidth"))
> -		policy = AGG_BANDWIDTH;
> -	else if (!strcmp(res->policy, "stable"))
> -		policy = AGG_STABLE;
> -	else if (!strcmp(res->policy, "count"))
> -		policy = AGG_COUNT;
> -
> -	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
> -}
> -
> -
> -cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
> -	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> -				set, "set");
> -cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
> -	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> -				bonding, "bonding");
> -
> -cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
> -	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> -				agg_mode, "agg_mode");
> -
> -cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
> -	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> -				port_num, RTE_UINT16);
> -
> -cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
> -	TOKEN_STRING_INITIALIZER(
> -			struct cmd_set_bonding_balance_xmit_policy_result,
> -		policy, "stable#bandwidth#count");
> -
> -cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
> -	.f = cmd_set_bonding_agg_mode,
> -	.data = (void *) 0,
> -	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
> -	.tokens = {
> -			(void *)&cmd_set_bonding_agg_mode_set,
> -			(void *)&cmd_set_bonding_agg_mode_bonding,
> -			(void *)&cmd_set_bonding_agg_mode_agg_mode,
> -			(void *)&cmd_set_bonding_agg_mode_portnum,
> -			(void *)&cmd_set_bonding_agg_mode_policy_string,
> -			NULL
> -		}
> -};
> -
> -
> -#endif /* RTE_NET_BOND */
> -
>   /* *** SET FORWARDING MODE *** */
>   struct cmd_set_fwd_mode_result {
>   	cmdline_fixed_string_t set;
> @@ -17870,20 +16849,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
>   	(cmdline_parse_inst_t *)&cmd_set_bypass_event,
>   	(cmdline_parse_inst_t *)&cmd_set_bypass_timeout,
>   	(cmdline_parse_inst_t *)&cmd_show_bypass_config,
> -#ifdef RTE_NET_BOND
> -	(cmdline_parse_inst_t *) &cmd_set_bonding_mode,
> -	(cmdline_parse_inst_t *) &cmd_show_bonding_config,
> -	(cmdline_parse_inst_t *) &cmd_show_bonding_lacp_info,
> -	(cmdline_parse_inst_t *) &cmd_set_bonding_primary,
> -	(cmdline_parse_inst_t *) &cmd_add_bonding_slave,
> -	(cmdline_parse_inst_t *) &cmd_remove_bonding_slave,
> -	(cmdline_parse_inst_t *) &cmd_create_bonded_device,
> -	(cmdline_parse_inst_t *) &cmd_set_bond_mac_addr,
> -	(cmdline_parse_inst_t *) &cmd_set_balance_xmit_policy,
> -	(cmdline_parse_inst_t *) &cmd_set_bond_mon_period,
> -	(cmdline_parse_inst_t *) &cmd_set_lacp_dedicated_queues,
> -	(cmdline_parse_inst_t *) &cmd_set_bonding_agg_mode_policy,
> -#endif
>   	(cmdline_parse_inst_t *)&cmd_vlan_offload,
>   	(cmdline_parse_inst_t *)&cmd_vlan_tpid,
>   	(cmdline_parse_inst_t *)&cmd_rx_vlan_filter_all,
> diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
> index 46a7511e9a..07634332f3 100644
> --- a/app/test-pmd/meson.build
> +++ b/app/test-pmd/meson.build
> @@ -58,9 +58,6 @@ endif
>   if dpdk_conf.has('RTE_LIB_PDUMP')
>       deps += 'pdump'
>   endif
> -if dpdk_conf.has('RTE_NET_BOND')
> -    deps += 'net_bond'
> -endif
>   if dpdk_conf.has('RTE_NET_BNXT')
>       deps += 'net_bnxt'
>   endif
> diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build
> index 402b44be1a..faea892295 100644
> --- a/drivers/net/bonding/meson.build
> +++ b/drivers/net/bonding/meson.build
> @@ -16,6 +16,7 @@ sources = files(
>           'rte_eth_bond_flow.c',
>           'rte_eth_bond_pmd.c',
>   )
> +testpmd_sources = files('rte_eth_bond_testpmd.c')
>   
>   deps += 'sched' # needed for rte_bitmap.h
>   deps += ['ip_frag']
> diff --git a/drivers/net/bonding/rte_eth_bond_testpmd.c b/drivers/net/bonding/rte_eth_bond_testpmd.c
> new file mode 100644
> index 0000000000..834e2da4e6
> --- /dev/null
> +++ b/drivers/net/bonding/rte_eth_bond_testpmd.c
> @@ -0,0 +1,1037 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2010-2016 Intel Corporation.
> + */
> +
> +#include <rte_eth_bond.h>
> +#include <rte_eth_bond_8023ad.h>
> +
> +#include <cmdline_parse.h>
> +#include <cmdline_parse_etheraddr.h>
> +#include <cmdline_parse_num.h>
> +#include <cmdline_parse_string.h>
> +
> +#include "testpmd.h"
> +
> +/* *** SET BONDING MODE *** */
> +struct cmd_set_bonding_mode_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t mode;
> +	uint8_t value;
> +	portid_t port_id;
> +};
> +
> +static void cmd_set_bonding_mode_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bonding_mode_result *res = parsed_result;
> +	portid_t port_id = res->port_id;
> +	struct rte_port *port = &ports[port_id];
> +
> +	/*
> +	 * Bonding mode changed means resources of device changed, like whether
> +	 * started rte timer or not. Device should be restarted when resources
> +	 * of device changed.
> +	 */
> +	if (port->port_status != RTE_PORT_STOPPED) {
> +		fprintf(stderr,
> +			"\t Error: Can't set bonding mode when port %d is not stopped\n",
> +			port_id);
> +		return;
> +	}
> +
> +	/* Set the bonding mode for the relevant port. */
> +	if (rte_eth_bond_mode_set(port_id, res->value) != 0)
> +		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
> +			port_id);
> +}
> +
> +cmdline_parse_token_string_t cmd_setbonding_mode_set =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> +		set, "set");
> +cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_setbonding_mode_mode =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
> +		mode, "mode");
> +cmdline_parse_token_num_t cmd_setbonding_mode_value =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
> +		value, RTE_UINT8);
> +cmdline_parse_token_num_t cmd_setbonding_mode_port =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
> +		port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_set_bonding_mode = {
> +		.f = cmd_set_bonding_mode_parsed,
> +		.help_str = "set bonding mode <mode_value> <port_id>: "
> +			"Set the bonding mode for port_id",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_setbonding_mode_set,
> +				(void *)&cmd_setbonding_mode_bonding,
> +				(void *)&cmd_setbonding_mode_mode,
> +				(void *)&cmd_setbonding_mode_value,
> +				(void *)&cmd_setbonding_mode_port,
> +				NULL
> +		}
> +};
> +
> +/* *** SET BONDING SLOW_QUEUE SW/HW *** */
> +struct cmd_set_bonding_lacp_dedicated_queues_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t lacp;
> +	cmdline_fixed_string_t dedicated_queues;
> +	portid_t port_id;
> +	cmdline_fixed_string_t mode;
> +};
> +
> +static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
> +	portid_t port_id = res->port_id;
> +	struct rte_port *port;
> +
> +	port = &ports[port_id];
> +
> +	/** Check if the port is not started **/
> +	if (port->port_status != RTE_PORT_STOPPED) {
> +		fprintf(stderr, "Please stop port %d first\n", port_id);
> +		return;
> +	}
> +
> +	if (!strcmp(res->mode, "enable")) {
> +		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
> +			printf("Dedicate queues for LACP control packets"
> +					" enabled\n");
> +		else
> +			printf("Enabling dedicate queues for LACP control "
> +					"packets on port %d failed\n", port_id);
> +	} else if (!strcmp(res->mode, "disable")) {
> +		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
> +			printf("Dedicated queues for LACP control packets "
> +					"disabled\n");
> +		else
> +			printf("Disabling dedicated queues for LACP control "
> +					"traffic on port %d failed\n", port_id);
> +	}
> +}
> +
> +cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		set, "set");
> +cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		lacp, "lacp");
> +cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		dedicated_queues, "dedicated_queues");
> +cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		port_id, RTE_UINT16);
> +cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
> +		mode, "enable#disable");
> +
> +cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
> +		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
> +		.help_str = "set bonding lacp dedicated_queues <port_id> "
> +			"enable|disable: "
> +			"Enable/disable dedicated queues for LACP control traffic for port_id",
> +		.data = NULL,
> +		.tokens = {
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
> +			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
> +			NULL
> +		}
> +};
> +
> +/* *** SET BALANCE XMIT POLICY *** */
> +struct cmd_set_bonding_balance_xmit_policy_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t balance_xmit_policy;
> +	portid_t port_id;
> +	cmdline_fixed_string_t policy;
> +};
> +
> +static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
> +	portid_t port_id = res->port_id;
> +	uint8_t policy;
> +
> +	if (!strcmp(res->policy, "l2")) {
> +		policy = BALANCE_XMIT_POLICY_LAYER2;
> +	} else if (!strcmp(res->policy, "l23")) {
> +		policy = BALANCE_XMIT_POLICY_LAYER23;
> +	} else if (!strcmp(res->policy, "l34")) {
> +		policy = BALANCE_XMIT_POLICY_LAYER34;
> +	} else {
> +		fprintf(stderr, "\t Invalid xmit policy selection");
> +		return;
> +	}
> +
> +	/* Set the bonding mode for the relevant port. */
> +	if (rte_eth_bond_xmit_policy_set(port_id, policy) != 0) {
> +		fprintf(stderr,
> +			"\t Failed to set bonding balance xmit policy for port = %d.\n",
> +			port_id);
> +	}
> +}
> +
> +cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		set, "set");
> +cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		balance_xmit_policy, "balance_xmit_policy");
> +cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		port_id, RTE_UINT16);
> +cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		policy, "l2#l23#l34");
> +
> +cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
> +		.f = cmd_set_bonding_balance_xmit_policy_parsed,
> +		.help_str = "set bonding balance_xmit_policy <port_id> "
> +			"l2|l23|l34: "
> +			"Set the bonding balance_xmit_policy for port_id",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_setbonding_balance_xmit_policy_set,
> +				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
> +				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
> +				(void *)&cmd_setbonding_balance_xmit_policy_port,
> +				(void *)&cmd_setbonding_balance_xmit_policy_policy,
> +				NULL
> +		}
> +};
> +
> +/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
> +struct cmd_show_bonding_lacp_info_result {
> +	cmdline_fixed_string_t show;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t lacp;
> +	cmdline_fixed_string_t info;
> +	portid_t port_id;
> +};
> +
> +static void port_param_show(struct port_params *params)
> +{
> +	char buf[RTE_ETHER_ADDR_FMT_SIZE];
> +
> +	printf("\t\tsystem priority: %u\n", params->system_priority);
> +	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
> +	printf("\t\tsystem mac address: %s\n", buf);
> +	printf("\t\tport key: %u\n", params->key);
> +	printf("\t\tport priority: %u\n", params->port_priority);
> +	printf("\t\tport number: %u\n", params->port_number);
> +}
> +
> +static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
> +{
> +	char a_state[256] = { 0 };
> +	char p_state[256] = { 0 };
> +	int a_len = 0;
> +	int p_len = 0;
> +	uint32_t i;
> +
> +	static const char * const state[] = {
> +		"ACTIVE",
> +		"TIMEOUT",
> +		"AGGREGATION",
> +		"SYNCHRONIZATION",
> +		"COLLECTING",
> +		"DISTRIBUTING",
> +		"DEFAULTED",
> +		"EXPIRED"
> +	};
> +	static const char * const selection[] = {
> +		"UNSELECTED",
> +		"STANDBY",
> +		"SELECTED"
> +	};
> +
> +	for (i = 0; i < RTE_DIM(state); i++) {
> +		if ((info->actor_state >> i) & 1)
> +			a_len += snprintf(&a_state[a_len],
> +						RTE_DIM(a_state) - a_len, "%s ",
> +						state[i]);
> +
> +		if ((info->partner_state >> i) & 1)
> +			p_len += snprintf(&p_state[p_len],
> +						RTE_DIM(p_state) - p_len, "%s ",
> +						state[i]);
> +	}
> +	printf("\tAggregator port id: %u\n", info->agg_port_id);
> +	printf("\tselection: %s\n", selection[info->selected]);
> +	printf("\tActor detail info:\n");
> +	port_param_show(&info->actor);
> +	printf("\t\tport state: %s\n", a_state);
> +	printf("\tPartner detail info:\n");
> +	port_param_show(&info->partner);
> +	printf("\t\tport state: %s\n", p_state);
> +	printf("\n");
> +}
> +
> +static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
> +{
> +	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
> +	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
> +	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
> +	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
> +	printf("\taggregate wait timeout: %u ms\n",
> +			conf->aggregate_wait_timeout_ms);
> +	printf("\ttx period: %u ms\n", conf->tx_period_ms);
> +	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
> +	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
> +	switch (conf->agg_selection) {
> +	case AGG_BANDWIDTH:
> +		printf("\taggregation mode: bandwidth\n");
> +		break;
> +	case AGG_STABLE:
> +		printf("\taggregation mode: stable\n");
> +		break;
> +	case AGG_COUNT:
> +		printf("\taggregation mode: count\n");
> +		break;
> +	default:
> +		printf("\taggregation mode: invalid\n");
> +		break;
> +	}
> +
> +	printf("\n");
> +}
> +
> +static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
> +	struct rte_eth_bond_8023ad_slave_info slave_info;
> +	struct rte_eth_bond_8023ad_conf port_conf;
> +	portid_t slaves[RTE_MAX_ETHPORTS];
> +	portid_t port_id = res->port_id;
> +	int num_active_slaves;
> +	int bonding_mode;
> +	int i;
> +	int ret;
> +
> +	bonding_mode = rte_eth_bond_mode_get(port_id);
> +	if (bonding_mode != BONDING_MODE_8023AD) {
> +		fprintf(stderr, "\tBonding mode is not mode 4\n");
> +		return;
> +	}
> +
> +	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
> +			RTE_MAX_ETHPORTS);
> +	if (num_active_slaves < 0) {
> +		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
> +				port_id);
> +		return;
> +	}
> +	if (num_active_slaves == 0)
> +		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
> +			port_id);
> +
> +	printf("\tIEEE802.3 port: %u\n", port_id);
> +	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
> +	if (ret) {
> +		fprintf(stderr, "\tGet bonded device %u info failed\n",
> +			port_id);
> +		return;
> +	}
> +	lacp_conf_show(&port_conf);
> +
> +	for (i = 0; i < num_active_slaves; i++) {
> +		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
> +				&slave_info);
> +		if (ret) {
> +			fprintf(stderr, "\tGet slave device %u info failed\n",
> +				slaves[i]);
> +			return;
> +		}
> +		printf("\tSlave Port: %u\n", slaves[i]);
> +		lacp_slave_info_show(&slave_info);
> +	}
> +}
> +
> +cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> +		show, "show");
> +cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> +		bonding, "lacp");
> +cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> +		info, "info");
> +cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
> +TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
> +		port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
> +		.f = cmd_show_bonding_lacp_info_parsed,
> +		.help_str = "show bonding lacp info <port_id> : "
> +			"Show bonding IEEE802.3 information for port_id",
> +		.data = NULL,
> +		.tokens = {
> +			(void *)&cmd_show_bonding_lacp_info_show,
> +			(void *)&cmd_show_bonding_lacp_info_bonding,
> +			(void *)&cmd_show_bonding_lacp_info_lacp,
> +			(void *)&cmd_show_bonding_lacp_info_info,
> +			(void *)&cmd_show_bonding_lacp_info_port_id,
> +			NULL
> +		}
> +};
> +
> +/* *** SHOW NIC BONDING CONFIGURATION *** */
> +struct cmd_show_bonding_config_result {
> +	cmdline_fixed_string_t show;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t config;
> +	portid_t port_id;
> +};
> +
> +static void cmd_show_bonding_config_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_show_bonding_config_result *res = parsed_result;
> +	int bonding_mode, agg_mode;
> +	portid_t slaves[RTE_MAX_ETHPORTS];
> +	int num_slaves, num_active_slaves;
> +	int primary_id;
> +	int i;
> +	portid_t port_id = res->port_id;
> +
> +	/* Display the bonding mode.*/
> +	bonding_mode = rte_eth_bond_mode_get(port_id);
> +	if (bonding_mode < 0) {
> +		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
> +			port_id);
> +		return;
> +	}
> +	printf("\tBonding mode: %d\n", bonding_mode);
> +
> +	if (bonding_mode == BONDING_MODE_BALANCE ||
> +		bonding_mode == BONDING_MODE_8023AD) {
> +		int balance_xmit_policy;
> +
> +		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
> +		if (balance_xmit_policy < 0) {
> +			fprintf(stderr,
> +				"\tFailed to get balance xmit policy for port = %d\n",
> +				port_id);
> +			return;
> +		}
> +		printf("\tBalance Xmit Policy: ");
> +
> +		switch (balance_xmit_policy) {
> +		case BALANCE_XMIT_POLICY_LAYER2:
> +			printf("BALANCE_XMIT_POLICY_LAYER2");
> +			break;
> +		case BALANCE_XMIT_POLICY_LAYER23:
> +			printf("BALANCE_XMIT_POLICY_LAYER23");
> +			break;
> +		case BALANCE_XMIT_POLICY_LAYER34:
> +			printf("BALANCE_XMIT_POLICY_LAYER34");
> +			break;
> +		}
> +		printf("\n");
> +	}
> +
> +	if (bonding_mode == BONDING_MODE_8023AD) {
> +		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
> +		printf("\tIEEE802.3AD Aggregator Mode: ");
> +		switch (agg_mode) {
> +		case AGG_BANDWIDTH:
> +			printf("bandwidth");
> +			break;
> +		case AGG_STABLE:
> +			printf("stable");
> +			break;
> +		case AGG_COUNT:
> +			printf("count");
> +			break;
> +		}
> +		printf("\n");
> +	}
> +
> +	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
> +
> +	if (num_slaves < 0) {
> +		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
> +			port_id);
> +		return;
> +	}
> +	if (num_slaves > 0) {
> +		printf("\tSlaves (%d): [", num_slaves);
> +		for (i = 0; i < num_slaves - 1; i++)
> +			printf("%d ", slaves[i]);
> +
> +		printf("%d]\n", slaves[num_slaves - 1]);
> +	} else {
> +		printf("\tSlaves: []\n");
> +	}
> +
> +	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
> +			RTE_MAX_ETHPORTS);
> +
> +	if (num_active_slaves < 0) {
> +		fprintf(stderr,
> +			"\tFailed to get active slave list for port = %d\n",
> +			port_id);
> +		return;
> +	}
> +	if (num_active_slaves > 0) {
> +		printf("\tActive Slaves (%d): [", num_active_slaves);
> +		for (i = 0; i < num_active_slaves - 1; i++)
> +			printf("%d ", slaves[i]);
> +
> +		printf("%d]\n", slaves[num_active_slaves - 1]);
> +
> +	} else {
> +		printf("\tActive Slaves: []\n");
> +	}
> +
> +	primary_id = rte_eth_bond_primary_get(port_id);
> +	if (primary_id < 0) {
> +		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
> +			port_id);
> +		return;
> +	}
> +	printf("\tPrimary: [%d]\n", primary_id);
> +}
> +
> +cmdline_parse_token_string_t cmd_showbonding_config_show =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> +		show, "show");
> +cmdline_parse_token_string_t cmd_showbonding_config_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_showbonding_config_config =
> +TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
> +		config, "config");
> +cmdline_parse_token_num_t cmd_showbonding_config_port =
> +TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
> +		port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_show_bonding_config = {
> +		.f = cmd_show_bonding_config_parsed,
> +		.help_str = "show bonding config <port_id>: "
> +			"Show the bonding config for port_id",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_showbonding_config_show,
> +				(void *)&cmd_showbonding_config_bonding,
> +				(void *)&cmd_showbonding_config_config,
> +				(void *)&cmd_showbonding_config_port,
> +				NULL
> +		}
> +};
> +
> +/* *** SET BONDING PRIMARY *** */
> +struct cmd_set_bonding_primary_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t primary;
> +	portid_t slave_id;
> +	portid_t port_id;
> +};
> +
> +static void cmd_set_bonding_primary_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bonding_primary_result *res = parsed_result;
> +	portid_t master_port_id = res->port_id;
> +	portid_t slave_port_id = res->slave_id;
> +
> +	/* Set the primary slave for a bonded device. */
> +	if (rte_eth_bond_primary_set(master_port_id, slave_port_id) != 0) {
> +		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
> +			master_port_id);
> +		return;
> +	}
> +	init_port_config();
> +}
> +
> +cmdline_parse_token_string_t cmd_setbonding_primary_set =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> +		set, "set");
> +cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_setbonding_primary_primary =
> +TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
> +		primary, "primary");
> +cmdline_parse_token_num_t cmd_setbonding_primary_slave =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
> +		slave_id, RTE_UINT16);
> +cmdline_parse_token_num_t cmd_setbonding_primary_port =
> +TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
> +		port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_set_bonding_primary = {
> +		.f = cmd_set_bonding_primary_parsed,
> +		.help_str = "set bonding primary <slave_id> <port_id>: "
> +			"Set the primary slave for port_id",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_setbonding_primary_set,
> +				(void *)&cmd_setbonding_primary_bonding,
> +				(void *)&cmd_setbonding_primary_primary,
> +				(void *)&cmd_setbonding_primary_slave,
> +				(void *)&cmd_setbonding_primary_port,
> +				NULL
> +		}
> +};
> +
> +/* *** ADD SLAVE *** */
> +struct cmd_add_bonding_slave_result {
> +	cmdline_fixed_string_t add;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t slave;
> +	portid_t slave_id;
> +	portid_t port_id;
> +};
> +
> +static void cmd_add_bonding_slave_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_add_bonding_slave_result *res = parsed_result;
> +	portid_t master_port_id = res->port_id;
> +	portid_t slave_port_id = res->slave_id;
> +
> +	/* add the slave for a bonded device. */
> +	if (rte_eth_bond_slave_add(master_port_id, slave_port_id) != 0) {
> +		fprintf(stderr,
> +			"\t Failed to add slave %d to master port = %d.\n",
> +			slave_port_id, master_port_id);
> +		return;
> +	}
> +	init_port_config();
> +	set_port_slave_flag(slave_port_id);
> +}
> +
> +cmdline_parse_token_string_t cmd_addbonding_slave_add =
> +TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> +		add, "add");
> +cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
> +TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> +		bonding, "bonding");
> +cmdline_parse_token_string_t cmd_addbonding_slave_slave =
> +TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
> +		slave, "slave");
> +cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
> +TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
> +		slave_id, RTE_UINT16);
> +cmdline_parse_token_num_t cmd_addbonding_slave_port =
> +TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
> +		port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_add_bonding_slave = {
> +		.f = cmd_add_bonding_slave_parsed,
> +		.help_str = "add bonding slave <slave_id> <port_id>: "
> +			"Add a slave device to a bonded device",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_addbonding_slave_add,
> +				(void *)&cmd_addbonding_slave_bonding,
> +				(void *)&cmd_addbonding_slave_slave,
> +				(void *)&cmd_addbonding_slave_slaveid,
> +				(void *)&cmd_addbonding_slave_port,
> +				NULL
> +		}
> +};
> +
> +/* *** REMOVE SLAVE *** */
> +struct cmd_remove_bonding_slave_result {
> +	cmdline_fixed_string_t remove;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t slave;
> +	portid_t slave_id;
> +	portid_t port_id;
> +};
> +
> +static void cmd_remove_bonding_slave_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_remove_bonding_slave_result *res = parsed_result;
> +	portid_t master_port_id = res->port_id;
> +	portid_t slave_port_id = res->slave_id;
> +
> +	/* remove the slave from a bonded device. */
> +	if (rte_eth_bond_slave_remove(master_port_id, slave_port_id) != 0) {
> +		fprintf(stderr,
> +			"\t Failed to remove slave %d from master port = %d.\n",
> +			slave_port_id, master_port_id);
> +		return;
> +	}
> +	init_port_config();
> +	clear_port_slave_flag(slave_port_id);
> +}
> +
> +cmdline_parse_token_string_t cmd_removebonding_slave_remove =
> +		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> +				remove, "remove");
> +cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
> +		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> +				bonding, "bonding");
> +cmdline_parse_token_string_t cmd_removebonding_slave_slave =
> +		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
> +				slave, "slave");
> +cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
> +		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
> +				slave_id, RTE_UINT16);
> +cmdline_parse_token_num_t cmd_removebonding_slave_port =
> +		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
> +				port_id, RTE_UINT16);
> +
> +cmdline_parse_inst_t cmd_remove_bonding_slave = {
> +		.f = cmd_remove_bonding_slave_parsed,
> +		.help_str = "remove bonding slave <slave_id> <port_id>: "
> +			"Remove a slave device from a bonded device",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_removebonding_slave_remove,
> +				(void *)&cmd_removebonding_slave_bonding,
> +				(void *)&cmd_removebonding_slave_slave,
> +				(void *)&cmd_removebonding_slave_slaveid,
> +				(void *)&cmd_removebonding_slave_port,
> +				NULL
> +		}
> +};
> +
> +/* *** CREATE BONDED DEVICE *** */
> +struct cmd_create_bonded_device_result {
> +	cmdline_fixed_string_t create;
> +	cmdline_fixed_string_t bonded;
> +	cmdline_fixed_string_t device;
> +	uint8_t mode;
> +	uint8_t socket;
> +};
> +
> +static int bond_dev_num;
> +
> +static void cmd_create_bonded_device_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_create_bonded_device_result *res = parsed_result;
> +	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
> +	int port_id;
> +	int ret;
> +
> +	if (test_done == 0) {
> +		fprintf(stderr, "Please stop forwarding first\n");
> +		return;
> +	}
> +
> +	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
> +			bond_dev_num++);
> +
> +	/* Create a new bonded device. */
> +	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
> +	if (port_id < 0) {
> +		fprintf(stderr, "\t Failed to create bonded device.\n");
> +		return;
> +	}
> +	printf("Created new bonded device %s on (port %d).\n", ethdev_name,
> +		port_id);
> +
> +	/* Update number of ports */
> +	nb_ports = rte_eth_dev_count_avail();
> +	reconfig(port_id, res->socket);
> +	ret = rte_eth_promiscuous_enable(port_id);
> +	if (ret != 0)
> +		fprintf(stderr, "Failed to enable promiscuous mode for port %u: %s - ignore\n",
> +			port_id, rte_strerror(-ret));
> +
> +	ports[port_id].need_setup = 0;
> +	ports[port_id].port_status = RTE_PORT_STOPPED;
> +}
> +
> +cmdline_parse_token_string_t cmd_createbonded_device_create =
> +		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> +				create, "create");
> +cmdline_parse_token_string_t cmd_createbonded_device_bonded =
> +		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> +				bonded, "bonded");
> +cmdline_parse_token_string_t cmd_createbonded_device_device =
> +		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
> +				device, "device");
> +cmdline_parse_token_num_t cmd_createbonded_device_mode =
> +		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
> +				mode, RTE_UINT8);
> +cmdline_parse_token_num_t cmd_createbonded_device_socket =
> +		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
> +				socket, RTE_UINT8);
> +
> +cmdline_parse_inst_t cmd_create_bonded_device = {
> +		.f = cmd_create_bonded_device_parsed,
> +		.help_str = "create bonded device <mode> <socket>: "
> +			"Create a new bonded device with specific bonding mode and socket",
> +		.data = NULL,
> +		.tokens = {
> +				(void *)&cmd_createbonded_device_create,
> +				(void *)&cmd_createbonded_device_bonded,
> +				(void *)&cmd_createbonded_device_device,
> +				(void *)&cmd_createbonded_device_mode,
> +				(void *)&cmd_createbonded_device_socket,
> +				NULL
> +		}
> +};
> +
> +/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
> +struct cmd_set_bond_mac_addr_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t mac_addr;
> +	uint16_t port_num;
> +	struct rte_ether_addr address;
> +};
> +
> +static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bond_mac_addr_result *res = parsed_result;
> +	int ret;
> +
> +	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
> +		return;
> +
> +	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
> +
> +	/* check the return value and print it if is < 0 */
> +	if (ret < 0)
> +		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
> +			strerror(-ret));
> +}
> +
> +cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
> +cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
> +				"bonding");
> +cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
> +				"mac_addr");
> +cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
> +		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
> +				port_num, RTE_UINT16);
> +cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
> +		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
> +
> +cmdline_parse_inst_t cmd_set_bond_mac_addr = {
> +		.f = cmd_set_bond_mac_addr_parsed,
> +		.data = NULL,
> +		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
> +		.tokens = {
> +				(void *)&cmd_set_bond_mac_addr_set,
> +				(void *)&cmd_set_bond_mac_addr_bonding,
> +				(void *)&cmd_set_bond_mac_addr_mac,
> +				(void *)&cmd_set_bond_mac_addr_portnum,
> +				(void *)&cmd_set_bond_mac_addr_addr,
> +				NULL
> +		}
> +};
> +
> +/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
> +struct cmd_set_bond_mon_period_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t mon_period;
> +	uint16_t port_num;
> +	uint32_t period_ms;
> +};
> +
> +static void cmd_set_bond_mon_period_parsed(void *parsed_result,
> +		__rte_unused  struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bond_mon_period_result *res = parsed_result;
> +	int ret;
> +
> +	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
> +
> +	/* check the return value and print it if is < 0 */
> +	if (ret < 0)
> +		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
> +			strerror(-ret));
> +}
> +
> +cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> +				set, "set");
> +cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> +				bonding, "bonding");
> +cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
> +		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
> +				mon_period,	"mon_period");
> +cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
> +		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
> +				port_num, RTE_UINT16);
> +cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
> +		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
> +				period_ms, RTE_UINT32);
> +
> +cmdline_parse_inst_t cmd_set_bond_mon_period = {
> +		.f = cmd_set_bond_mon_period_parsed,
> +		.data = NULL,
> +		.help_str = "set bonding mon_period <port_id> <period_ms>",
> +		.tokens = {
> +				(void *)&cmd_set_bond_mon_period_set,
> +				(void *)&cmd_set_bond_mon_period_bonding,
> +				(void *)&cmd_set_bond_mon_period_mon_period,
> +				(void *)&cmd_set_bond_mon_period_portnum,
> +				(void *)&cmd_set_bond_mon_period_period_ms,
> +				NULL
> +		}
> +};
> +
> +struct cmd_set_bonding_agg_mode_policy_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t bonding;
> +	cmdline_fixed_string_t agg_mode;
> +	uint16_t port_num;
> +	cmdline_fixed_string_t policy;
> +};
> +
> +static void
> +cmd_set_bonding_agg_mode(void *parsed_result,
> +		__rte_unused struct cmdline *cl,
> +		__rte_unused void *data)
> +{
> +	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
> +	uint8_t policy = AGG_BANDWIDTH;
> +
> +	if (!strcmp(res->policy, "bandwidth"))
> +		policy = AGG_BANDWIDTH;
> +	else if (!strcmp(res->policy, "stable"))
> +		policy = AGG_STABLE;
> +	else if (!strcmp(res->policy, "count"))
> +		policy = AGG_COUNT;
> +
> +	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
> +}
> +
> +cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
> +	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> +				set, "set");
> +cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
> +	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> +				bonding, "bonding");
> +
> +cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
> +	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> +				agg_mode, "agg_mode");
> +
> +cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
> +	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
> +				port_num, RTE_UINT16);
> +
> +cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
> +	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
> +		policy, "stable#bandwidth#count");
> +
> +cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
> +	.f = cmd_set_bonding_agg_mode,
> +	.data = NULL,
> +	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
> +	.tokens = {
> +			(void *)&cmd_set_bonding_agg_mode_set,
> +			(void *)&cmd_set_bonding_agg_mode_bonding,
> +			(void *)&cmd_set_bonding_agg_mode_agg_mode,
> +			(void *)&cmd_set_bonding_agg_mode_portnum,
> +			(void *)&cmd_set_bonding_agg_mode_policy_string,
> +			NULL
> +		}
> +};
> +
> +static struct testpmd_cmdline_parser driver_parser = {
> +	.ctx = (cmdline_parse_ctx_t[]) {
> +		(cmdline_parse_inst_t *)&cmd_set_bonding_mode,
> +		(cmdline_parse_inst_t *)&cmd_show_bonding_config,
> +		(cmdline_parse_inst_t *)&cmd_show_bonding_lacp_info,
> +		(cmdline_parse_inst_t *)&cmd_set_bonding_primary,
> +		(cmdline_parse_inst_t *)&cmd_add_bonding_slave,
> +		(cmdline_parse_inst_t *)&cmd_remove_bonding_slave,
> +		(cmdline_parse_inst_t *)&cmd_create_bonded_device,
> +		(cmdline_parse_inst_t *)&cmd_set_bond_mac_addr,
> +		(cmdline_parse_inst_t *)&cmd_set_balance_xmit_policy,
> +		(cmdline_parse_inst_t *)&cmd_set_bond_mon_period,
> +		(cmdline_parse_inst_t *)&cmd_set_lacp_dedicated_queues,
> +		(cmdline_parse_inst_t *)&cmd_set_bonding_agg_mode_policy,
> +		NULL
> +	},
> +	.help = {
> +		"set bonding mode (value) (port_id)\n"
> +		"	Set the bonding mode on a bonded device.\n",
> +
> +		"show bonding config (port_id)\n"
> +		"	Show the bonding config for port_id.\n",
> +
> +		"show bonding lacp info (port_id)\n"
> +		"	Show the bonding lacp information for port_id.\n",
> +
> +		"set bonding primary (slave_id) (port_id)\n"
> +		"	Set the primary slave for a bonded device.\n",
> +
> +		"add bonding slave (slave_id) (port_id)\n"
> +		"	Add a slave device to a bonded device.\n",
> +
> +		"remove bonding slave (slave_id) (port_id)\n"
> +		"	Remove a slave device from a bonded device.\n",
> +
> +		"create bonded device (mode) (socket)\n"
> +		"	Create a new bonded device with specific bonding mode and socket.\n",
> +
> +		"set bonding mac_addr (port_id) (address)\n"
> +		"	Set the MAC address of a bonded device.\n",
> +
> +		"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
> +		"	Set the transmit balance policy for bonded device running in balance mode.\n",
> +
> +		"set bonding mon_period (port_id) (value)\n"
> +		"	Set the bonding link status monitoring polling period in ms.\n",
> +
> +		"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
> +		"	Enable/disable dedicated queues for LACP control traffic.\n",
> +
> +		"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)\n"
> +		"	Set Aggregation mode for IEEE802.3AD (mode 4)\n",
> +
> +		NULL
> +	},
> +};
> +
> +RTE_INIT(bonding_testpmd)
> +{
> +	testpmd_add_commands(&driver_parser);
> +}
> 

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

* Re: [RFC PATCH 1/4] app/testpmd: register driver specific commands
  2022-05-13  7:57 ` [RFC PATCH 1/4] app/testpmd: register driver specific commands David Marchand
@ 2022-05-13 10:30   ` David Marchand
  0 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-13 10:30 UTC (permalink / raw)
  To: dev
  Cc: Thomas Monjalon, Xiaoyun Li, Aman Singh, Yuying Zhang, Bruce Richardson

On Fri, May 13, 2022 at 9:57 AM David Marchand
<david.marchand@redhat.com> wrote:
> +       TAILQ_FOREACH(parser, &cmdline_parsers, next) {
> +               for (i = 0; parser->ctx[i] != NULL; i++) {
> +                       ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
> +                       if (ctx == NULL)
> +                               goto err;
> +                       ctx[count + i] = parser->ctx[i];

Strange I did not catch it earlier...

-                       ctx[count + i] = parser->ctx[i];
+                       main_ctx = ctx;
+                       main_ctx[count + i] = builtin_ctx[i];


> +               }
> +               count += i;
> +       }


-- 
David Marchand


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

* Re: [RFC PATCH 2/4] net/bonding: move testpmd commands
  2022-05-13 10:09   ` Min Hu (Connor)
@ 2022-05-18 17:24     ` David Marchand
  2022-05-18 23:25       ` Konstantin Ananyev
  0 siblings, 1 reply; 18+ messages in thread
From: David Marchand @ 2022-05-18 17:24 UTC (permalink / raw)
  To: Min Hu (Connor)
  Cc: dev, Thomas Monjalon, Xiaoyun Li, Aman Singh, Yuying Zhang,
	Chas Williams

On Fri, May 13, 2022 at 12:10 PM Min Hu (Connor) <humin29@huawei.com> wrote:
>
>   I think net/bonding offer 'API' for APP to use the bonding.
>     and use the specific PMD as slave device.
>   The software framwork is like:
>    APP
>    ethdev
>    bonding PMD
>    PMD
>    hardware
>
> so, I think cmdlines for testpmd should not put in net/bonding.

Sorry, but the distinction is vague.

Those commands are specific to this driver/library.
I don't see the problem with hosting the commands in the bonding driver/library.

This is still a RFC, I don't mind dropping this patch (in the end) if
others think it does not make sense.
For now I'll keep it in a v2 series fixing the registering issue in patch 1.


-- 
David Marchand


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

* [RFC PATCH v2 0/5] Split driver specific commands out of testpmd
  2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
                   ` (3 preceding siblings ...)
  2022-05-13  7:57 ` [RFC PATCH 4/4] net/ixgbe: " David Marchand
@ 2022-05-18 19:46 ` David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 1/5] app/testpmd: mark cmdline symbols as static David Marchand
                     ` (4 more replies)
  4 siblings, 5 replies; 18+ messages in thread
From: David Marchand @ 2022-05-18 19:46 UTC (permalink / raw)
  To: dev; +Cc: thomas

Hello,

Following TB decision and recent discussions on the driver specific
commands in testpmd, here is a proposal on how the split could be done.

For now, this series simply moves the testpmd code in the driver
directory. The driver specific testpmd code is still compiled as part of
testpmd compilation via a global meson testpmd_driver_sources list.

TODO:
- ixgbe bypass commands in testpmd are "dead" code since switch to meson,
  as the RTE_LIBRTE_IXGBE_BYPASS define is not set while compiling testpmd.
  I am tempted to simply drop those, since no one complained about issue
  for the last two years. For now, this series reinstates them.

- this series keeps the command names as is. We could consolidate with a
  clear prefix so that users directly know they are exerting a special
  feature that makes no sense on other hw.
  For this, I had in mind introducing a "driver" top level prefix,
  where drivers would hook their specific stuff. For example:
  testpmd> driver ixgbe set vf split drop (port_id) (vf_id) (on|off)

- the documentation of those commands is left untouched, we should
  probably move any existing doc into the driver documentation itself.
  testpmd documentation could then have a generic
  "Driver specific commands" section pointing at all other driver docs.

Opinions?


-- 
David Marchand

Changes since RFC v1:
- added a cleanup as patch 1, to make all parser symbols static,
- fixed registering issue in patch 1,
- moved more i40e specific commands, fixed checkpatch warnings,

David Marchand (5):
  app/testpmd: mark cmdline symbols as static
  app/testpmd: register driver specific commands
  net/bonding: move testpmd commands
  net/i40e: move testpmd commands
  net/ixgbe: move testpmd commands

 app/test-pmd/cmdline.c                     | 15402 +++++++------------
 app/test-pmd/config.c                      |    43 -
 app/test-pmd/meson.build                   |     8 +-
 app/test-pmd/testpmd.c                     |    18 +-
 app/test-pmd/testpmd.h                     |    23 +-
 drivers/meson.build                        |     5 +
 drivers/net/bonding/meson.build            |     1 +
 drivers/net/bonding/rte_eth_bond_testpmd.c |  1037 ++
 drivers/net/i40e/i40e_testpmd.c            |  2718 ++++
 drivers/net/i40e/meson.build               |     2 +
 drivers/net/ixgbe/ixgbe_testpmd.c          |  1147 ++
 drivers/net/ixgbe/meson.build              |     2 +
 meson.build                                |     2 +
 13 files changed, 10272 insertions(+), 10136 deletions(-)
 create mode 100644 drivers/net/bonding/rte_eth_bond_testpmd.c
 create mode 100644 drivers/net/i40e/i40e_testpmd.c
 create mode 100644 drivers/net/ixgbe/ixgbe_testpmd.c

-- 
2.36.1


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

* [RFC PATCH v2 1/5] app/testpmd: mark cmdline symbols as static
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
@ 2022-05-18 19:46   ` David Marchand
  2022-05-20  6:28     ` Andrew Rybchenko
  2022-05-18 19:46   ` [RFC PATCH v2 2/5] app/testpmd: register driver specific commands David Marchand
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: David Marchand @ 2022-05-18 19:46 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang

All those symbols don't need to be global, plus it hides unused code
such as cmd_set_conntrack_dir_set and cmd_set_conntrack_dir_conntrack
tokens.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c | 2776 ++++++++++++++++++++--------------------
 1 file changed, 1385 insertions(+), 1391 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 91e4090582..498fe2c2b7 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -99,10 +99,10 @@ static void cmd_help_brief_parsed(__rte_unused void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_help_brief_help =
+static cmdline_parse_token_string_t cmd_help_brief_help =
 	TOKEN_STRING_INITIALIZER(struct cmd_help_brief_result, help, "help");
 
-cmdline_parse_inst_t cmd_help_brief = {
+static cmdline_parse_inst_t cmd_help_brief = {
 	.f = cmd_help_brief_parsed,
 	.data = NULL,
 	.help_str = "help: Show help",
@@ -1179,15 +1179,15 @@ static void cmd_help_long_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_help_long_help =
+static cmdline_parse_token_string_t cmd_help_long_help =
 	TOKEN_STRING_INITIALIZER(struct cmd_help_long_result, help, "help");
 
-cmdline_parse_token_string_t cmd_help_long_section =
+static cmdline_parse_token_string_t cmd_help_long_section =
 	TOKEN_STRING_INITIALIZER(struct cmd_help_long_result, section,
 			"all#control#display#config#"
 			"ports#registers#filters#traffic_management#devices");
 
-cmdline_parse_inst_t cmd_help_long = {
+static cmdline_parse_inst_t cmd_help_long = {
 	.f = cmd_help_long_parsed,
 	.data = NULL,
 	.help_str = "help all|control|display|config|ports|register|"
@@ -1226,16 +1226,16 @@ static void cmd_operate_port_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown parameter\n");
 }
 
-cmdline_parse_token_string_t cmd_operate_port_all_cmd =
+static cmdline_parse_token_string_t cmd_operate_port_all_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_port_result, keyword,
 								"port");
-cmdline_parse_token_string_t cmd_operate_port_all_port =
+static cmdline_parse_token_string_t cmd_operate_port_all_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_port_result, name,
 						"start#stop#close#reset");
-cmdline_parse_token_string_t cmd_operate_port_all_all =
+static cmdline_parse_token_string_t cmd_operate_port_all_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_port_result, value, "all");
 
-cmdline_parse_inst_t cmd_operate_port = {
+static cmdline_parse_inst_t cmd_operate_port = {
 	.f = cmd_operate_port_parsed,
 	.data = NULL,
 	.help_str = "port start|stop|close|reset all: Start/Stop/Close/Reset all ports",
@@ -1272,17 +1272,17 @@ static void cmd_operate_specific_port_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown parameter\n");
 }
 
-cmdline_parse_token_string_t cmd_operate_specific_port_cmd =
+static cmdline_parse_token_string_t cmd_operate_specific_port_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_specific_port_result,
 							keyword, "port");
-cmdline_parse_token_string_t cmd_operate_specific_port_port =
+static cmdline_parse_token_string_t cmd_operate_specific_port_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_specific_port_result,
 						name, "start#stop#close#reset");
-cmdline_parse_token_num_t cmd_operate_specific_port_id =
+static cmdline_parse_token_num_t cmd_operate_specific_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_operate_specific_port_result,
 							value, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_operate_specific_port = {
+static cmdline_parse_inst_t cmd_operate_specific_port = {
 	.f = cmd_operate_specific_port_parsed,
 	.data = NULL,
 	.help_str = "port start|stop|close|reset <port_id>: Start/Stop/Close/Reset port_id",
@@ -1317,23 +1317,23 @@ static void cmd_set_port_setup_on_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown mode\n");
 }
 
-cmdline_parse_token_string_t cmd_set_port_setup_on_set =
+static cmdline_parse_token_string_t cmd_set_port_setup_on_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_port_setup_on_result,
 			set, "set");
-cmdline_parse_token_string_t cmd_set_port_setup_on_port =
+static cmdline_parse_token_string_t cmd_set_port_setup_on_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_port_setup_on_result,
 			port, "port");
-cmdline_parse_token_string_t cmd_set_port_setup_on_setup =
+static cmdline_parse_token_string_t cmd_set_port_setup_on_setup =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_port_setup_on_result,
 			setup, "setup");
-cmdline_parse_token_string_t cmd_set_port_setup_on_on =
+static cmdline_parse_token_string_t cmd_set_port_setup_on_on =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_port_setup_on_result,
 			on, "on");
-cmdline_parse_token_string_t cmd_set_port_setup_on_mode =
+static cmdline_parse_token_string_t cmd_set_port_setup_on_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_port_setup_on_result,
 			mode, "iterator#event");
 
-cmdline_parse_inst_t cmd_set_port_setup_on = {
+static cmdline_parse_inst_t cmd_set_port_setup_on = {
 	.f = cmd_set_port_setup_on_parsed,
 	.data = NULL,
 	.help_str = "set port setup on iterator|event",
@@ -1366,17 +1366,17 @@ static void cmd_operate_attach_port_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown parameter\n");
 }
 
-cmdline_parse_token_string_t cmd_operate_attach_port_port =
+static cmdline_parse_token_string_t cmd_operate_attach_port_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_attach_port_result,
 			port, "port");
-cmdline_parse_token_string_t cmd_operate_attach_port_keyword =
+static cmdline_parse_token_string_t cmd_operate_attach_port_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_attach_port_result,
 			keyword, "attach");
-cmdline_parse_token_string_t cmd_operate_attach_port_identifier =
+static cmdline_parse_token_string_t cmd_operate_attach_port_identifier =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_attach_port_result,
 			identifier, TOKEN_STRING_MULTI);
 
-cmdline_parse_inst_t cmd_operate_attach_port = {
+static cmdline_parse_inst_t cmd_operate_attach_port = {
 	.f = cmd_operate_attach_port_parsed,
 	.data = NULL,
 	.help_str = "port attach <identifier>: "
@@ -1410,17 +1410,17 @@ static void cmd_operate_detach_port_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_operate_detach_port_port =
+static cmdline_parse_token_string_t cmd_operate_detach_port_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_detach_port_result,
 			port, "port");
-cmdline_parse_token_string_t cmd_operate_detach_port_keyword =
+static cmdline_parse_token_string_t cmd_operate_detach_port_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_detach_port_result,
 			keyword, "detach");
-cmdline_parse_token_num_t cmd_operate_detach_port_port_id =
+static cmdline_parse_token_num_t cmd_operate_detach_port_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_operate_detach_port_result,
 			port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_operate_detach_port = {
+static cmdline_parse_inst_t cmd_operate_detach_port = {
 	.f = cmd_operate_detach_port_parsed,
 	.data = NULL,
 	.help_str = "port detach <port_id>",
@@ -1451,17 +1451,17 @@ static void cmd_operate_detach_device_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown parameter\n");
 }
 
-cmdline_parse_token_string_t cmd_operate_detach_device_device =
+static cmdline_parse_token_string_t cmd_operate_detach_device_device =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_detach_device_result,
 			device, "device");
-cmdline_parse_token_string_t cmd_operate_detach_device_keyword =
+static cmdline_parse_token_string_t cmd_operate_detach_device_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_detach_device_result,
 			keyword, "detach");
-cmdline_parse_token_string_t cmd_operate_detach_device_identifier =
+static cmdline_parse_token_string_t cmd_operate_detach_device_identifier =
 	TOKEN_STRING_INITIALIZER(struct cmd_operate_detach_device_result,
 			identifier, NULL);
 
-cmdline_parse_inst_t cmd_operate_detach_device = {
+static cmdline_parse_inst_t cmd_operate_detach_device = {
 	.f = cmd_operate_detach_device_parsed,
 	.data = NULL,
 	.help_str = "device detach <identifier>:"
@@ -1565,25 +1565,25 @@ cmd_config_speed_all_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_speed_all_port =
+static cmdline_parse_token_string_t cmd_config_speed_all_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, port, "port");
-cmdline_parse_token_string_t cmd_config_speed_all_keyword =
+static cmdline_parse_token_string_t cmd_config_speed_all_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, keyword,
 							"config");
-cmdline_parse_token_string_t cmd_config_speed_all_all =
+static cmdline_parse_token_string_t cmd_config_speed_all_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, all, "all");
-cmdline_parse_token_string_t cmd_config_speed_all_item1 =
+static cmdline_parse_token_string_t cmd_config_speed_all_item1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item1, "speed");
-cmdline_parse_token_string_t cmd_config_speed_all_value1 =
+static cmdline_parse_token_string_t cmd_config_speed_all_value1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, value1,
 				"10#100#1000#10000#25000#40000#50000#100000#200000#auto");
-cmdline_parse_token_string_t cmd_config_speed_all_item2 =
+static cmdline_parse_token_string_t cmd_config_speed_all_item2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, item2, "duplex");
-cmdline_parse_token_string_t cmd_config_speed_all_value2 =
+static cmdline_parse_token_string_t cmd_config_speed_all_value2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_all, value2,
 						"half#full#auto");
 
-cmdline_parse_inst_t cmd_config_speed_all = {
+static cmdline_parse_inst_t cmd_config_speed_all = {
 	.f = cmd_config_speed_all_parsed,
 	.data = NULL,
 	.help_str = "port config all speed "
@@ -1638,28 +1638,28 @@ cmd_config_speed_specific_parsed(void *parsed_result,
 }
 
 
-cmdline_parse_token_string_t cmd_config_speed_specific_port =
+static cmdline_parse_token_string_t cmd_config_speed_specific_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, port,
 								"port");
-cmdline_parse_token_string_t cmd_config_speed_specific_keyword =
+static cmdline_parse_token_string_t cmd_config_speed_specific_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, keyword,
 								"config");
-cmdline_parse_token_num_t cmd_config_speed_specific_id =
+static cmdline_parse_token_num_t cmd_config_speed_specific_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_speed_specific, id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_speed_specific_item1 =
+static cmdline_parse_token_string_t cmd_config_speed_specific_item1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, item1,
 								"speed");
-cmdline_parse_token_string_t cmd_config_speed_specific_value1 =
+static cmdline_parse_token_string_t cmd_config_speed_specific_value1 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, value1,
 				"10#100#1000#10000#25000#40000#50000#100000#200000#auto");
-cmdline_parse_token_string_t cmd_config_speed_specific_item2 =
+static cmdline_parse_token_string_t cmd_config_speed_specific_item2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, item2,
 								"duplex");
-cmdline_parse_token_string_t cmd_config_speed_specific_value2 =
+static cmdline_parse_token_string_t cmd_config_speed_specific_value2 =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_speed_specific, value2,
 							"half#full#auto");
 
-cmdline_parse_inst_t cmd_config_speed_specific = {
+static cmdline_parse_inst_t cmd_config_speed_specific = {
 	.f = cmd_config_speed_specific_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> speed "
@@ -1706,20 +1706,20 @@ cmd_config_loopback_all_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_loopback_all_port =
+static cmdline_parse_token_string_t cmd_config_loopback_all_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_all, port, "port");
-cmdline_parse_token_string_t cmd_config_loopback_all_keyword =
+static cmdline_parse_token_string_t cmd_config_loopback_all_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_all, keyword,
 							"config");
-cmdline_parse_token_string_t cmd_config_loopback_all_all =
+static cmdline_parse_token_string_t cmd_config_loopback_all_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_all, all, "all");
-cmdline_parse_token_string_t cmd_config_loopback_all_item =
+static cmdline_parse_token_string_t cmd_config_loopback_all_item =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_all, item,
 							"loopback");
-cmdline_parse_token_num_t cmd_config_loopback_all_mode =
+static cmdline_parse_token_num_t cmd_config_loopback_all_mode =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_loopback_all, mode, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_config_loopback_all = {
+static cmdline_parse_inst_t cmd_config_loopback_all = {
 	.f = cmd_config_loopback_all_parsed,
 	.data = NULL,
 	.help_str = "port config all loopback <mode>",
@@ -1763,23 +1763,23 @@ cmd_config_loopback_specific_parsed(void *parsed_result,
 }
 
 
-cmdline_parse_token_string_t cmd_config_loopback_specific_port =
+static cmdline_parse_token_string_t cmd_config_loopback_specific_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_specific, port,
 								"port");
-cmdline_parse_token_string_t cmd_config_loopback_specific_keyword =
+static cmdline_parse_token_string_t cmd_config_loopback_specific_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_specific, keyword,
 								"config");
-cmdline_parse_token_num_t cmd_config_loopback_specific_id =
+static cmdline_parse_token_num_t cmd_config_loopback_specific_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_loopback_specific, port_id,
 								RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_loopback_specific_item =
+static cmdline_parse_token_string_t cmd_config_loopback_specific_item =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_loopback_specific, item,
 								"loopback");
-cmdline_parse_token_num_t cmd_config_loopback_specific_mode =
+static cmdline_parse_token_num_t cmd_config_loopback_specific_mode =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_loopback_specific, mode,
 			      RTE_UINT32);
 
-cmdline_parse_inst_t cmd_config_loopback_specific = {
+static cmdline_parse_inst_t cmd_config_loopback_specific = {
 	.f = cmd_config_loopback_specific_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> loopback <mode>",
@@ -1852,19 +1852,19 @@ cmd_config_rx_tx_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_rx_tx_port =
+static cmdline_parse_token_string_t cmd_config_rx_tx_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_tx, port, "port");
-cmdline_parse_token_string_t cmd_config_rx_tx_keyword =
+static cmdline_parse_token_string_t cmd_config_rx_tx_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_tx, keyword, "config");
-cmdline_parse_token_string_t cmd_config_rx_tx_all =
+static cmdline_parse_token_string_t cmd_config_rx_tx_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_tx, all, "all");
-cmdline_parse_token_string_t cmd_config_rx_tx_name =
+static cmdline_parse_token_string_t cmd_config_rx_tx_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_tx, name,
 						"rxq#txq#rxd#txd");
-cmdline_parse_token_num_t cmd_config_rx_tx_value =
+static cmdline_parse_token_num_t cmd_config_rx_tx_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rx_tx, value, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_config_rx_tx = {
+static cmdline_parse_inst_t cmd_config_rx_tx = {
 	.f = cmd_config_rx_tx_parsed,
 	.data = NULL,
 	.help_str = "port config all rxq|txq|rxd|txd <value>",
@@ -1932,23 +1932,23 @@ cmd_config_max_pkt_len_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_max_pkt_len_port =
+static cmdline_parse_token_string_t cmd_config_max_pkt_len_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_pkt_len_result, port,
 								"port");
-cmdline_parse_token_string_t cmd_config_max_pkt_len_keyword =
+static cmdline_parse_token_string_t cmd_config_max_pkt_len_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_pkt_len_result, keyword,
 								"config");
-cmdline_parse_token_string_t cmd_config_max_pkt_len_all =
+static cmdline_parse_token_string_t cmd_config_max_pkt_len_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_pkt_len_result, all,
 								"all");
-cmdline_parse_token_string_t cmd_config_max_pkt_len_name =
+static cmdline_parse_token_string_t cmd_config_max_pkt_len_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_pkt_len_result, name,
 								"max-pkt-len");
-cmdline_parse_token_num_t cmd_config_max_pkt_len_value =
+static cmdline_parse_token_num_t cmd_config_max_pkt_len_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_max_pkt_len_result, value,
 								RTE_UINT32);
 
-cmdline_parse_inst_t cmd_config_max_pkt_len = {
+static cmdline_parse_inst_t cmd_config_max_pkt_len = {
 	.f = cmd_config_max_pkt_len_parsed,
 	.data = NULL,
 	.help_str = "port config all max-pkt-len <value>",
@@ -2004,23 +2004,23 @@ cmd_config_max_lro_pkt_size_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_port =
+static cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_lro_pkt_size_result,
 				 port, "port");
-cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_keyword =
+static cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_lro_pkt_size_result,
 				 keyword, "config");
-cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_all =
+static cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_lro_pkt_size_result,
 				 all, "all");
-cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_name =
+static cmdline_parse_token_string_t cmd_config_max_lro_pkt_size_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_max_lro_pkt_size_result,
 				 name, "max-lro-pkt-size");
-cmdline_parse_token_num_t cmd_config_max_lro_pkt_size_value =
+static cmdline_parse_token_num_t cmd_config_max_lro_pkt_size_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_max_lro_pkt_size_result,
 			      value, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_config_max_lro_pkt_size = {
+static cmdline_parse_inst_t cmd_config_max_lro_pkt_size = {
 	.f = cmd_config_max_lro_pkt_size_parsed,
 	.data = NULL,
 	.help_str = "port config all max-lro-pkt-size <value>",
@@ -2053,23 +2053,23 @@ cmd_config_mtu_parsed(void *parsed_result,
 	port_mtu_set(res->port_id, res->value);
 }
 
-cmdline_parse_token_string_t cmd_config_mtu_port =
+static cmdline_parse_token_string_t cmd_config_mtu_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, port,
 				 "port");
-cmdline_parse_token_string_t cmd_config_mtu_keyword =
+static cmdline_parse_token_string_t cmd_config_mtu_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, keyword,
 				 "config");
-cmdline_parse_token_string_t cmd_config_mtu_mtu =
+static cmdline_parse_token_string_t cmd_config_mtu_mtu =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_mtu_result, keyword,
 				 "mtu");
-cmdline_parse_token_num_t cmd_config_mtu_port_id =
+static cmdline_parse_token_num_t cmd_config_mtu_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_mtu_result, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_num_t cmd_config_mtu_value =
+static cmdline_parse_token_num_t cmd_config_mtu_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_mtu_result, value,
 				 RTE_UINT16);
 
-cmdline_parse_inst_t cmd_config_mtu = {
+static cmdline_parse_inst_t cmd_config_mtu = {
 	.f = cmd_config_mtu_parsed,
 	.data = NULL,
 	.help_str = "port config mtu <port_id> <value>",
@@ -2123,21 +2123,21 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_rx_mode_flag_port =
+static cmdline_parse_token_string_t cmd_config_rx_mode_flag_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, port, "port");
-cmdline_parse_token_string_t cmd_config_rx_mode_flag_keyword =
+static cmdline_parse_token_string_t cmd_config_rx_mode_flag_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, keyword,
 								"config");
-cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
+static cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, all, "all");
-cmdline_parse_token_string_t cmd_config_rx_mode_flag_name =
+static cmdline_parse_token_string_t cmd_config_rx_mode_flag_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, name,
 					"drop-en");
-cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
+static cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, value,
 							"on#off");
 
-cmdline_parse_inst_t cmd_config_rx_mode_flag = {
+static cmdline_parse_inst_t cmd_config_rx_mode_flag = {
 	.f = cmd_config_rx_mode_flag_parsed,
 	.data = NULL,
 	.help_str = "port config all drop-en on|off",
@@ -2300,18 +2300,18 @@ cmd_config_rss_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_config_rss_port =
+static cmdline_parse_token_string_t cmd_config_rss_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss, port, "port");
-cmdline_parse_token_string_t cmd_config_rss_keyword =
+static cmdline_parse_token_string_t cmd_config_rss_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss, keyword, "config");
-cmdline_parse_token_string_t cmd_config_rss_all =
+static cmdline_parse_token_string_t cmd_config_rss_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss, all, "all");
-cmdline_parse_token_string_t cmd_config_rss_name =
+static cmdline_parse_token_string_t cmd_config_rss_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss, name, "rss");
-cmdline_parse_token_string_t cmd_config_rss_value =
+static cmdline_parse_token_string_t cmd_config_rss_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss, value, NULL);
 
-cmdline_parse_inst_t cmd_config_rss = {
+static cmdline_parse_inst_t cmd_config_rss = {
 	.f = cmd_config_rss_parsed,
 	.data = NULL,
 	.help_str = "port config all rss "
@@ -2413,18 +2413,18 @@ cmd_config_rss_hash_key_parsed(void *parsed_result,
 			hash_key_size);
 }
 
-cmdline_parse_token_string_t cmd_config_rss_hash_key_port =
+static cmdline_parse_token_string_t cmd_config_rss_hash_key_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, port, "port");
-cmdline_parse_token_string_t cmd_config_rss_hash_key_config =
+static cmdline_parse_token_string_t cmd_config_rss_hash_key_config =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, config,
 				 "config");
-cmdline_parse_token_num_t cmd_config_rss_hash_key_port_id =
+static cmdline_parse_token_num_t cmd_config_rss_hash_key_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rss_hash_key, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_hash_key =
+static cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_hash_key =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key,
 				 rss_hash_key, "rss-hash-key");
-cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type =
+static cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, rss_type,
 				 "ipv4#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#"
 				 "ipv4-other#ipv6#ipv6-frag#ipv6-tcp#ipv6-udp#"
@@ -2433,10 +2433,10 @@ cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type =
 				 "l3-src-only#l3-dst-only#l4-src-only#l4-dst-only#"
 				 "l2-src-only#l2-dst-only#s-vlan#c-vlan#"
 				 "l2tpv3#esp#ah#pfcp#pppoe#gtpu#ecpri#mpls#l2tpv2");
-cmdline_parse_token_string_t cmd_config_rss_hash_key_value =
+static cmdline_parse_token_string_t cmd_config_rss_hash_key_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, NULL);
 
-cmdline_parse_inst_t cmd_config_rss_hash_key = {
+static cmdline_parse_inst_t cmd_config_rss_hash_key = {
 	.f = cmd_config_rss_hash_key_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> rss-hash-key "
@@ -2508,26 +2508,26 @@ cmd_cleanup_txq_mbufs_parsed(void *parsed_result,
 	       port_id, queue_id, ret);
 }
 
-cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_port =
+static cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, port,
 				 "port");
-cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_cleanup =
+static cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_cleanup =
 	TOKEN_STRING_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, keyword,
 				 "cleanup");
-cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_port_id =
+static cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, port_id,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_txq =
+static cmdline_parse_token_string_t cmd_cleanup_txq_mbufs_txq =
 	TOKEN_STRING_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, name,
 				 "txq");
-cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_queue_id =
+static cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_queue_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, queue_id,
 			      RTE_UINT16);
-cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_free_cnt =
+static cmdline_parse_token_num_t cmd_cleanup_txq_mbufs_free_cnt =
 	TOKEN_NUM_INITIALIZER(struct cmd_cleanup_txq_mbufs_result, free_cnt,
 			      RTE_UINT32);
 
-cmdline_parse_inst_t cmd_cleanup_txq_mbufs = {
+static cmdline_parse_inst_t cmd_cleanup_txq_mbufs = {
 	.f = cmd_cleanup_txq_mbufs_parsed,
 	.data = NULL,
 	.help_str = "port cleanup <port_id> txq <queue_id> <free_cnt>",
@@ -2601,29 +2601,29 @@ cmd_config_rxtx_ring_size_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->portid, 0, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_rxtx_ring_size_port =
+static cmdline_parse_token_string_t cmd_config_rxtx_ring_size_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_ring_size,
 				 port, "port");
-cmdline_parse_token_string_t cmd_config_rxtx_ring_size_config =
+static cmdline_parse_token_string_t cmd_config_rxtx_ring_size_config =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_ring_size,
 				 config, "config");
-cmdline_parse_token_num_t cmd_config_rxtx_ring_size_portid =
+static cmdline_parse_token_num_t cmd_config_rxtx_ring_size_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rxtx_ring_size,
 				 portid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rxtx_ring_size_rxtxq =
+static cmdline_parse_token_string_t cmd_config_rxtx_ring_size_rxtxq =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_ring_size,
 				 rxtxq, "rxq#txq");
-cmdline_parse_token_num_t cmd_config_rxtx_ring_size_qid =
+static cmdline_parse_token_num_t cmd_config_rxtx_ring_size_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rxtx_ring_size,
 			      qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rxtx_ring_size_rsize =
+static cmdline_parse_token_string_t cmd_config_rxtx_ring_size_rsize =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_ring_size,
 				 rsize, "ring_size");
-cmdline_parse_token_num_t cmd_config_rxtx_ring_size_size =
+static cmdline_parse_token_num_t cmd_config_rxtx_ring_size_size =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rxtx_ring_size,
 			      size, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_config_rxtx_ring_size = {
+static cmdline_parse_inst_t cmd_config_rxtx_ring_size = {
 	.f = cmd_config_rxtx_ring_size_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> rxq|txq <queue_id> ring_size <value>",
@@ -2707,19 +2707,19 @@ cmd_config_rxtx_queue_parsed(void *parsed_result,
 		fprintf(stderr, "Function not supported in PMD\n");
 }
 
-cmdline_parse_token_string_t cmd_config_rxtx_queue_port =
+static cmdline_parse_token_string_t cmd_config_rxtx_queue_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_queue, port, "port");
-cmdline_parse_token_num_t cmd_config_rxtx_queue_portid =
+static cmdline_parse_token_num_t cmd_config_rxtx_queue_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rxtx_queue, portid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rxtx_queue_rxtxq =
+static cmdline_parse_token_string_t cmd_config_rxtx_queue_rxtxq =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_queue, rxtxq, "rxq#txq");
-cmdline_parse_token_num_t cmd_config_rxtx_queue_qid =
+static cmdline_parse_token_num_t cmd_config_rxtx_queue_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rxtx_queue, qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rxtx_queue_opname =
+static cmdline_parse_token_string_t cmd_config_rxtx_queue_opname =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rxtx_queue, opname,
 						"start#stop");
 
-cmdline_parse_inst_t cmd_config_rxtx_queue = {
+static cmdline_parse_inst_t cmd_config_rxtx_queue = {
 	.f = cmd_config_rxtx_queue_parsed,
 	.data = NULL,
 	.help_str = "port <port_id> rxq|txq <queue_id> start|stop",
@@ -2785,26 +2785,26 @@ cmd_config_deferred_start_rxtx_queue_parsed(void *parsed_result,
 		cmd_reconfig_device_queue(res->port_id, 0, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_port =
+static cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						port, "port");
-cmdline_parse_token_num_t cmd_config_deferred_start_rxtx_queue_port_id =
+static cmdline_parse_token_num_t cmd_config_deferred_start_rxtx_queue_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_rxtxq =
+static cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_rxtxq =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						rxtxq, "rxq#txq");
-cmdline_parse_token_num_t cmd_config_deferred_start_rxtx_queue_qid =
+static cmdline_parse_token_num_t cmd_config_deferred_start_rxtx_queue_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_opname =
+static cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_opname =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						opname, "deferred_start");
-cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_state =
+static cmdline_parse_token_string_t cmd_config_deferred_start_rxtx_queue_state =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_deferred_start_rxtx_queue,
 						state, "on#off");
 
-cmdline_parse_inst_t cmd_config_deferred_start_rxtx_queue = {
+static cmdline_parse_inst_t cmd_config_deferred_start_rxtx_queue = {
 	.f = cmd_config_deferred_start_rxtx_queue_parsed,
 	.data = NULL,
 	.help_str = "port <port_id> rxq|txq <queue_id> deferred_start on|off",
@@ -2829,15 +2829,15 @@ struct cmd_setup_rxtx_queue {
 };
 
 /* Common CLI fields for queue setup */
-cmdline_parse_token_string_t cmd_setup_rxtx_queue_port =
+static cmdline_parse_token_string_t cmd_setup_rxtx_queue_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_setup_rxtx_queue, port, "port");
-cmdline_parse_token_num_t cmd_setup_rxtx_queue_portid =
+static cmdline_parse_token_num_t cmd_setup_rxtx_queue_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_setup_rxtx_queue, portid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setup_rxtx_queue_rxtxq =
+static cmdline_parse_token_string_t cmd_setup_rxtx_queue_rxtxq =
 	TOKEN_STRING_INITIALIZER(struct cmd_setup_rxtx_queue, rxtxq, "rxq#txq");
-cmdline_parse_token_num_t cmd_setup_rxtx_queue_qid =
+static cmdline_parse_token_num_t cmd_setup_rxtx_queue_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_setup_rxtx_queue, qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setup_rxtx_queue_setup =
+static cmdline_parse_token_string_t cmd_setup_rxtx_queue_setup =
 	TOKEN_STRING_INITIALIZER(struct cmd_setup_rxtx_queue, setup, "setup");
 
 static void
@@ -2919,7 +2919,7 @@ cmd_setup_rxtx_queue_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_setup_rxtx_queue = {
+static cmdline_parse_inst_t cmd_setup_rxtx_queue = {
 	.f = cmd_setup_rxtx_queue_parsed,
 	.data = NULL,
 	.help_str = "port <port_id> rxq|txq <queue_idx> setup",
@@ -3047,20 +3047,20 @@ cmd_set_rss_reta_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_config_rss_reta_port =
+static cmdline_parse_token_string_t cmd_config_rss_reta_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_reta, port, "port");
-cmdline_parse_token_string_t cmd_config_rss_reta_keyword =
+static cmdline_parse_token_string_t cmd_config_rss_reta_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_reta, keyword, "config");
-cmdline_parse_token_num_t cmd_config_rss_reta_port_id =
+static cmdline_parse_token_num_t cmd_config_rss_reta_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_rss_reta, port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_rss_reta_name =
+static cmdline_parse_token_string_t cmd_config_rss_reta_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_reta, name, "rss");
-cmdline_parse_token_string_t cmd_config_rss_reta_list_name =
+static cmdline_parse_token_string_t cmd_config_rss_reta_list_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_rss_reta, list_name, "reta");
-cmdline_parse_token_string_t cmd_config_rss_reta_list_of_items =
+static cmdline_parse_token_string_t cmd_config_rss_reta_list_of_items =
         TOKEN_STRING_INITIALIZER(struct cmd_config_rss_reta, list_of_items,
                                  NULL);
-cmdline_parse_inst_t cmd_config_rss_reta = {
+static cmdline_parse_inst_t cmd_config_rss_reta = {
 	.f = cmd_set_rss_reta_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> rss reta <hash,queue[,hash,queue]*>",
@@ -3160,23 +3160,23 @@ cmd_showport_reta_parsed(void *parsed_result,
 	port_rss_reta_info(res->port_id, reta_conf, res->size);
 }
 
-cmdline_parse_token_string_t cmd_showport_reta_show =
+static cmdline_parse_token_string_t cmd_showport_reta_show =
 	TOKEN_STRING_INITIALIZER(struct  cmd_showport_reta, show, "show");
-cmdline_parse_token_string_t cmd_showport_reta_port =
+static cmdline_parse_token_string_t cmd_showport_reta_port =
 	TOKEN_STRING_INITIALIZER(struct  cmd_showport_reta, port, "port");
-cmdline_parse_token_num_t cmd_showport_reta_port_id =
+static cmdline_parse_token_num_t cmd_showport_reta_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_showport_reta, port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_showport_reta_rss =
+static cmdline_parse_token_string_t cmd_showport_reta_rss =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_reta, rss, "rss");
-cmdline_parse_token_string_t cmd_showport_reta_reta =
+static cmdline_parse_token_string_t cmd_showport_reta_reta =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_reta, reta, "reta");
-cmdline_parse_token_num_t cmd_showport_reta_size =
+static cmdline_parse_token_num_t cmd_showport_reta_size =
 	TOKEN_NUM_INITIALIZER(struct cmd_showport_reta, size, RTE_UINT16);
-cmdline_parse_token_string_t cmd_showport_reta_list_of_items =
+static cmdline_parse_token_string_t cmd_showport_reta_list_of_items =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_reta,
 					list_of_items, NULL);
 
-cmdline_parse_inst_t cmd_showport_reta = {
+static cmdline_parse_inst_t cmd_showport_reta = {
 	.f = cmd_showport_reta_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rss reta <size> <mask0[,mask1]*>",
@@ -3211,20 +3211,20 @@ static void cmd_showport_rss_hash_parsed(void *parsed_result,
 	port_rss_hash_conf_show(res->port_id, show_rss_key != NULL);
 }
 
-cmdline_parse_token_string_t cmd_showport_rss_hash_show =
+static cmdline_parse_token_string_t cmd_showport_rss_hash_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, show, "show");
-cmdline_parse_token_string_t cmd_showport_rss_hash_port =
+static cmdline_parse_token_string_t cmd_showport_rss_hash_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, port, "port");
-cmdline_parse_token_num_t cmd_showport_rss_hash_port_id =
+static cmdline_parse_token_num_t cmd_showport_rss_hash_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_showport_rss_hash, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
+static cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_hash,
 				 "rss-hash");
-cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
+static cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key");
 
-cmdline_parse_inst_t cmd_showport_rss_hash = {
+static cmdline_parse_inst_t cmd_showport_rss_hash = {
 	.f = cmd_showport_rss_hash_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rss-hash",
@@ -3237,7 +3237,7 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
 	},
 };
 
-cmdline_parse_inst_t cmd_showport_rss_hash_key = {
+static cmdline_parse_inst_t cmd_showport_rss_hash_key = {
 	.f = cmd_showport_rss_hash_parsed,
 	.data = (void *)1,
 	.help_str = "show port <port_id> rss-hash key",
@@ -3326,26 +3326,26 @@ cmd_config_dcb_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_dcb_port =
+static cmdline_parse_token_string_t cmd_config_dcb_port =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, port, "port");
-cmdline_parse_token_string_t cmd_config_dcb_config =
+static cmdline_parse_token_string_t cmd_config_dcb_config =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, config, "config");
-cmdline_parse_token_num_t cmd_config_dcb_port_id =
+static cmdline_parse_token_num_t cmd_config_dcb_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_dcb, port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_dcb_dcb =
+static cmdline_parse_token_string_t cmd_config_dcb_dcb =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, dcb, "dcb");
-cmdline_parse_token_string_t cmd_config_dcb_vt =
+static cmdline_parse_token_string_t cmd_config_dcb_vt =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, vt, "vt");
-cmdline_parse_token_string_t cmd_config_dcb_vt_en =
+static cmdline_parse_token_string_t cmd_config_dcb_vt_en =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, vt_en, "on#off");
-cmdline_parse_token_num_t cmd_config_dcb_num_tcs =
+static cmdline_parse_token_num_t cmd_config_dcb_num_tcs =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_dcb, num_tcs, RTE_UINT8);
-cmdline_parse_token_string_t cmd_config_dcb_pfc=
+static cmdline_parse_token_string_t cmd_config_dcb_pfc =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, pfc, "pfc");
-cmdline_parse_token_string_t cmd_config_dcb_pfc_en =
+static cmdline_parse_token_string_t cmd_config_dcb_pfc_en =
         TOKEN_STRING_INITIALIZER(struct cmd_config_dcb, pfc_en, "on#off");
 
-cmdline_parse_inst_t cmd_config_dcb = {
+static cmdline_parse_inst_t cmd_config_dcb = {
 	.f = cmd_config_dcb_parsed,
 	.data = NULL,
 	.help_str = "port config <port-id> dcb vt on|off <num_tcs> pfc on|off",
@@ -3430,18 +3430,18 @@ cmd_config_burst_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_burst_port =
+static cmdline_parse_token_string_t cmd_config_burst_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_burst, port, "port");
-cmdline_parse_token_string_t cmd_config_burst_keyword =
+static cmdline_parse_token_string_t cmd_config_burst_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_burst, keyword, "config");
-cmdline_parse_token_string_t cmd_config_burst_all =
+static cmdline_parse_token_string_t cmd_config_burst_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_burst, all, "all");
-cmdline_parse_token_string_t cmd_config_burst_name =
+static cmdline_parse_token_string_t cmd_config_burst_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_burst, name, "burst");
-cmdline_parse_token_num_t cmd_config_burst_value =
+static cmdline_parse_token_num_t cmd_config_burst_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_burst, value, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_config_burst = {
+static cmdline_parse_inst_t cmd_config_burst = {
 	.f = cmd_config_burst_parsed,
 	.data = NULL,
 	.help_str = "port config all burst <value>",
@@ -3498,19 +3498,19 @@ cmd_config_thresh_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_thresh_port =
+static cmdline_parse_token_string_t cmd_config_thresh_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_thresh, port, "port");
-cmdline_parse_token_string_t cmd_config_thresh_keyword =
+static cmdline_parse_token_string_t cmd_config_thresh_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_thresh, keyword, "config");
-cmdline_parse_token_string_t cmd_config_thresh_all =
+static cmdline_parse_token_string_t cmd_config_thresh_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_thresh, all, "all");
-cmdline_parse_token_string_t cmd_config_thresh_name =
+static cmdline_parse_token_string_t cmd_config_thresh_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_thresh, name,
 				"txpt#txht#txwt#rxpt#rxht#rxwt");
-cmdline_parse_token_num_t cmd_config_thresh_value =
+static cmdline_parse_token_num_t cmd_config_thresh_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_thresh, value, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_config_thresh = {
+static cmdline_parse_inst_t cmd_config_thresh = {
 	.f = cmd_config_thresh_parsed,
 	.data = NULL,
 	.help_str = "port config all txpt|txht|txwt|rxpt|rxht|rxwt <value>",
@@ -3561,20 +3561,20 @@ cmd_config_threshold_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_config_threshold_port =
+static cmdline_parse_token_string_t cmd_config_threshold_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_threshold, port, "port");
-cmdline_parse_token_string_t cmd_config_threshold_keyword =
+static cmdline_parse_token_string_t cmd_config_threshold_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_threshold, keyword,
 								"config");
-cmdline_parse_token_string_t cmd_config_threshold_all =
+static cmdline_parse_token_string_t cmd_config_threshold_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_threshold, all, "all");
-cmdline_parse_token_string_t cmd_config_threshold_name =
+static cmdline_parse_token_string_t cmd_config_threshold_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_threshold, name,
 						"txfreet#txrst#rxfreet");
-cmdline_parse_token_num_t cmd_config_threshold_value =
+static cmdline_parse_token_num_t cmd_config_threshold_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_threshold, value, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_config_threshold = {
+static cmdline_parse_inst_t cmd_config_threshold = {
 	.f = cmd_config_threshold_parsed,
 	.data = NULL,
 	.help_str = "port config all txfreet|txrst|rxfreet <value>",
@@ -3600,10 +3600,10 @@ static void cmd_stop_parsed(__rte_unused void *parsed_result,
 	stop_packet_forwarding();
 }
 
-cmdline_parse_token_string_t cmd_stop_stop =
+static cmdline_parse_token_string_t cmd_stop_stop =
 	TOKEN_STRING_INITIALIZER(struct cmd_stop_result, stop, "stop");
 
-cmdline_parse_inst_t cmd_stop = {
+static cmdline_parse_inst_t cmd_stop = {
 	.f = cmd_stop_parsed,
 	.data = NULL,
 	.help_str = "stop: Stop packet forwarding",
@@ -3724,17 +3724,17 @@ static void cmd_set_list_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_set_list_keyword =
+static cmdline_parse_token_string_t cmd_set_list_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_list_result, cmd_keyword,
 				 "set");
-cmdline_parse_token_string_t cmd_set_list_name =
+static cmdline_parse_token_string_t cmd_set_list_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_list_result, list_name,
 				 "corelist#portlist");
-cmdline_parse_token_string_t cmd_set_list_of_items =
+static cmdline_parse_token_string_t cmd_set_list_of_items =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_list_result, list_of_items,
 				 NULL);
 
-cmdline_parse_inst_t cmd_set_fwd_list = {
+static cmdline_parse_inst_t cmd_set_fwd_list = {
 	.f = cmd_set_list_parsed,
 	.data = NULL,
 	.help_str = "set corelist|portlist <list0[,list1]*>",
@@ -3773,15 +3773,15 @@ static void cmd_set_mask_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_setmask_set =
+static cmdline_parse_token_string_t cmd_setmask_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_setmask_result, set, "set");
-cmdline_parse_token_string_t cmd_setmask_mask =
+static cmdline_parse_token_string_t cmd_setmask_mask =
 	TOKEN_STRING_INITIALIZER(struct cmd_setmask_result, mask,
 				 "coremask#portmask");
-cmdline_parse_token_num_t cmd_setmask_value =
+static cmdline_parse_token_num_t cmd_setmask_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_setmask_result, hexavalue, RTE_UINT64);
 
-cmdline_parse_inst_t cmd_set_fwd_mask = {
+static cmdline_parse_inst_t cmd_set_fwd_mask = {
 	.f = cmd_set_mask_parsed,
 	.data = NULL,
 	.help_str = "set coremask|portmask <hexadecimal value>",
@@ -3819,15 +3819,15 @@ static void cmd_set_parsed(void *parsed_result,
 		set_verbose_level(res->value);
 }
 
-cmdline_parse_token_string_t cmd_set_set =
+static cmdline_parse_token_string_t cmd_set_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_result, set, "set");
-cmdline_parse_token_string_t cmd_set_what =
+static cmdline_parse_token_string_t cmd_set_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_result, what,
 				 "nbport#nbcore#burst#verbose");
-cmdline_parse_token_num_t cmd_set_value =
+static cmdline_parse_token_num_t cmd_set_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_result, value, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_set_numbers = {
+static cmdline_parse_inst_t cmd_set_numbers = {
 	.f = cmd_set_parsed,
 	.data = NULL,
 	.help_str = "set nbport|nbcore|burst|verbose <value>",
@@ -3866,16 +3866,16 @@ cmd_set_log_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_set_log_set =
+static cmdline_parse_token_string_t cmd_set_log_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_log_result, set, "set");
-cmdline_parse_token_string_t cmd_set_log_log =
+static cmdline_parse_token_string_t cmd_set_log_log =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_log_result, log, "log");
-cmdline_parse_token_string_t cmd_set_log_type =
+static cmdline_parse_token_string_t cmd_set_log_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_log_result, type, NULL);
-cmdline_parse_token_num_t cmd_set_log_level =
+static cmdline_parse_token_num_t cmd_set_log_level =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_log_result, level, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_set_log = {
+static cmdline_parse_inst_t cmd_set_log = {
 	.f = cmd_set_log_parsed,
 	.data = NULL,
 	.help_str = "set log global|<type> <level>",
@@ -3913,17 +3913,17 @@ cmd_set_rxoffs_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 0, 1);
 }
 
-cmdline_parse_token_string_t cmd_set_rxoffs_keyword =
+static cmdline_parse_token_string_t cmd_set_rxoffs_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxoffs_result,
 				 cmd_keyword, "set");
-cmdline_parse_token_string_t cmd_set_rxoffs_name =
+static cmdline_parse_token_string_t cmd_set_rxoffs_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxoffs_result,
 				 rxoffs, "rxoffs");
-cmdline_parse_token_string_t cmd_set_rxoffs_offsets =
+static cmdline_parse_token_string_t cmd_set_rxoffs_offsets =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxoffs_result,
 				 seg_offsets, NULL);
 
-cmdline_parse_inst_t cmd_set_rxoffs = {
+static cmdline_parse_inst_t cmd_set_rxoffs = {
 	.f = cmd_set_rxoffs_parsed,
 	.data = NULL,
 	.help_str = "set rxoffs <len0[,len1]*>",
@@ -3960,17 +3960,17 @@ cmd_set_rxpkts_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(RTE_PORT_ALL, 0, 1);
 }
 
-cmdline_parse_token_string_t cmd_set_rxpkts_keyword =
+static cmdline_parse_token_string_t cmd_set_rxpkts_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxpkts_result,
 				 cmd_keyword, "set");
-cmdline_parse_token_string_t cmd_set_rxpkts_name =
+static cmdline_parse_token_string_t cmd_set_rxpkts_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxpkts_result,
 				 rxpkts, "rxpkts");
-cmdline_parse_token_string_t cmd_set_rxpkts_lengths =
+static cmdline_parse_token_string_t cmd_set_rxpkts_lengths =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_rxpkts_result,
 				 seg_lengths, NULL);
 
-cmdline_parse_inst_t cmd_set_rxpkts = {
+static cmdline_parse_inst_t cmd_set_rxpkts = {
 	.f = cmd_set_rxpkts_parsed,
 	.data = NULL,
 	.help_str = "set rxpkts <len0[,len1]*>",
@@ -4006,17 +4006,17 @@ cmd_set_txpkts_parsed(void *parsed_result,
 		set_tx_pkt_segments(seg_lengths, nb_segs);
 }
 
-cmdline_parse_token_string_t cmd_set_txpkts_keyword =
+static cmdline_parse_token_string_t cmd_set_txpkts_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txpkts_result,
 				 cmd_keyword, "set");
-cmdline_parse_token_string_t cmd_set_txpkts_name =
+static cmdline_parse_token_string_t cmd_set_txpkts_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txpkts_result,
 				 txpkts, "txpkts");
-cmdline_parse_token_string_t cmd_set_txpkts_lengths =
+static cmdline_parse_token_string_t cmd_set_txpkts_lengths =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txpkts_result,
 				 seg_lengths, NULL);
 
-cmdline_parse_inst_t cmd_set_txpkts = {
+static cmdline_parse_inst_t cmd_set_txpkts = {
 	.f = cmd_set_txpkts_parsed,
 	.data = NULL,
 	.help_str = "set txpkts <len0[,len1]*>",
@@ -4047,17 +4047,17 @@ cmd_set_txsplit_parsed(void *parsed_result,
 	set_tx_pkt_split(res->mode);
 }
 
-cmdline_parse_token_string_t cmd_set_txsplit_keyword =
+static cmdline_parse_token_string_t cmd_set_txsplit_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txsplit_result,
 				 cmd_keyword, "set");
-cmdline_parse_token_string_t cmd_set_txsplit_name =
+static cmdline_parse_token_string_t cmd_set_txsplit_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txsplit_result,
 				 txsplit, "txsplit");
-cmdline_parse_token_string_t cmd_set_txsplit_mode =
+static cmdline_parse_token_string_t cmd_set_txsplit_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txsplit_result,
 				 mode, NULL);
 
-cmdline_parse_inst_t cmd_set_txsplit = {
+static cmdline_parse_inst_t cmd_set_txsplit = {
 	.f = cmd_set_txsplit_parsed,
 	.data = NULL,
 	.help_str = "set txsplit on|off|rand",
@@ -4093,17 +4093,17 @@ cmd_set_txtimes_parsed(void *parsed_result,
 		set_tx_pkt_times(tx_times);
 }
 
-cmdline_parse_token_string_t cmd_set_txtimes_keyword =
+static cmdline_parse_token_string_t cmd_set_txtimes_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txtimes_result,
 				 cmd_keyword, "set");
-cmdline_parse_token_string_t cmd_set_txtimes_name =
+static cmdline_parse_token_string_t cmd_set_txtimes_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txtimes_result,
 				 txtimes, "txtimes");
-cmdline_parse_token_string_t cmd_set_txtimes_value =
+static cmdline_parse_token_string_t cmd_set_txtimes_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_txtimes_result,
 				 tx_times, NULL);
 
-cmdline_parse_inst_t cmd_set_txtimes = {
+static cmdline_parse_inst_t cmd_set_txtimes = {
 	.f = cmd_set_txtimes_parsed,
 	.data = NULL,
 	.help_str = "set txtimes <inter_burst>,<intra_burst>",
@@ -4136,20 +4136,20 @@ cmd_rx_vlan_filter_all_parsed(void *parsed_result,
 		rx_vlan_all_filter_set(res->port_id, 0);
 }
 
-cmdline_parse_token_string_t cmd_rx_vlan_filter_all_rx_vlan =
+static cmdline_parse_token_string_t cmd_rx_vlan_filter_all_rx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_rx_vlan_filter_all_result,
 				 rx_vlan, "rx_vlan");
-cmdline_parse_token_string_t cmd_rx_vlan_filter_all_what =
+static cmdline_parse_token_string_t cmd_rx_vlan_filter_all_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_rx_vlan_filter_all_result,
 				 what, "add#rm");
-cmdline_parse_token_string_t cmd_rx_vlan_filter_all_all =
+static cmdline_parse_token_string_t cmd_rx_vlan_filter_all_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_rx_vlan_filter_all_result,
 				 all, "all");
-cmdline_parse_token_num_t cmd_rx_vlan_filter_all_portid =
+static cmdline_parse_token_num_t cmd_rx_vlan_filter_all_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_rx_vlan_filter_all_result,
 			      port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_rx_vlan_filter_all = {
+static cmdline_parse_inst_t cmd_rx_vlan_filter_all = {
 	.f = cmd_rx_vlan_filter_all_parsed,
 	.data = NULL,
 	.help_str = "rx_vlan add|rm all <port_id>: "
@@ -4236,23 +4236,23 @@ cmd_vlan_offload_parsed(void *parsed_result,
 	return;
 }
 
-cmdline_parse_token_string_t cmd_vlan_offload_vlan =
+static cmdline_parse_token_string_t cmd_vlan_offload_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_offload_result,
 				 vlan, "vlan");
-cmdline_parse_token_string_t cmd_vlan_offload_set =
+static cmdline_parse_token_string_t cmd_vlan_offload_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_offload_result,
 				 set, "set");
-cmdline_parse_token_string_t cmd_vlan_offload_what =
+static cmdline_parse_token_string_t cmd_vlan_offload_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_offload_result,
 				what, "strip#filter#qinq_strip#extend#stripq");
-cmdline_parse_token_string_t cmd_vlan_offload_on =
+static cmdline_parse_token_string_t cmd_vlan_offload_on =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_offload_result,
 			      on, "on#off");
-cmdline_parse_token_string_t cmd_vlan_offload_portid =
+static cmdline_parse_token_string_t cmd_vlan_offload_portid =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_offload_result,
 			      port_id, NULL);
 
-cmdline_parse_inst_t cmd_vlan_offload = {
+static cmdline_parse_inst_t cmd_vlan_offload = {
 	.f = cmd_vlan_offload_parsed,
 	.data = NULL,
 	.help_str = "vlan set strip|filter|qinq_strip|extend|stripq on|off "
@@ -4297,26 +4297,26 @@ cmd_vlan_tpid_parsed(void *parsed_result,
 	vlan_tpid_set(res->port_id, vlan_type, res->tp_id);
 }
 
-cmdline_parse_token_string_t cmd_vlan_tpid_vlan =
+static cmdline_parse_token_string_t cmd_vlan_tpid_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_tpid_result,
 				 vlan, "vlan");
-cmdline_parse_token_string_t cmd_vlan_tpid_set =
+static cmdline_parse_token_string_t cmd_vlan_tpid_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_tpid_result,
 				 set, "set");
-cmdline_parse_token_string_t cmd_vlan_type =
+static cmdline_parse_token_string_t cmd_vlan_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_tpid_result,
 				 vlan_type, "inner#outer");
-cmdline_parse_token_string_t cmd_vlan_tpid_what =
+static cmdline_parse_token_string_t cmd_vlan_tpid_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_vlan_tpid_result,
 				 what, "tpid");
-cmdline_parse_token_num_t cmd_vlan_tpid_tpid =
+static cmdline_parse_token_num_t cmd_vlan_tpid_tpid =
 	TOKEN_NUM_INITIALIZER(struct cmd_vlan_tpid_result,
 			      tp_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vlan_tpid_portid =
+static cmdline_parse_token_num_t cmd_vlan_tpid_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_vlan_tpid_result,
 			      port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_vlan_tpid = {
+static cmdline_parse_inst_t cmd_vlan_tpid = {
 	.f = cmd_vlan_tpid_parsed,
 	.data = NULL,
 	.help_str = "vlan set inner|outer tpid <tp_id> <port_id>: "
@@ -4353,20 +4353,20 @@ cmd_rx_vlan_filter_parsed(void *parsed_result,
 		rx_vft_set(res->port_id, res->vlan_id, 0);
 }
 
-cmdline_parse_token_string_t cmd_rx_vlan_filter_rx_vlan =
+static cmdline_parse_token_string_t cmd_rx_vlan_filter_rx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_rx_vlan_filter_result,
 				 rx_vlan, "rx_vlan");
-cmdline_parse_token_string_t cmd_rx_vlan_filter_what =
+static cmdline_parse_token_string_t cmd_rx_vlan_filter_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_rx_vlan_filter_result,
 				 what, "add#rm");
-cmdline_parse_token_num_t cmd_rx_vlan_filter_vlanid =
+static cmdline_parse_token_num_t cmd_rx_vlan_filter_vlanid =
 	TOKEN_NUM_INITIALIZER(struct cmd_rx_vlan_filter_result,
 			      vlan_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_rx_vlan_filter_portid =
+static cmdline_parse_token_num_t cmd_rx_vlan_filter_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_rx_vlan_filter_result,
 			      port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_rx_vlan_filter = {
+static cmdline_parse_inst_t cmd_rx_vlan_filter = {
 	.f = cmd_rx_vlan_filter_parsed,
 	.data = NULL,
 	.help_str = "rx_vlan add|rm <vlan_id> <port_id>: "
@@ -4409,20 +4409,20 @@ cmd_tx_vlan_set_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_tx_vlan_set_tx_vlan =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_tx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_result,
 				 tx_vlan, "tx_vlan");
-cmdline_parse_token_string_t cmd_tx_vlan_set_set =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_result,
 				 set, "set");
-cmdline_parse_token_num_t cmd_tx_vlan_set_portid =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tx_vlan_set_vlanid =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_vlanid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_result,
 			      vlan_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tx_vlan_set = {
+static cmdline_parse_inst_t cmd_tx_vlan_set = {
 	.f = cmd_tx_vlan_set_parsed,
 	.data = NULL,
 	.help_str = "tx_vlan set <port_id> <vlan_id>: "
@@ -4466,23 +4466,23 @@ cmd_tx_vlan_set_qinq_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_tx_vlan_set_qinq_tx_vlan =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_qinq_tx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_qinq_result,
 		tx_vlan, "tx_vlan");
-cmdline_parse_token_string_t cmd_tx_vlan_set_qinq_set =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_qinq_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_qinq_result,
 		set, "set");
-cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_portid =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_qinq_result,
 		port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_vlanid =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_vlanid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_qinq_result,
 		vlan_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_vlanid_outer =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_qinq_vlanid_outer =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_qinq_result,
 		vlan_id_outer, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tx_vlan_set_qinq = {
+static cmdline_parse_inst_t cmd_tx_vlan_set_qinq = {
 	.f = cmd_tx_vlan_set_qinq_parsed,
 	.data = NULL,
 	.help_str = "tx_vlan set <port_id> <vlan_id> <outer_vlan_id>: "
@@ -4521,26 +4521,26 @@ cmd_tx_vlan_set_pvid_parsed(void *parsed_result,
 		tx_vlan_pvid_set(res->port_id, res->vlan_id, 0);
 }
 
-cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_tx_vlan =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_tx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 				 tx_vlan, "tx_vlan");
-cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_set =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 				 set, "set");
-cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_pvid =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_pvid =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 				 pvid, "pvid");
-cmdline_parse_token_num_t cmd_tx_vlan_set_pvid_port_id =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_pvid_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 			     port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tx_vlan_set_pvid_vlan_id =
+static cmdline_parse_token_num_t cmd_tx_vlan_set_pvid_vlan_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 			      vlan_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_mode =
+static cmdline_parse_token_string_t cmd_tx_vlan_set_pvid_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_pvid_result,
 				 mode, "on#off");
 
-cmdline_parse_inst_t cmd_tx_vlan_set_pvid = {
+static cmdline_parse_inst_t cmd_tx_vlan_set_pvid = {
 	.f = cmd_tx_vlan_set_pvid_parsed,
 	.data = NULL,
 	.help_str = "tx_vlan set pvid <port_id> <vlan_id> on|off",
@@ -4582,17 +4582,17 @@ cmd_tx_vlan_reset_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_tx_vlan_reset_tx_vlan =
+static cmdline_parse_token_string_t cmd_tx_vlan_reset_tx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_reset_result,
 				 tx_vlan, "tx_vlan");
-cmdline_parse_token_string_t cmd_tx_vlan_reset_reset =
+static cmdline_parse_token_string_t cmd_tx_vlan_reset_reset =
 	TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_reset_result,
 				 reset, "reset");
-cmdline_parse_token_num_t cmd_tx_vlan_reset_portid =
+static cmdline_parse_token_num_t cmd_tx_vlan_reset_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_reset_result,
 			      port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tx_vlan_reset = {
+static cmdline_parse_inst_t cmd_tx_vlan_reset = {
 	.f = cmd_tx_vlan_reset_parsed,
 	.data = NULL,
 	.help_str = "tx_vlan reset <port_id>: Disable hardware insertion of a "
@@ -4794,23 +4794,23 @@ cmd_csum_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_csum_csum =
+static cmdline_parse_token_string_t cmd_csum_csum =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_result,
 				csum, "csum");
-cmdline_parse_token_string_t cmd_csum_mode =
+static cmdline_parse_token_string_t cmd_csum_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_result,
 				mode, "set");
-cmdline_parse_token_string_t cmd_csum_proto =
+static cmdline_parse_token_string_t cmd_csum_proto =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_result,
 				proto, "ip#tcp#udp#sctp#outer-ip#outer-udp");
-cmdline_parse_token_string_t cmd_csum_hwsw =
+static cmdline_parse_token_string_t cmd_csum_hwsw =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_result,
 				hwsw, "hw#sw");
-cmdline_parse_token_num_t cmd_csum_portid =
+static cmdline_parse_token_num_t cmd_csum_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_csum_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_csum_set = {
+static cmdline_parse_inst_t cmd_csum_set = {
 	.f = cmd_csum_parsed,
 	.data = NULL,
 	.help_str = "csum set ip|tcp|udp|sctp|outer-ip|outer-udp hw|sw <port_id>: "
@@ -4826,11 +4826,11 @@ cmdline_parse_inst_t cmd_csum_set = {
 	},
 };
 
-cmdline_parse_token_string_t cmd_csum_mode_show =
+static cmdline_parse_token_string_t cmd_csum_mode_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_result,
 				mode, "show");
 
-cmdline_parse_inst_t cmd_csum_show = {
+static cmdline_parse_inst_t cmd_csum_show = {
 	.f = cmd_csum_parsed,
 	.data = NULL,
 	.help_str = "csum show <port_id>: Show checksum offload configuration",
@@ -4868,20 +4868,20 @@ cmd_csum_tunnel_parsed(void *parsed_result,
 	csum_show(res->port_id);
 }
 
-cmdline_parse_token_string_t cmd_csum_tunnel_csum =
+static cmdline_parse_token_string_t cmd_csum_tunnel_csum =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
 				csum, "csum");
-cmdline_parse_token_string_t cmd_csum_tunnel_parse =
+static cmdline_parse_token_string_t cmd_csum_tunnel_parse =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
 				parse, "parse-tunnel");
-cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
+static cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
 				onoff, "on#off");
-cmdline_parse_token_num_t cmd_csum_tunnel_portid =
+static cmdline_parse_token_num_t cmd_csum_tunnel_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_csum_tunnel_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_csum_tunnel = {
+static cmdline_parse_inst_t cmd_csum_tunnel = {
 	.f = cmd_csum_tunnel_parsed,
 	.data = NULL,
 	.help_str = "csum parse-tunnel on|off <port_id>: "
@@ -4960,20 +4960,20 @@ cmd_tso_set_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_tso_set_tso =
+static cmdline_parse_token_string_t cmd_tso_set_tso =
 	TOKEN_STRING_INITIALIZER(struct cmd_tso_set_result,
 				tso, "tso");
-cmdline_parse_token_string_t cmd_tso_set_mode =
+static cmdline_parse_token_string_t cmd_tso_set_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_tso_set_result,
 				mode, "set");
-cmdline_parse_token_num_t cmd_tso_set_tso_segsz =
+static cmdline_parse_token_num_t cmd_tso_set_tso_segsz =
 	TOKEN_NUM_INITIALIZER(struct cmd_tso_set_result,
 				tso_segsz, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tso_set_portid =
+static cmdline_parse_token_num_t cmd_tso_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tso_set_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tso_set = {
+static cmdline_parse_inst_t cmd_tso_set = {
 	.f = cmd_tso_set_parsed,
 	.data = NULL,
 	.help_str = "tso set <tso_segsz> <port_id>: "
@@ -4988,12 +4988,12 @@ cmdline_parse_inst_t cmd_tso_set = {
 	},
 };
 
-cmdline_parse_token_string_t cmd_tso_show_mode =
+static cmdline_parse_token_string_t cmd_tso_show_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_tso_set_result,
 				mode, "show");
 
 
-cmdline_parse_inst_t cmd_tso_show = {
+static cmdline_parse_inst_t cmd_tso_show = {
 	.f = cmd_tso_set_parsed,
 	.data = NULL,
 	.help_str = "tso show <port_id>: "
@@ -5115,20 +5115,20 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_tunnel_tso_set_tso =
+static cmdline_parse_token_string_t cmd_tunnel_tso_set_tso =
 	TOKEN_STRING_INITIALIZER(struct cmd_tunnel_tso_set_result,
 				tso, "tunnel_tso");
-cmdline_parse_token_string_t cmd_tunnel_tso_set_mode =
+static cmdline_parse_token_string_t cmd_tunnel_tso_set_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_tunnel_tso_set_result,
 				mode, "set");
-cmdline_parse_token_num_t cmd_tunnel_tso_set_tso_segsz =
+static cmdline_parse_token_num_t cmd_tunnel_tso_set_tso_segsz =
 	TOKEN_NUM_INITIALIZER(struct cmd_tunnel_tso_set_result,
 				tso_segsz, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tunnel_tso_set_portid =
+static cmdline_parse_token_num_t cmd_tunnel_tso_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_tunnel_tso_set_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tunnel_tso_set = {
+static cmdline_parse_inst_t cmd_tunnel_tso_set = {
 	.f = cmd_tunnel_tso_set_parsed,
 	.data = NULL,
 	.help_str = "tunnel_tso set <tso_segsz> <port_id>: "
@@ -5143,12 +5143,12 @@ cmdline_parse_inst_t cmd_tunnel_tso_set = {
 	},
 };
 
-cmdline_parse_token_string_t cmd_tunnel_tso_show_mode =
+static cmdline_parse_token_string_t cmd_tunnel_tso_show_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_tunnel_tso_set_result,
 				mode, "show");
 
 
-cmdline_parse_inst_t cmd_tunnel_tso_show = {
+static cmdline_parse_inst_t cmd_tunnel_tso_show = {
 	.f = cmd_tunnel_tso_set_parsed,
 	.data = NULL,
 	.help_str = "tunnel_tso show <port_id> "
@@ -5183,23 +5183,23 @@ cmd_gro_enable_parsed(void *parsed_result,
 		setup_gro(res->cmd_onoff, res->cmd_pid);
 }
 
-cmdline_parse_token_string_t cmd_gro_enable_set =
+static cmdline_parse_token_string_t cmd_gro_enable_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_enable_result,
 			cmd_set, "set");
-cmdline_parse_token_string_t cmd_gro_enable_port =
+static cmdline_parse_token_string_t cmd_gro_enable_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_enable_result,
 			cmd_keyword, "port");
-cmdline_parse_token_num_t cmd_gro_enable_pid =
+static cmdline_parse_token_num_t cmd_gro_enable_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_gro_enable_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_gro_enable_keyword =
+static cmdline_parse_token_string_t cmd_gro_enable_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_enable_result,
 			cmd_keyword, "gro");
-cmdline_parse_token_string_t cmd_gro_enable_onoff =
+static cmdline_parse_token_string_t cmd_gro_enable_onoff =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_enable_result,
 			cmd_onoff, "on#off");
 
-cmdline_parse_inst_t cmd_gro_enable = {
+static cmdline_parse_inst_t cmd_gro_enable = {
 	.f = cmd_gro_enable_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> gro on|off",
@@ -5233,20 +5233,20 @@ cmd_gro_show_parsed(void *parsed_result,
 		show_gro(res->cmd_pid);
 }
 
-cmdline_parse_token_string_t cmd_gro_show_show =
+static cmdline_parse_token_string_t cmd_gro_show_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_show_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_gro_show_port =
+static cmdline_parse_token_string_t cmd_gro_show_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_show_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_gro_show_pid =
+static cmdline_parse_token_num_t cmd_gro_show_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_gro_show_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_gro_show_keyword =
+static cmdline_parse_token_string_t cmd_gro_show_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_show_result,
 			cmd_keyword, "gro");
 
-cmdline_parse_inst_t cmd_gro_show = {
+static cmdline_parse_inst_t cmd_gro_show = {
 	.f = cmd_gro_show_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> gro",
@@ -5280,20 +5280,20 @@ cmd_gro_flush_parsed(void *parsed_result,
 		setup_gro_flush_cycles(res->cmd_cycles);
 }
 
-cmdline_parse_token_string_t cmd_gro_flush_set =
+static cmdline_parse_token_string_t cmd_gro_flush_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_flush_result,
 			cmd_set, "set");
-cmdline_parse_token_string_t cmd_gro_flush_keyword =
+static cmdline_parse_token_string_t cmd_gro_flush_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_flush_result,
 			cmd_keyword, "gro");
-cmdline_parse_token_string_t cmd_gro_flush_flush =
+static cmdline_parse_token_string_t cmd_gro_flush_flush =
 	TOKEN_STRING_INITIALIZER(struct cmd_gro_flush_result,
 			cmd_flush, "flush");
-cmdline_parse_token_num_t cmd_gro_flush_cycles =
+static cmdline_parse_token_num_t cmd_gro_flush_cycles =
 	TOKEN_NUM_INITIALIZER(struct cmd_gro_flush_result,
 			cmd_cycles, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_gro_flush = {
+static cmdline_parse_inst_t cmd_gro_flush = {
 	.f = cmd_gro_flush_parsed,
 	.data = NULL,
 	.help_str = "set gro flush <cycles>",
@@ -5329,23 +5329,23 @@ cmd_gso_enable_parsed(void *parsed_result,
 		setup_gso(res->cmd_mode, res->cmd_pid);
 }
 
-cmdline_parse_token_string_t cmd_gso_enable_set =
+static cmdline_parse_token_string_t cmd_gso_enable_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_enable_result,
 			cmd_set, "set");
-cmdline_parse_token_string_t cmd_gso_enable_port =
+static cmdline_parse_token_string_t cmd_gso_enable_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_enable_result,
 			cmd_port, "port");
-cmdline_parse_token_string_t cmd_gso_enable_keyword =
+static cmdline_parse_token_string_t cmd_gso_enable_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_enable_result,
 			cmd_keyword, "gso");
-cmdline_parse_token_string_t cmd_gso_enable_mode =
+static cmdline_parse_token_string_t cmd_gso_enable_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_enable_result,
 			cmd_mode, "on#off");
-cmdline_parse_token_num_t cmd_gso_enable_pid =
+static cmdline_parse_token_num_t cmd_gso_enable_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_gso_enable_result,
 			cmd_pid, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_gso_enable = {
+static cmdline_parse_inst_t cmd_gso_enable = {
 	.f = cmd_gso_enable_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> gso on|off",
@@ -5391,20 +5391,20 @@ cmd_gso_size_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_gso_size_set =
+static cmdline_parse_token_string_t cmd_gso_size_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_size_result,
 				cmd_set, "set");
-cmdline_parse_token_string_t cmd_gso_size_keyword =
+static cmdline_parse_token_string_t cmd_gso_size_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_size_result,
 				cmd_keyword, "gso");
-cmdline_parse_token_string_t cmd_gso_size_segsz =
+static cmdline_parse_token_string_t cmd_gso_size_segsz =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_size_result,
 				cmd_segsz, "segsz");
-cmdline_parse_token_num_t cmd_gso_size_size =
+static cmdline_parse_token_num_t cmd_gso_size_size =
 	TOKEN_NUM_INITIALIZER(struct cmd_gso_size_result,
 				cmd_size, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_gso_size = {
+static cmdline_parse_inst_t cmd_gso_size = {
 	.f = cmd_gso_size_parsed,
 	.data = NULL,
 	.help_str = "set gso segsz <length>",
@@ -5449,20 +5449,20 @@ cmd_gso_show_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_gso_show_show =
+static cmdline_parse_token_string_t cmd_gso_show_show =
 TOKEN_STRING_INITIALIZER(struct cmd_gso_show_result,
 		cmd_show, "show");
-cmdline_parse_token_string_t cmd_gso_show_port =
+static cmdline_parse_token_string_t cmd_gso_show_port =
 TOKEN_STRING_INITIALIZER(struct cmd_gso_show_result,
 		cmd_port, "port");
-cmdline_parse_token_string_t cmd_gso_show_keyword =
+static cmdline_parse_token_string_t cmd_gso_show_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_gso_show_result,
 				cmd_keyword, "gso");
-cmdline_parse_token_num_t cmd_gso_show_pid =
+static cmdline_parse_token_num_t cmd_gso_show_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_gso_show_result,
 				cmd_pid, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_gso_show = {
+static cmdline_parse_inst_t cmd_gso_show = {
 	.f = cmd_gso_show_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> gso",
@@ -5498,18 +5498,18 @@ cmd_set_flush_rx_parsed(void *parsed_result,
 	no_flush_rx = (uint8_t)((strcmp(res->mode, "on") == 0) ? 0 : 1);
 }
 
-cmdline_parse_token_string_t cmd_setflushrx_set =
+static cmdline_parse_token_string_t cmd_setflushrx_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_flush_rx,
 			set, "set");
-cmdline_parse_token_string_t cmd_setflushrx_flush_rx =
+static cmdline_parse_token_string_t cmd_setflushrx_flush_rx =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_flush_rx,
 			flush_rx, "flush_rx");
-cmdline_parse_token_string_t cmd_setflushrx_mode =
+static cmdline_parse_token_string_t cmd_setflushrx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_flush_rx,
 			mode, "on#off");
 
 
-cmdline_parse_inst_t cmd_set_flush_rx = {
+static cmdline_parse_inst_t cmd_set_flush_rx = {
 	.f = cmd_set_flush_rx_parsed,
 	.help_str = "set flush_rx on|off: Enable/Disable flush on rx streams",
 	.data = NULL,
@@ -5537,18 +5537,18 @@ cmd_set_link_check_parsed(void *parsed_result,
 	no_link_check = (uint8_t)((strcmp(res->mode, "on") == 0) ? 0 : 1);
 }
 
-cmdline_parse_token_string_t cmd_setlinkcheck_set =
+static cmdline_parse_token_string_t cmd_setlinkcheck_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_check,
 			set, "set");
-cmdline_parse_token_string_t cmd_setlinkcheck_link_check =
+static cmdline_parse_token_string_t cmd_setlinkcheck_link_check =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_check,
 			link_check, "link_check");
-cmdline_parse_token_string_t cmd_setlinkcheck_mode =
+static cmdline_parse_token_string_t cmd_setlinkcheck_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_check,
 			mode, "on#off");
 
 
-cmdline_parse_inst_t cmd_set_link_check = {
+static cmdline_parse_inst_t cmd_set_link_check = {
 	.f = cmd_set_link_check_parsed,
 	.help_str = "set link_check on|off: Enable/Disable link status check "
 	            "when starting/stopping a port",
@@ -5597,23 +5597,23 @@ cmd_set_bypass_mode_parsed(void *parsed_result,
 			port_id);
 }
 
-cmdline_parse_token_string_t cmd_setbypass_mode_set =
+static cmdline_parse_token_string_t cmd_setbypass_mode_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
 			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_mode_bypass =
+static cmdline_parse_token_string_t cmd_setbypass_mode_bypass =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
 			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_mode_mode =
+static cmdline_parse_token_string_t cmd_setbypass_mode_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
 			mode, "mode");
-cmdline_parse_token_string_t cmd_setbypass_mode_value =
+static cmdline_parse_token_string_t cmd_setbypass_mode_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_mode_result,
 			value, "normal#bypass#isolate");
-cmdline_parse_token_num_t cmd_setbypass_mode_port =
+static cmdline_parse_token_num_t cmd_setbypass_mode_port =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_mode_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_set_bypass_mode = {
+static cmdline_parse_inst_t cmd_set_bypass_mode = {
 	.f = cmd_set_bypass_mode_parsed,
 	.help_str = "set bypass mode normal|bypass|isolate <port_id>: "
 	            "Set the NIC bypass mode for port_id",
@@ -5697,29 +5697,29 @@ cmd_set_bypass_event_parsed(void *parsed_result,
 			port_id);
 }
 
-cmdline_parse_token_string_t cmd_setbypass_event_set =
+static cmdline_parse_token_string_t cmd_setbypass_event_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_event_bypass =
+static cmdline_parse_token_string_t cmd_setbypass_event_bypass =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_event_event =
+static cmdline_parse_token_string_t cmd_setbypass_event_event =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			event, "event");
-cmdline_parse_token_string_t cmd_setbypass_event_event_value =
+static cmdline_parse_token_string_t cmd_setbypass_event_event_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			event_value, "none#timeout#os_off#os_on#power_on#power_off");
-cmdline_parse_token_string_t cmd_setbypass_event_mode =
+static cmdline_parse_token_string_t cmd_setbypass_event_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			mode, "mode");
-cmdline_parse_token_string_t cmd_setbypass_event_mode_value =
+static cmdline_parse_token_string_t cmd_setbypass_event_mode_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_event_result,
 			mode_value, "normal#bypass#isolate");
-cmdline_parse_token_num_t cmd_setbypass_event_port =
+static cmdline_parse_token_num_t cmd_setbypass_event_port =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_bypass_event_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_set_bypass_event = {
+static cmdline_parse_inst_t cmd_set_bypass_event = {
 	.f = cmd_set_bypass_event_parsed,
 	.help_str = "set bypass event none|timeout|os_on|os_off|power_on|"
 		"power_off mode normal|bypass|isolate <port_id>: "
@@ -5773,20 +5773,20 @@ cmd_set_bypass_timeout_parsed(void *parsed_result,
 #endif
 }
 
-cmdline_parse_token_string_t cmd_setbypass_timeout_set =
+static cmdline_parse_token_string_t cmd_setbypass_timeout_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
 			set, "set");
-cmdline_parse_token_string_t cmd_setbypass_timeout_bypass =
+static cmdline_parse_token_string_t cmd_setbypass_timeout_bypass =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
 			bypass, "bypass");
-cmdline_parse_token_string_t cmd_setbypass_timeout_timeout =
+static cmdline_parse_token_string_t cmd_setbypass_timeout_timeout =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
 			timeout, "timeout");
-cmdline_parse_token_string_t cmd_setbypass_timeout_value =
+static cmdline_parse_token_string_t cmd_setbypass_timeout_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bypass_timeout_result,
 			value, "0#1.5#2#3#4#8#16#32");
 
-cmdline_parse_inst_t cmd_set_bypass_timeout = {
+static cmdline_parse_inst_t cmd_set_bypass_timeout = {
 	.f = cmd_set_bypass_timeout_parsed,
 	.help_str = "set bypass timeout 0|1.5|2|3|4|8|16|32: "
 		"Set the NIC bypass watchdog timeout in seconds",
@@ -5875,20 +5875,20 @@ cmd_show_bypass_config_parsed(void *parsed_result,
 		       port_id);
 }
 
-cmdline_parse_token_string_t cmd_showbypass_config_show =
+static cmdline_parse_token_string_t cmd_showbypass_config_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
 			show, "show");
-cmdline_parse_token_string_t cmd_showbypass_config_bypass =
+static cmdline_parse_token_string_t cmd_showbypass_config_bypass =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
 			bypass, "bypass");
-cmdline_parse_token_string_t cmd_showbypass_config_config =
+static cmdline_parse_token_string_t cmd_showbypass_config_config =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_bypass_config_result,
 			config, "config");
-cmdline_parse_token_num_t cmd_showbypass_config_port =
+static cmdline_parse_token_num_t cmd_showbypass_config_port =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_bypass_config_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_show_bypass_config = {
+static cmdline_parse_inst_t cmd_show_bypass_config = {
 	.f = cmd_show_bypass_config_parsed,
 	.help_str = "show bypass config <port_id>: "
 	            "Show the NIC bypass config for port_id",
@@ -5938,23 +5938,23 @@ static void cmd_set_bonding_mode_parsed(void *parsed_result,
 			port_id);
 }
 
-cmdline_parse_token_string_t cmd_setbonding_mode_set =
+static cmdline_parse_token_string_t cmd_setbonding_mode_set =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
 		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
+static cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_mode_mode =
+static cmdline_parse_token_string_t cmd_setbonding_mode_mode =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
 		mode, "mode");
-cmdline_parse_token_num_t cmd_setbonding_mode_value =
+static cmdline_parse_token_num_t cmd_setbonding_mode_value =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
 		value, RTE_UINT8);
-cmdline_parse_token_num_t cmd_setbonding_mode_port =
+static cmdline_parse_token_num_t cmd_setbonding_mode_port =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
 		port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_set_bonding_mode = {
+static cmdline_parse_inst_t cmd_set_bonding_mode = {
 		.f = cmd_set_bonding_mode_parsed,
 		.help_str = "set bonding mode <mode_value> <port_id>: "
 			"Set the bonding mode for port_id",
@@ -6012,26 +6012,26 @@ static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		lacp, "lacp");
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		dedicated_queues, "dedicated_queues");
-cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
+static cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
 		mode, "enable#disable");
 
-cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
+static cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
 		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
 		.help_str = "set bonding lacp dedicated_queues <port_id> "
 			"enable|disable: "
@@ -6084,23 +6084,23 @@ static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
 		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
 		balance_xmit_policy, "balance_xmit_policy");
-cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
+static cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
 		port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
 		policy, "l2#l23#l34");
 
-cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
+static cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
 		.f = cmd_set_bonding_balance_xmit_policy_parsed,
 		.help_str = "set bonding balance_xmit_policy <port_id> "
 			"l2|l23|l34: "
@@ -6265,23 +6265,23 @@ static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
 		show, "show");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
 		bonding, "lacp");
-cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
 		info, "info");
-cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
+static cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
 TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
 		port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
+static cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
 		.f = cmd_show_bonding_lacp_info_parsed,
 		.help_str = "show bonding lacp info <port_id> : "
 			"Show bonding IEEE802.3 information for port_id",
@@ -6419,20 +6419,20 @@ static void cmd_show_bonding_config_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_showbonding_config_show =
+static cmdline_parse_token_string_t cmd_showbonding_config_show =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
 		show, "show");
-cmdline_parse_token_string_t cmd_showbonding_config_bonding =
+static cmdline_parse_token_string_t cmd_showbonding_config_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_showbonding_config_config =
+static cmdline_parse_token_string_t cmd_showbonding_config_config =
 TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
 		config, "config");
-cmdline_parse_token_num_t cmd_showbonding_config_port =
+static cmdline_parse_token_num_t cmd_showbonding_config_port =
 TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
 		port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_show_bonding_config = {
+static cmdline_parse_inst_t cmd_show_bonding_config = {
 		.f = cmd_show_bonding_config_parsed,
 		.help_str = "show bonding config <port_id>: "
 			"Show the bonding config for port_id",
@@ -6472,23 +6472,23 @@ static void cmd_set_bonding_primary_parsed(void *parsed_result,
 	init_port_config();
 }
 
-cmdline_parse_token_string_t cmd_setbonding_primary_set =
+static cmdline_parse_token_string_t cmd_setbonding_primary_set =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
 		set, "set");
-cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
+static cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_setbonding_primary_primary =
+static cmdline_parse_token_string_t cmd_setbonding_primary_primary =
 TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
 		primary, "primary");
-cmdline_parse_token_num_t cmd_setbonding_primary_slave =
+static cmdline_parse_token_num_t cmd_setbonding_primary_slave =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
 		slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_setbonding_primary_port =
+static cmdline_parse_token_num_t cmd_setbonding_primary_port =
 TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
 		port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_set_bonding_primary = {
+static cmdline_parse_inst_t cmd_set_bonding_primary = {
 		.f = cmd_set_bonding_primary_parsed,
 		.help_str = "set bonding primary <slave_id> <port_id>: "
 			"Set the primary slave for port_id",
@@ -6531,23 +6531,23 @@ static void cmd_add_bonding_slave_parsed(void *parsed_result,
 	set_port_slave_flag(slave_port_id);
 }
 
-cmdline_parse_token_string_t cmd_addbonding_slave_add =
+static cmdline_parse_token_string_t cmd_addbonding_slave_add =
 TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
 		add, "add");
-cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
+static cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
 TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
 		bonding, "bonding");
-cmdline_parse_token_string_t cmd_addbonding_slave_slave =
+static cmdline_parse_token_string_t cmd_addbonding_slave_slave =
 TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
 		slave, "slave");
-cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
+static cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
 TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
 		slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_addbonding_slave_port =
+static cmdline_parse_token_num_t cmd_addbonding_slave_port =
 TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
 		port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_add_bonding_slave = {
+static cmdline_parse_inst_t cmd_add_bonding_slave = {
 		.f = cmd_add_bonding_slave_parsed,
 		.help_str = "add bonding slave <slave_id> <port_id>: "
 			"Add a slave device to a bonded device",
@@ -6590,23 +6590,23 @@ static void cmd_remove_bonding_slave_parsed(void *parsed_result,
 	clear_port_slave_flag(slave_port_id);
 }
 
-cmdline_parse_token_string_t cmd_removebonding_slave_remove =
+static cmdline_parse_token_string_t cmd_removebonding_slave_remove =
 		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
 				remove, "remove");
-cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
+static cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
 		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
 				bonding, "bonding");
-cmdline_parse_token_string_t cmd_removebonding_slave_slave =
+static cmdline_parse_token_string_t cmd_removebonding_slave_slave =
 		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
 				slave, "slave");
-cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
+static cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
 		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
 				slave_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_removebonding_slave_port =
+static cmdline_parse_token_num_t cmd_removebonding_slave_port =
 		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_remove_bonding_slave = {
+static cmdline_parse_inst_t cmd_remove_bonding_slave = {
 		.f = cmd_remove_bonding_slave_parsed,
 		.help_str = "remove bonding slave <slave_id> <port_id>: "
 			"Remove a slave device from a bonded device",
@@ -6673,23 +6673,23 @@ static void cmd_create_bonded_device_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_createbonded_device_create =
+static cmdline_parse_token_string_t cmd_createbonded_device_create =
 		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
 				create, "create");
-cmdline_parse_token_string_t cmd_createbonded_device_bonded =
+static cmdline_parse_token_string_t cmd_createbonded_device_bonded =
 		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
 				bonded, "bonded");
-cmdline_parse_token_string_t cmd_createbonded_device_device =
+static cmdline_parse_token_string_t cmd_createbonded_device_device =
 		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
 				device, "device");
-cmdline_parse_token_num_t cmd_createbonded_device_mode =
+static cmdline_parse_token_num_t cmd_createbonded_device_mode =
 		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
 				mode, RTE_UINT8);
-cmdline_parse_token_num_t cmd_createbonded_device_socket =
+static cmdline_parse_token_num_t cmd_createbonded_device_socket =
 		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
 				socket, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_create_bonded_device = {
+static cmdline_parse_inst_t cmd_create_bonded_device = {
 		.f = cmd_create_bonded_device_parsed,
 		.help_str = "create bonded device <mode> <socket>: "
 			"Create a new bonded device with specific bonding mode and socket",
@@ -6731,21 +6731,21 @@ static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
 			strerror(-ret));
 }
 
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
 				"bonding");
-cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
 				"mac_addr");
-cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
+static cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
 		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
 				port_num, RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
+static cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
 		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
 
-cmdline_parse_inst_t cmd_set_bond_mac_addr = {
+static cmdline_parse_inst_t cmd_set_bond_mac_addr = {
 		.f = cmd_set_bond_mac_addr_parsed,
 		.data = (void *) 0,
 		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
@@ -6784,23 +6784,23 @@ static void cmd_set_bond_mon_period_parsed(void *parsed_result,
 			strerror(-ret));
 }
 
-cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
 				bonding, "bonding");
-cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
 		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
 				mon_period,	"mon_period");
-cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
+static cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
 		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
 				port_num, RTE_UINT16);
-cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
+static cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
 		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
 				period_ms, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_set_bond_mon_period = {
+static cmdline_parse_inst_t cmd_set_bond_mon_period = {
 		.f = cmd_set_bond_mon_period_parsed,
 		.data = (void *) 0,
 		.help_str = "set bonding mon_period <port_id> <period_ms>",
@@ -6844,27 +6844,27 @@ cmd_set_bonding_agg_mode(void *parsed_result,
 }
 
 
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
 				bonding, "bonding");
 
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
 				agg_mode, "agg_mode");
 
-cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
+static cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
 				port_num, RTE_UINT16);
 
-cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
 	TOKEN_STRING_INITIALIZER(
 			struct cmd_set_bonding_balance_xmit_policy_result,
 		policy, "stable#bandwidth#count");
 
-cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
+static cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
 	.f = cmd_set_bonding_agg_mode,
 	.data = (void *) 0,
 	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
@@ -6898,15 +6898,15 @@ static void cmd_set_fwd_mode_parsed(void *parsed_result,
 	set_pkt_forwarding_mode(res->mode);
 }
 
-cmdline_parse_token_string_t cmd_setfwd_set =
+static cmdline_parse_token_string_t cmd_setfwd_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_mode_result, set, "set");
-cmdline_parse_token_string_t cmd_setfwd_fwd =
+static cmdline_parse_token_string_t cmd_setfwd_fwd =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_mode_result, fwd, "fwd");
-cmdline_parse_token_string_t cmd_setfwd_mode =
+static cmdline_parse_token_string_t cmd_setfwd_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_mode_result, mode,
 		"" /* defined at init */);
 
-cmdline_parse_inst_t cmd_set_fwd_mode = {
+static cmdline_parse_inst_t cmd_set_fwd_mode = {
 	.f = cmd_set_fwd_mode_parsed,
 	.data = NULL,
 	.help_str = NULL, /* defined at init */
@@ -6958,21 +6958,21 @@ static void cmd_set_fwd_retry_mode_parsed(void *parsed_result,
 	set_pkt_forwarding_mode(res->mode);
 }
 
-cmdline_parse_token_string_t cmd_setfwd_retry_set =
+static cmdline_parse_token_string_t cmd_setfwd_retry_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_retry_mode_result,
 			set, "set");
-cmdline_parse_token_string_t cmd_setfwd_retry_fwd =
+static cmdline_parse_token_string_t cmd_setfwd_retry_fwd =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_retry_mode_result,
 			fwd, "fwd");
-cmdline_parse_token_string_t cmd_setfwd_retry_mode =
+static cmdline_parse_token_string_t cmd_setfwd_retry_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_retry_mode_result,
 			mode,
 		"" /* defined at init */);
-cmdline_parse_token_string_t cmd_setfwd_retry_retry =
+static cmdline_parse_token_string_t cmd_setfwd_retry_retry =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_retry_mode_result,
 			retry, "retry");
 
-cmdline_parse_inst_t cmd_set_fwd_retry_mode = {
+static cmdline_parse_inst_t cmd_set_fwd_retry_mode = {
 	.f = cmd_set_fwd_retry_mode_parsed,
 	.data = NULL,
 	.help_str = NULL, /* defined at init */
@@ -7035,25 +7035,25 @@ static void cmd_set_burst_tx_retry_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_set_burst_tx_retry_set =
+static cmdline_parse_token_string_t cmd_set_burst_tx_retry_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_burst_tx_retry_result, set, "set");
-cmdline_parse_token_string_t cmd_set_burst_tx_retry_burst =
+static cmdline_parse_token_string_t cmd_set_burst_tx_retry_burst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_burst_tx_retry_result, burst,
 				 "burst");
-cmdline_parse_token_string_t cmd_set_burst_tx_retry_tx =
+static cmdline_parse_token_string_t cmd_set_burst_tx_retry_tx =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_burst_tx_retry_result, tx, "tx");
-cmdline_parse_token_string_t cmd_set_burst_tx_retry_delay =
+static cmdline_parse_token_string_t cmd_set_burst_tx_retry_delay =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_burst_tx_retry_result, delay, "delay");
-cmdline_parse_token_num_t cmd_set_burst_tx_retry_time =
+static cmdline_parse_token_num_t cmd_set_burst_tx_retry_time =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_burst_tx_retry_result, time,
 				 RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_burst_tx_retry_retry =
+static cmdline_parse_token_string_t cmd_set_burst_tx_retry_retry =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_burst_tx_retry_result, retry, "retry");
-cmdline_parse_token_num_t cmd_set_burst_tx_retry_retry_num =
+static cmdline_parse_token_num_t cmd_set_burst_tx_retry_retry_num =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_burst_tx_retry_result, retry_num,
 				 RTE_UINT32);
 
-cmdline_parse_inst_t cmd_set_burst_tx_retry = {
+static cmdline_parse_inst_t cmd_set_burst_tx_retry = {
 	.f = cmd_set_burst_tx_retry_parsed,
 	.help_str = "set burst tx delay <delay_usec> retry <num_retry>",
 	.tokens = {
@@ -7099,22 +7099,22 @@ static void cmd_set_promisc_mode_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_setpromisc_set =
+static cmdline_parse_token_string_t cmd_setpromisc_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_promisc_mode_result, set, "set");
-cmdline_parse_token_string_t cmd_setpromisc_promisc =
+static cmdline_parse_token_string_t cmd_setpromisc_promisc =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_promisc_mode_result, promisc,
 				 "promisc");
-cmdline_parse_token_string_t cmd_setpromisc_portall =
+static cmdline_parse_token_string_t cmd_setpromisc_portall =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_promisc_mode_result, port_all,
 				 "all");
-cmdline_parse_token_num_t cmd_setpromisc_portnum =
+static cmdline_parse_token_num_t cmd_setpromisc_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_promisc_mode_result, port_num,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_setpromisc_mode =
+static cmdline_parse_token_string_t cmd_setpromisc_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_promisc_mode_result, mode,
 				 "on#off");
 
-cmdline_parse_inst_t cmd_set_promisc_mode_all = {
+static cmdline_parse_inst_t cmd_set_promisc_mode_all = {
 	.f = cmd_set_promisc_mode_parsed,
 	.data = (void *)1,
 	.help_str = "set promisc all on|off: Set promisc mode for all ports",
@@ -7127,7 +7127,7 @@ cmdline_parse_inst_t cmd_set_promisc_mode_all = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_promisc_mode_one = {
+static cmdline_parse_inst_t cmd_set_promisc_mode_one = {
 	.f = cmd_set_promisc_mode_parsed,
 	.data = (void *)0,
 	.help_str = "set promisc <port_id> on|off: Set promisc mode on port_id",
@@ -7173,22 +7173,22 @@ static void cmd_set_allmulti_mode_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_setallmulti_set =
+static cmdline_parse_token_string_t cmd_setallmulti_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_allmulti_mode_result, set, "set");
-cmdline_parse_token_string_t cmd_setallmulti_allmulti =
+static cmdline_parse_token_string_t cmd_setallmulti_allmulti =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_allmulti_mode_result, allmulti,
 				 "allmulti");
-cmdline_parse_token_string_t cmd_setallmulti_portall =
+static cmdline_parse_token_string_t cmd_setallmulti_portall =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_allmulti_mode_result, port_all,
 				 "all");
-cmdline_parse_token_num_t cmd_setallmulti_portnum =
+static cmdline_parse_token_num_t cmd_setallmulti_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_allmulti_mode_result, port_num,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_setallmulti_mode =
+static cmdline_parse_token_string_t cmd_setallmulti_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_allmulti_mode_result, mode,
 				 "on#off");
 
-cmdline_parse_inst_t cmd_set_allmulti_mode_all = {
+static cmdline_parse_inst_t cmd_set_allmulti_mode_all = {
 	.f = cmd_set_allmulti_mode_parsed,
 	.data = (void *)1,
 	.help_str = "set allmulti all on|off: Set allmulti mode for all ports",
@@ -7201,7 +7201,7 @@ cmdline_parse_inst_t cmd_set_allmulti_mode_all = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_allmulti_mode_one = {
+static cmdline_parse_inst_t cmd_set_allmulti_mode_one = {
 	.f = cmd_set_allmulti_mode_parsed,
 	.data = (void *)0,
 	.help_str = "set allmulti <port_id> on|off: "
@@ -7223,16 +7223,16 @@ struct cmd_link_flow_ctrl_show {
 	cmdline_fixed_string_t flow_ctrl;
 };
 
-cmdline_parse_token_string_t cmd_lfc_show_show =
+static cmdline_parse_token_string_t cmd_lfc_show_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_show,
 				show, "show");
-cmdline_parse_token_string_t cmd_lfc_show_port =
+static cmdline_parse_token_string_t cmd_lfc_show_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_show,
 				port, "port");
-cmdline_parse_token_num_t cmd_lfc_show_portid =
+static cmdline_parse_token_num_t cmd_lfc_show_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_show,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_lfc_show_flow_ctrl =
+static cmdline_parse_token_string_t cmd_lfc_show_flow_ctrl =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_show,
 				flow_ctrl, "flow_ctrl");
 
@@ -7277,7 +7277,7 @@ cmd_link_flow_ctrl_show_parsed(void *parsed_result,
 		info_border, info_border);
 }
 
-cmdline_parse_inst_t cmd_link_flow_control_show = {
+static cmdline_parse_inst_t cmd_link_flow_control_show = {
 	.f = cmd_link_flow_ctrl_show_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> flow_ctrl",
@@ -7313,61 +7313,61 @@ struct cmd_link_flow_ctrl_set_result {
 	portid_t port_id;
 };
 
-cmdline_parse_token_string_t cmd_lfc_set_set =
+static cmdline_parse_token_string_t cmd_lfc_set_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_lfc_set_flow_ctrl =
+static cmdline_parse_token_string_t cmd_lfc_set_flow_ctrl =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				flow_ctrl, "flow_ctrl");
-cmdline_parse_token_string_t cmd_lfc_set_rx =
+static cmdline_parse_token_string_t cmd_lfc_set_rx =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				rx, "rx");
-cmdline_parse_token_string_t cmd_lfc_set_rx_mode =
+static cmdline_parse_token_string_t cmd_lfc_set_rx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				rx_lfc_mode, "on#off");
-cmdline_parse_token_string_t cmd_lfc_set_tx =
+static cmdline_parse_token_string_t cmd_lfc_set_tx =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				tx, "tx");
-cmdline_parse_token_string_t cmd_lfc_set_tx_mode =
+static cmdline_parse_token_string_t cmd_lfc_set_tx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				tx_lfc_mode, "on#off");
-cmdline_parse_token_string_t cmd_lfc_set_high_water_str =
+static cmdline_parse_token_string_t cmd_lfc_set_high_water_str =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				hw_str, "high_water");
-cmdline_parse_token_num_t cmd_lfc_set_high_water =
+static cmdline_parse_token_num_t cmd_lfc_set_high_water =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				high_water, RTE_UINT32);
-cmdline_parse_token_string_t cmd_lfc_set_low_water_str =
+static cmdline_parse_token_string_t cmd_lfc_set_low_water_str =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				lw_str, "low_water");
-cmdline_parse_token_num_t cmd_lfc_set_low_water =
+static cmdline_parse_token_num_t cmd_lfc_set_low_water =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				low_water, RTE_UINT32);
-cmdline_parse_token_string_t cmd_lfc_set_pause_time_str =
+static cmdline_parse_token_string_t cmd_lfc_set_pause_time_str =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				pt_str, "pause_time");
-cmdline_parse_token_num_t cmd_lfc_set_pause_time =
+static cmdline_parse_token_num_t cmd_lfc_set_pause_time =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				pause_time, RTE_UINT16);
-cmdline_parse_token_string_t cmd_lfc_set_send_xon_str =
+static cmdline_parse_token_string_t cmd_lfc_set_send_xon_str =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				xon_str, "send_xon");
-cmdline_parse_token_num_t cmd_lfc_set_send_xon =
+static cmdline_parse_token_num_t cmd_lfc_set_send_xon =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				send_xon, RTE_UINT16);
-cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd_mode =
+static cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				mac_ctrl_frame_fwd, "mac_ctrl_frame_fwd");
-cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd =
+static cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				mac_ctrl_frame_fwd_mode, "on#off");
-cmdline_parse_token_string_t cmd_lfc_set_autoneg_str =
+static cmdline_parse_token_string_t cmd_lfc_set_autoneg_str =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				autoneg_str, "autoneg");
-cmdline_parse_token_string_t cmd_lfc_set_autoneg =
+static cmdline_parse_token_string_t cmd_lfc_set_autoneg =
 	TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				autoneg, "on#off");
-cmdline_parse_token_num_t cmd_lfc_set_portid =
+static cmdline_parse_token_num_t cmd_lfc_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
 				port_id, RTE_UINT16);
 
@@ -7376,7 +7376,7 @@ static void
 cmd_link_flow_ctrl_set_parsed(void *parsed_result, struct cmdline *cl,
 			      void *data);
 
-cmdline_parse_inst_t cmd_link_flow_control_set = {
+static cmdline_parse_inst_t cmd_link_flow_control_set = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = NULL,
 	.help_str = "set flow_ctrl rx on|off tx on|off <high_water> "
@@ -7402,7 +7402,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_rx = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_rx = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_rx,
 	.help_str = "set flow_ctrl rx on|off <port_id>: "
@@ -7417,7 +7417,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_rx = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_tx = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_tx = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_tx,
 	.help_str = "set flow_ctrl tx on|off <port_id>: "
@@ -7432,7 +7432,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_tx = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_hw = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_hw = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_hw,
 	.help_str = "set flow_ctrl high_water <value> <port_id>: "
@@ -7447,7 +7447,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_hw = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_lw = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_lw = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_lw,
 	.help_str = "set flow_ctrl low_water <value> <port_id>: "
@@ -7462,7 +7462,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_lw = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_pt = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_pt = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_pt,
 	.help_str = "set flow_ctrl pause_time <value> <port_id>: "
@@ -7477,7 +7477,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_pt = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_xon = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_xon = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_xon,
 	.help_str = "set flow_ctrl send_xon <value> <port_id>: "
@@ -7492,7 +7492,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_xon = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_macfwd = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_macfwd = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_macfwd,
 	.help_str = "set flow_ctrl mac_ctrl_frame_fwd on|off <port_id>: "
@@ -7507,7 +7507,7 @@ cmdline_parse_inst_t cmd_link_flow_control_set_macfwd = {
 	},
 };
 
-cmdline_parse_inst_t cmd_link_flow_control_set_autoneg = {
+static cmdline_parse_inst_t cmd_link_flow_control_set_autoneg = {
 	.f = cmd_link_flow_ctrl_set_parsed,
 	.data = (void *)&cmd_link_flow_control_set_autoneg,
 	.help_str = "set flow_ctrl autoneg on|off <port_id>: "
@@ -7650,41 +7650,41 @@ cmd_priority_flow_ctrl_set_parsed(void *parsed_result,
 			ret);
 }
 
-cmdline_parse_token_string_t cmd_pfc_set_set =
+static cmdline_parse_token_string_t cmd_pfc_set_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_pfc_set_flow_ctrl =
+static cmdline_parse_token_string_t cmd_pfc_set_flow_ctrl =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				pfc_ctrl, "pfc_ctrl");
-cmdline_parse_token_string_t cmd_pfc_set_rx =
+static cmdline_parse_token_string_t cmd_pfc_set_rx =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				rx, "rx");
-cmdline_parse_token_string_t cmd_pfc_set_rx_mode =
+static cmdline_parse_token_string_t cmd_pfc_set_rx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				rx_pfc_mode, "on#off");
-cmdline_parse_token_string_t cmd_pfc_set_tx =
+static cmdline_parse_token_string_t cmd_pfc_set_tx =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				tx, "tx");
-cmdline_parse_token_string_t cmd_pfc_set_tx_mode =
+static cmdline_parse_token_string_t cmd_pfc_set_tx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				tx_pfc_mode, "on#off");
-cmdline_parse_token_num_t cmd_pfc_set_high_water =
+static cmdline_parse_token_num_t cmd_pfc_set_high_water =
 	TOKEN_NUM_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				high_water, RTE_UINT32);
-cmdline_parse_token_num_t cmd_pfc_set_low_water =
+static cmdline_parse_token_num_t cmd_pfc_set_low_water =
 	TOKEN_NUM_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				low_water, RTE_UINT32);
-cmdline_parse_token_num_t cmd_pfc_set_pause_time =
+static cmdline_parse_token_num_t cmd_pfc_set_pause_time =
 	TOKEN_NUM_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				pause_time, RTE_UINT16);
-cmdline_parse_token_num_t cmd_pfc_set_priority =
+static cmdline_parse_token_num_t cmd_pfc_set_priority =
 	TOKEN_NUM_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				priority, RTE_UINT8);
-cmdline_parse_token_num_t cmd_pfc_set_portid =
+static cmdline_parse_token_num_t cmd_pfc_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_priority_flow_ctrl_set_result,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_priority_flow_control_set = {
+static cmdline_parse_inst_t cmd_priority_flow_control_set = {
 	.f = cmd_priority_flow_ctrl_set_parsed,
 	.data = NULL,
 	.help_str = "set pfc_ctrl rx on|off tx on|off <high_water> <low_water> "
@@ -7762,44 +7762,44 @@ cmd_queue_priority_flow_ctrl_set_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_q_pfc_set_set =
+static cmdline_parse_token_string_t cmd_q_pfc_set_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_q_pfc_set_flow_ctrl =
+static cmdline_parse_token_string_t cmd_q_pfc_set_flow_ctrl =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				pfc_queue_ctrl, "pfc_queue_ctrl");
-cmdline_parse_token_num_t cmd_q_pfc_set_portid =
+static cmdline_parse_token_num_t cmd_q_pfc_set_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_q_pfc_set_rx =
+static cmdline_parse_token_string_t cmd_q_pfc_set_rx =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				rx, "rx");
-cmdline_parse_token_string_t cmd_q_pfc_set_rx_mode =
+static cmdline_parse_token_string_t cmd_q_pfc_set_rx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				rx_pfc_mode, "on#off");
-cmdline_parse_token_num_t cmd_q_pfc_set_tx_qid =
+static cmdline_parse_token_num_t cmd_q_pfc_set_tx_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				tx_qid, RTE_UINT16);
-cmdline_parse_token_num_t cmd_q_pfc_set_tx_tc =
+static cmdline_parse_token_num_t cmd_q_pfc_set_tx_tc =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				tx_tc, RTE_UINT8);
-cmdline_parse_token_string_t cmd_q_pfc_set_tx =
+static cmdline_parse_token_string_t cmd_q_pfc_set_tx =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				tx, "tx");
-cmdline_parse_token_string_t cmd_q_pfc_set_tx_mode =
+static cmdline_parse_token_string_t cmd_q_pfc_set_tx_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				tx_pfc_mode, "on#off");
-cmdline_parse_token_num_t cmd_q_pfc_set_rx_qid =
+static cmdline_parse_token_num_t cmd_q_pfc_set_rx_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				rx_qid, RTE_UINT16);
-cmdline_parse_token_num_t cmd_q_pfc_set_rx_tc =
+static cmdline_parse_token_num_t cmd_q_pfc_set_rx_tc =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				rx_tc, RTE_UINT8);
-cmdline_parse_token_num_t cmd_q_pfc_set_pause_time =
+static cmdline_parse_token_num_t cmd_q_pfc_set_pause_time =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
 				pause_time, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_queue_priority_flow_control_set = {
+static cmdline_parse_inst_t cmd_queue_priority_flow_control_set = {
 	.f = cmd_queue_priority_flow_ctrl_set_parsed,
 	.data = NULL,
 	.help_str = "set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> "
@@ -7836,13 +7836,13 @@ static void cmd_reset_parsed(__rte_unused void *parsed_result,
 	set_def_fwd_config();
 }
 
-cmdline_parse_token_string_t cmd_reset_set =
+static cmdline_parse_token_string_t cmd_reset_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_reset_result, reset, "set");
-cmdline_parse_token_string_t cmd_reset_def =
+static cmdline_parse_token_string_t cmd_reset_def =
 	TOKEN_STRING_INITIALIZER(struct cmd_reset_result, def,
 				 "default");
 
-cmdline_parse_inst_t cmd_reset = {
+static cmdline_parse_inst_t cmd_reset = {
 	.f = cmd_reset_parsed,
 	.data = NULL,
 	.help_str = "set default: Reset default forwarding configuration",
@@ -7858,7 +7858,7 @@ struct cmd_start_result {
 	cmdline_fixed_string_t start;
 };
 
-cmdline_parse_token_string_t cmd_start_start =
+static cmdline_parse_token_string_t cmd_start_start =
 	TOKEN_STRING_INITIALIZER(struct cmd_start_result, start, "start");
 
 static void cmd_start_parsed(__rte_unused void *parsed_result,
@@ -7868,7 +7868,7 @@ static void cmd_start_parsed(__rte_unused void *parsed_result,
 	start_packet_forwarding(0);
 }
 
-cmdline_parse_inst_t cmd_start = {
+static cmdline_parse_inst_t cmd_start = {
 	.f = cmd_start_parsed,
 	.data = NULL,
 	.help_str = "start: Start packet forwarding",
@@ -7892,14 +7892,14 @@ cmd_start_tx_first_parsed(__rte_unused void *parsed_result,
 	start_packet_forwarding(1);
 }
 
-cmdline_parse_token_string_t cmd_start_tx_first_start =
+static cmdline_parse_token_string_t cmd_start_tx_first_start =
 	TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_result, start,
 				 "start");
-cmdline_parse_token_string_t cmd_start_tx_first_tx_first =
+static cmdline_parse_token_string_t cmd_start_tx_first_tx_first =
 	TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_result,
 				 tx_first, "tx_first");
 
-cmdline_parse_inst_t cmd_start_tx_first = {
+static cmdline_parse_inst_t cmd_start_tx_first = {
 	.f = cmd_start_tx_first_parsed,
 	.data = NULL,
 	.help_str = "start tx_first: Start packet forwarding, "
@@ -7928,17 +7928,17 @@ cmd_start_tx_first_n_parsed(void *parsed_result,
 	start_packet_forwarding(res->tx_num);
 }
 
-cmdline_parse_token_string_t cmd_start_tx_first_n_start =
+static cmdline_parse_token_string_t cmd_start_tx_first_n_start =
 	TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_n_result,
 			start, "start");
-cmdline_parse_token_string_t cmd_start_tx_first_n_tx_first =
+static cmdline_parse_token_string_t cmd_start_tx_first_n_tx_first =
 	TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_n_result,
 			tx_first, "tx_first");
-cmdline_parse_token_num_t cmd_start_tx_first_n_tx_num =
+static cmdline_parse_token_num_t cmd_start_tx_first_n_tx_num =
 	TOKEN_NUM_INITIALIZER(struct cmd_start_tx_first_n_result,
 			tx_num, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_start_tx_first_n = {
+static cmdline_parse_inst_t cmd_start_tx_first_n = {
 	.f = cmd_start_tx_first_n_parsed,
 	.data = NULL,
 	.help_str = "start tx_first <num>: "
@@ -7959,14 +7959,14 @@ struct cmd_set_link_up_result {
 	portid_t port_id;
 };
 
-cmdline_parse_token_string_t cmd_set_link_up_set =
+static cmdline_parse_token_string_t cmd_set_link_up_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_up_result, set, "set");
-cmdline_parse_token_string_t cmd_set_link_up_link_up =
+static cmdline_parse_token_string_t cmd_set_link_up_link_up =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_up_result, link_up,
 				"link-up");
-cmdline_parse_token_string_t cmd_set_link_up_port =
+static cmdline_parse_token_string_t cmd_set_link_up_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_up_result, port, "port");
-cmdline_parse_token_num_t cmd_set_link_up_port_id =
+static cmdline_parse_token_num_t cmd_set_link_up_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_link_up_result, port_id,
 				RTE_UINT16);
 
@@ -7978,7 +7978,7 @@ static void cmd_set_link_up_parsed(__rte_unused void *parsed_result,
 	dev_set_link_up(res->port_id);
 }
 
-cmdline_parse_inst_t cmd_set_link_up = {
+static cmdline_parse_inst_t cmd_set_link_up = {
 	.f = cmd_set_link_up_parsed,
 	.data = NULL,
 	.help_str = "set link-up port <port id>",
@@ -7999,14 +7999,14 @@ struct cmd_set_link_down_result {
 	portid_t port_id;
 };
 
-cmdline_parse_token_string_t cmd_set_link_down_set =
+static cmdline_parse_token_string_t cmd_set_link_down_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_down_result, set, "set");
-cmdline_parse_token_string_t cmd_set_link_down_link_down =
+static cmdline_parse_token_string_t cmd_set_link_down_link_down =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_down_result, link_down,
 				"link-down");
-cmdline_parse_token_string_t cmd_set_link_down_port =
+static cmdline_parse_token_string_t cmd_set_link_down_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_link_down_result, port, "port");
-cmdline_parse_token_num_t cmd_set_link_down_port_id =
+static cmdline_parse_token_num_t cmd_set_link_down_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_link_down_result, port_id,
 				RTE_UINT16);
 
@@ -8019,7 +8019,7 @@ static void cmd_set_link_down_parsed(
 	dev_set_link_down(res->port_id);
 }
 
-cmdline_parse_inst_t cmd_set_link_down = {
+static cmdline_parse_inst_t cmd_set_link_down = {
 	.f = cmd_set_link_down_parsed,
 	.data = NULL,
 	.help_str = "set link-down port <port id>",
@@ -8060,15 +8060,15 @@ static void cmd_showcfg_parsed(void *parsed_result,
 		show_tx_pkt_times();
 }
 
-cmdline_parse_token_string_t cmd_showcfg_show =
+static cmdline_parse_token_string_t cmd_showcfg_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showcfg_result, show, "show");
-cmdline_parse_token_string_t cmd_showcfg_port =
+static cmdline_parse_token_string_t cmd_showcfg_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showcfg_result, cfg, "config");
-cmdline_parse_token_string_t cmd_showcfg_what =
+static cmdline_parse_token_string_t cmd_showcfg_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_showcfg_result, what,
 				 "rxtx#cores#fwd#rxoffs#rxpkts#txpkts#txtimes");
 
-cmdline_parse_inst_t cmd_showcfg = {
+static cmdline_parse_inst_t cmd_showcfg = {
 	.f = cmd_showcfg_parsed,
 	.data = NULL,
 	.help_str = "show config rxtx|cores|fwd|rxoffs|rxpkts|txpkts|txtimes",
@@ -8126,17 +8126,17 @@ static void cmd_showportall_parsed(void *parsed_result,
 			port_dcb_info_display(i);
 }
 
-cmdline_parse_token_string_t cmd_showportall_show =
+static cmdline_parse_token_string_t cmd_showportall_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, show,
 				 "show#clear");
-cmdline_parse_token_string_t cmd_showportall_port =
+static cmdline_parse_token_string_t cmd_showportall_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, port, "port");
-cmdline_parse_token_string_t cmd_showportall_what =
+static cmdline_parse_token_string_t cmd_showportall_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, what,
 				 "info#summary#stats#xstats#fdir#dcb_tc");
-cmdline_parse_token_string_t cmd_showportall_all =
+static cmdline_parse_token_string_t cmd_showportall_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, all, "all");
-cmdline_parse_inst_t cmd_showportall = {
+static cmdline_parse_inst_t cmd_showportall = {
 	.f = cmd_showportall_parsed,
 	.data = NULL,
 	.help_str = "show|clear port "
@@ -8186,18 +8186,18 @@ static void cmd_showport_parsed(void *parsed_result,
 		port_dcb_info_display(res->portnum);
 }
 
-cmdline_parse_token_string_t cmd_showport_show =
+static cmdline_parse_token_string_t cmd_showport_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, show,
 				 "show#clear");
-cmdline_parse_token_string_t cmd_showport_port =
+static cmdline_parse_token_string_t cmd_showport_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, port, "port");
-cmdline_parse_token_string_t cmd_showport_what =
+static cmdline_parse_token_string_t cmd_showport_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_result, what,
 				 "info#summary#stats#xstats#fdir#dcb_tc");
-cmdline_parse_token_num_t cmd_showport_portnum =
+static cmdline_parse_token_num_t cmd_showport_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_showport_result, portnum, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_showport = {
+static cmdline_parse_inst_t cmd_showport = {
 	.f = cmd_showport_parsed,
 	.data = NULL,
 	.help_str = "show|clear port "
@@ -8312,23 +8312,23 @@ cmd_representor_info_parsed(void *parsed_result,
 	free(info);
 }
 
-cmdline_parse_token_string_t cmd_representor_info_show =
+static cmdline_parse_token_string_t cmd_representor_info_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_representor_info_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_representor_info_port =
+static cmdline_parse_token_string_t cmd_representor_info_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_representor_info_result,
 			cmd_port, "port");
-cmdline_parse_token_string_t cmd_representor_info_info =
+static cmdline_parse_token_string_t cmd_representor_info_info =
 	TOKEN_STRING_INITIALIZER(struct cmd_representor_info_result,
 			cmd_info, "info");
-cmdline_parse_token_num_t cmd_representor_info_pid =
+static cmdline_parse_token_num_t cmd_representor_info_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_representor_info_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_representor_info_keyword =
+static cmdline_parse_token_string_t cmd_representor_info_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_representor_info_result,
 			cmd_keyword, "representor");
 
-cmdline_parse_inst_t cmd_representor_info = {
+static cmdline_parse_inst_t cmd_representor_info = {
 	.f = cmd_representor_info_parsed,
 	.data = NULL,
 	.help_str = "show port info <port_id> representor",
@@ -8364,19 +8364,19 @@ static void cmd_showdevice_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_showdevice_show =
+static cmdline_parse_token_string_t cmd_showdevice_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, show,
 				 "show");
-cmdline_parse_token_string_t cmd_showdevice_device =
+static cmdline_parse_token_string_t cmd_showdevice_device =
 	TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, device, "device");
-cmdline_parse_token_string_t cmd_showdevice_what =
+static cmdline_parse_token_string_t cmd_showdevice_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, what,
 				 "info");
-cmdline_parse_token_string_t cmd_showdevice_identifier =
+static cmdline_parse_token_string_t cmd_showdevice_identifier =
 	TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result,
 			identifier, NULL);
 
-cmdline_parse_inst_t cmd_showdevice = {
+static cmdline_parse_inst_t cmd_showdevice = {
 	.f = cmd_showdevice_parsed,
 	.data = NULL,
 	.help_str = "show device info <identifier>|all",
@@ -8411,17 +8411,17 @@ static void cmd_showeeprom_parsed(void *parsed_result,
 		fprintf(stderr, "Unknown argument\n");
 }
 
-cmdline_parse_token_string_t cmd_showeeprom_show =
+static cmdline_parse_token_string_t cmd_showeeprom_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, show, "show");
-cmdline_parse_token_string_t cmd_showeeprom_port =
+static cmdline_parse_token_string_t cmd_showeeprom_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, port, "port");
-cmdline_parse_token_num_t cmd_showeeprom_portnum =
+static cmdline_parse_token_num_t cmd_showeeprom_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_showeeprom_result, portnum,
 			RTE_UINT16);
-cmdline_parse_token_string_t cmd_showeeprom_type =
+static cmdline_parse_token_string_t cmd_showeeprom_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, type, "module_eeprom#eeprom");
 
-cmdline_parse_inst_t cmd_showeeprom = {
+static cmdline_parse_inst_t cmd_showeeprom = {
 	.f = cmd_showeeprom_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> module_eeprom|eeprom",
@@ -8456,20 +8456,20 @@ cmd_showqueue_parsed(void *parsed_result,
 		tx_queue_infos_display(res->portnum, res->queuenum);
 }
 
-cmdline_parse_token_string_t cmd_showqueue_show =
+static cmdline_parse_token_string_t cmd_showqueue_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showqueue_result, show, "show");
-cmdline_parse_token_string_t cmd_showqueue_type =
+static cmdline_parse_token_string_t cmd_showqueue_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_showqueue_result, type, "rxq#txq");
-cmdline_parse_token_string_t cmd_showqueue_what =
+static cmdline_parse_token_string_t cmd_showqueue_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_showqueue_result, what, "info");
-cmdline_parse_token_num_t cmd_showqueue_portnum =
+static cmdline_parse_token_num_t cmd_showqueue_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_showqueue_result, portnum,
 		RTE_UINT16);
-cmdline_parse_token_num_t cmd_showqueue_queuenum =
+static cmdline_parse_token_num_t cmd_showqueue_queuenum =
 	TOKEN_NUM_INITIALIZER(struct cmd_showqueue_result, queuenum,
 		RTE_UINT16);
 
-cmdline_parse_inst_t cmd_showqueue = {
+static cmdline_parse_inst_t cmd_showqueue = {
 	.f = cmd_showqueue_parsed,
 	.data = NULL,
 	.help_str = "show rxq|txq info <port_id> <queue_id>",
@@ -8491,13 +8491,13 @@ struct fwd_result {
 	cmdline_fixed_string_t all;
 };
 
-cmdline_parse_token_string_t cmd_fwd_action =
+static cmdline_parse_token_string_t cmd_fwd_action =
 	TOKEN_STRING_INITIALIZER(struct fwd_result, action, "show#clear");
-cmdline_parse_token_string_t cmd_fwd_fwd =
+static cmdline_parse_token_string_t cmd_fwd_fwd =
 	TOKEN_STRING_INITIALIZER(struct fwd_result, fwd, "fwd");
-cmdline_parse_token_string_t cmd_fwd_stats =
+static cmdline_parse_token_string_t cmd_fwd_stats =
 	TOKEN_STRING_INITIALIZER(struct fwd_result, stats, "stats");
-cmdline_parse_token_string_t cmd_fwd_all =
+static cmdline_parse_token_string_t cmd_fwd_all =
 	TOKEN_STRING_INITIALIZER(struct fwd_result, all, "all");
 
 static void
@@ -8543,16 +8543,16 @@ cmd_read_reg_parsed(void *parsed_result,
 	port_reg_display(res->port_id, res->reg_off);
 }
 
-cmdline_parse_token_string_t cmd_read_reg_read =
+static cmdline_parse_token_string_t cmd_read_reg_read =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_result, read, "read");
-cmdline_parse_token_string_t cmd_read_reg_reg =
+static cmdline_parse_token_string_t cmd_read_reg_reg =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_result, reg, "reg");
-cmdline_parse_token_num_t cmd_read_reg_port_id =
+static cmdline_parse_token_num_t cmd_read_reg_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_result, port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_read_reg_reg_off =
+static cmdline_parse_token_num_t cmd_read_reg_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_result, reg_off, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_read_reg = {
+static cmdline_parse_inst_t cmd_read_reg = {
 	.f = cmd_read_reg_parsed,
 	.data = NULL,
 	.help_str = "read reg <port_id> <reg_off>",
@@ -8585,26 +8585,26 @@ cmd_read_reg_bit_field_parsed(void *parsed_result,
 				   res->bit1_pos, res->bit2_pos);
 }
 
-cmdline_parse_token_string_t cmd_read_reg_bit_field_read =
+static cmdline_parse_token_string_t cmd_read_reg_bit_field_read =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_bit_field_result, read,
 				 "read");
-cmdline_parse_token_string_t cmd_read_reg_bit_field_regfield =
+static cmdline_parse_token_string_t cmd_read_reg_bit_field_regfield =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_bit_field_result,
 				 regfield, "regfield");
-cmdline_parse_token_num_t cmd_read_reg_bit_field_port_id =
+static cmdline_parse_token_num_t cmd_read_reg_bit_field_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_field_result, port_id,
 			      RTE_UINT16);
-cmdline_parse_token_num_t cmd_read_reg_bit_field_reg_off =
+static cmdline_parse_token_num_t cmd_read_reg_bit_field_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_field_result, reg_off,
 			      RTE_UINT32);
-cmdline_parse_token_num_t cmd_read_reg_bit_field_bit1_pos =
+static cmdline_parse_token_num_t cmd_read_reg_bit_field_bit1_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_field_result, bit1_pos,
 			      RTE_UINT8);
-cmdline_parse_token_num_t cmd_read_reg_bit_field_bit2_pos =
+static cmdline_parse_token_num_t cmd_read_reg_bit_field_bit2_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_field_result, bit2_pos,
 			      RTE_UINT8);
 
-cmdline_parse_inst_t cmd_read_reg_bit_field = {
+static cmdline_parse_inst_t cmd_read_reg_bit_field = {
 	.f = cmd_read_reg_bit_field_parsed,
 	.data = NULL,
 	.help_str = "read regfield <port_id> <reg_off> <bit_x> <bit_y>: "
@@ -8638,22 +8638,22 @@ cmd_read_reg_bit_parsed(void *parsed_result,
 	port_reg_bit_display(res->port_id, res->reg_off, res->bit_pos);
 }
 
-cmdline_parse_token_string_t cmd_read_reg_bit_read =
+static cmdline_parse_token_string_t cmd_read_reg_bit_read =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_bit_result, read, "read");
-cmdline_parse_token_string_t cmd_read_reg_bit_regbit =
+static cmdline_parse_token_string_t cmd_read_reg_bit_regbit =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_reg_bit_result,
 				 regbit, "regbit");
-cmdline_parse_token_num_t cmd_read_reg_bit_port_id =
+static cmdline_parse_token_num_t cmd_read_reg_bit_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_result, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_num_t cmd_read_reg_bit_reg_off =
+static cmdline_parse_token_num_t cmd_read_reg_bit_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_result, reg_off,
 				 RTE_UINT32);
-cmdline_parse_token_num_t cmd_read_reg_bit_bit_pos =
+static cmdline_parse_token_num_t cmd_read_reg_bit_bit_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_reg_bit_result, bit_pos,
 				 RTE_UINT8);
 
-cmdline_parse_inst_t cmd_read_reg_bit = {
+static cmdline_parse_inst_t cmd_read_reg_bit = {
 	.f = cmd_read_reg_bit_parsed,
 	.data = NULL,
 	.help_str = "read regbit <port_id> <reg_off> <bit_x>: 0 <= bit_x <= 31",
@@ -8685,18 +8685,18 @@ cmd_write_reg_parsed(void *parsed_result,
 	port_reg_set(res->port_id, res->reg_off, res->value);
 }
 
-cmdline_parse_token_string_t cmd_write_reg_write =
+static cmdline_parse_token_string_t cmd_write_reg_write =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_result, write, "write");
-cmdline_parse_token_string_t cmd_write_reg_reg =
+static cmdline_parse_token_string_t cmd_write_reg_reg =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_result, reg, "reg");
-cmdline_parse_token_num_t cmd_write_reg_port_id =
+static cmdline_parse_token_num_t cmd_write_reg_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_result, port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_write_reg_reg_off =
+static cmdline_parse_token_num_t cmd_write_reg_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_result, reg_off, RTE_UINT32);
-cmdline_parse_token_num_t cmd_write_reg_value =
+static cmdline_parse_token_num_t cmd_write_reg_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_result, value, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_write_reg = {
+static cmdline_parse_inst_t cmd_write_reg = {
 	.f = cmd_write_reg_parsed,
 	.data = NULL,
 	.help_str = "write reg <port_id> <reg_off> <reg_value>",
@@ -8731,29 +8731,29 @@ cmd_write_reg_bit_field_parsed(void *parsed_result,
 			  res->bit1_pos, res->bit2_pos, res->value);
 }
 
-cmdline_parse_token_string_t cmd_write_reg_bit_field_write =
+static cmdline_parse_token_string_t cmd_write_reg_bit_field_write =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_bit_field_result, write,
 				 "write");
-cmdline_parse_token_string_t cmd_write_reg_bit_field_regfield =
+static cmdline_parse_token_string_t cmd_write_reg_bit_field_regfield =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_bit_field_result,
 				 regfield, "regfield");
-cmdline_parse_token_num_t cmd_write_reg_bit_field_port_id =
+static cmdline_parse_token_num_t cmd_write_reg_bit_field_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_field_result, port_id,
 			      RTE_UINT16);
-cmdline_parse_token_num_t cmd_write_reg_bit_field_reg_off =
+static cmdline_parse_token_num_t cmd_write_reg_bit_field_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_field_result, reg_off,
 			      RTE_UINT32);
-cmdline_parse_token_num_t cmd_write_reg_bit_field_bit1_pos =
+static cmdline_parse_token_num_t cmd_write_reg_bit_field_bit1_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_field_result, bit1_pos,
 			      RTE_UINT8);
-cmdline_parse_token_num_t cmd_write_reg_bit_field_bit2_pos =
+static cmdline_parse_token_num_t cmd_write_reg_bit_field_bit2_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_field_result, bit2_pos,
 			      RTE_UINT8);
-cmdline_parse_token_num_t cmd_write_reg_bit_field_value =
+static cmdline_parse_token_num_t cmd_write_reg_bit_field_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_field_result, value,
 			      RTE_UINT32);
 
-cmdline_parse_inst_t cmd_write_reg_bit_field = {
+static cmdline_parse_inst_t cmd_write_reg_bit_field = {
 	.f = cmd_write_reg_bit_field_parsed,
 	.data = NULL,
 	.help_str = "write regfield <port_id> <reg_off> <bit_x> <bit_y> "
@@ -8790,26 +8790,26 @@ cmd_write_reg_bit_parsed(void *parsed_result,
 	port_reg_bit_set(res->port_id, res->reg_off, res->bit_pos, res->value);
 }
 
-cmdline_parse_token_string_t cmd_write_reg_bit_write =
+static cmdline_parse_token_string_t cmd_write_reg_bit_write =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_bit_result, write,
 				 "write");
-cmdline_parse_token_string_t cmd_write_reg_bit_regbit =
+static cmdline_parse_token_string_t cmd_write_reg_bit_regbit =
 	TOKEN_STRING_INITIALIZER(struct cmd_write_reg_bit_result,
 				 regbit, "regbit");
-cmdline_parse_token_num_t cmd_write_reg_bit_port_id =
+static cmdline_parse_token_num_t cmd_write_reg_bit_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_result, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_num_t cmd_write_reg_bit_reg_off =
+static cmdline_parse_token_num_t cmd_write_reg_bit_reg_off =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_result, reg_off,
 				 RTE_UINT32);
-cmdline_parse_token_num_t cmd_write_reg_bit_bit_pos =
+static cmdline_parse_token_num_t cmd_write_reg_bit_bit_pos =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_result, bit_pos,
 				 RTE_UINT8);
-cmdline_parse_token_num_t cmd_write_reg_bit_value =
+static cmdline_parse_token_num_t cmd_write_reg_bit_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_write_reg_bit_result, value,
 				 RTE_UINT8);
 
-cmdline_parse_inst_t cmd_write_reg_bit = {
+static cmdline_parse_inst_t cmd_write_reg_bit = {
 	.f = cmd_write_reg_bit_parsed,
 	.data = NULL,
 	.help_str = "write regbit <port_id> <reg_off> <bit_x> 0|1: "
@@ -8847,22 +8847,22 @@ cmd_read_rxd_txd_parsed(void *parsed_result,
 		tx_ring_desc_display(res->port_id, res->queue_id, res->desc_id);
 }
 
-cmdline_parse_token_string_t cmd_read_rxd_txd_read =
+static cmdline_parse_token_string_t cmd_read_rxd_txd_read =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_rxd_txd_result, read, "read");
-cmdline_parse_token_string_t cmd_read_rxd_txd_rxd_txd =
+static cmdline_parse_token_string_t cmd_read_rxd_txd_rxd_txd =
 	TOKEN_STRING_INITIALIZER(struct cmd_read_rxd_txd_result, rxd_txd,
 				 "rxd#txd");
-cmdline_parse_token_num_t cmd_read_rxd_txd_port_id =
+static cmdline_parse_token_num_t cmd_read_rxd_txd_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_rxd_txd_result, port_id,
 				 RTE_UINT16);
-cmdline_parse_token_num_t cmd_read_rxd_txd_queue_id =
+static cmdline_parse_token_num_t cmd_read_rxd_txd_queue_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_rxd_txd_result, queue_id,
 				 RTE_UINT16);
-cmdline_parse_token_num_t cmd_read_rxd_txd_desc_id =
+static cmdline_parse_token_num_t cmd_read_rxd_txd_desc_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_read_rxd_txd_result, desc_id,
 				 RTE_UINT16);
 
-cmdline_parse_inst_t cmd_read_rxd_txd = {
+static cmdline_parse_inst_t cmd_read_rxd_txd = {
 	.f = cmd_read_rxd_txd_parsed,
 	.data = NULL,
 	.help_str = "read rxd|txd <port_id> <queue_id> <desc_id>",
@@ -8888,10 +8888,10 @@ static void cmd_quit_parsed(__rte_unused void *parsed_result,
 	cmdline_quit(cl);
 }
 
-cmdline_parse_token_string_t cmd_quit_quit =
+static cmdline_parse_token_string_t cmd_quit_quit =
 	TOKEN_STRING_INITIALIZER(struct cmd_quit_result, quit, "quit");
 
-cmdline_parse_inst_t cmd_quit = {
+static cmdline_parse_inst_t cmd_quit = {
 	.f = cmd_quit_parsed,
 	.data = NULL,
 	.help_str = "quit: Exit application",
@@ -8930,19 +8930,19 @@ static void cmd_mac_addr_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_mac_addr_cmd =
+static cmdline_parse_token_string_t cmd_mac_addr_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_mac_addr_result, mac_addr_cmd,
 				"mac_addr");
-cmdline_parse_token_string_t cmd_mac_addr_what =
+static cmdline_parse_token_string_t cmd_mac_addr_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_mac_addr_result, what,
 				"add#remove#set");
-cmdline_parse_token_num_t cmd_mac_addr_portnum =
+static cmdline_parse_token_num_t cmd_mac_addr_portnum =
 		TOKEN_NUM_INITIALIZER(struct cmd_mac_addr_result, port_num,
 					RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_mac_addr_addr =
+static cmdline_parse_token_etheraddr_t cmd_mac_addr_addr =
 		TOKEN_ETHERADDR_INITIALIZER(struct cmd_mac_addr_result, address);
 
-cmdline_parse_inst_t cmd_mac_addr = {
+static cmdline_parse_inst_t cmd_mac_addr = {
 	.f = cmd_mac_addr_parsed,
 	.data = (void *)0,
 	.help_str = "mac_addr add|remove|set <port_id> <mac_addr>: "
@@ -8979,17 +8979,17 @@ static void cmd_set_eth_peer_parsed(void *parsed_result,
 			fwd_config_setup();
 		}
 }
-cmdline_parse_token_string_t cmd_eth_peer_set =
+static cmdline_parse_token_string_t cmd_eth_peer_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_eth_peer_result, set, "set");
-cmdline_parse_token_string_t cmd_eth_peer =
+static cmdline_parse_token_string_t cmd_eth_peer =
 	TOKEN_STRING_INITIALIZER(struct cmd_eth_peer_result, eth_peer, "eth-peer");
-cmdline_parse_token_num_t cmd_eth_peer_port_id =
+static cmdline_parse_token_num_t cmd_eth_peer_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_eth_peer_result, port_id,
 		RTE_UINT16);
-cmdline_parse_token_string_t cmd_eth_peer_addr =
+static cmdline_parse_token_string_t cmd_eth_peer_addr =
 	TOKEN_STRING_INITIALIZER(struct cmd_eth_peer_result, peer_addr, NULL);
 
-cmdline_parse_inst_t cmd_set_fwd_eth_peer = {
+static cmdline_parse_inst_t cmd_set_fwd_eth_peer = {
 	.f = cmd_set_eth_peer_parsed,
 	.data = NULL,
 	.help_str = "set eth-peer <port_id> <peer_mac>",
@@ -9023,26 +9023,26 @@ cmd_set_qmap_parsed(void *parsed_result,
 	set_qmap(res->port_id, (uint8_t)is_rx, res->queue_id, res->map_value);
 }
 
-cmdline_parse_token_string_t cmd_setqmap_set =
+static cmdline_parse_token_string_t cmd_setqmap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_qmap_result,
 				 set, "set");
-cmdline_parse_token_string_t cmd_setqmap_qmap =
+static cmdline_parse_token_string_t cmd_setqmap_qmap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_qmap_result,
 				 qmap, "stat_qmap");
-cmdline_parse_token_string_t cmd_setqmap_what =
+static cmdline_parse_token_string_t cmd_setqmap_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_qmap_result,
 				 what, "tx#rx");
-cmdline_parse_token_num_t cmd_setqmap_portid =
+static cmdline_parse_token_num_t cmd_setqmap_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_qmap_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_setqmap_queueid =
+static cmdline_parse_token_num_t cmd_setqmap_queueid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_qmap_result,
 			      queue_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_setqmap_mapvalue =
+static cmdline_parse_token_num_t cmd_setqmap_mapvalue =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_qmap_result,
 			      map_value, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_set_qmap = {
+static cmdline_parse_inst_t cmd_set_qmap = {
 	.f = cmd_set_qmap_parsed,
 	.data = NULL,
 	.help_str = "set stat_qmap rx|tx <port_id> <queue_id> <map_value>: "
@@ -9078,17 +9078,17 @@ cmd_set_xstats_hide_zero_parsed(void *parsed_result,
 	set_xstats_hide_zero(on_off);
 }
 
-cmdline_parse_token_string_t cmd_set_xstats_hide_zero_keyword =
+static cmdline_parse_token_string_t cmd_set_xstats_hide_zero_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_xstats_hide_zero_result,
 				 keyword, "set");
-cmdline_parse_token_string_t cmd_set_xstats_hide_zero_name =
+static cmdline_parse_token_string_t cmd_set_xstats_hide_zero_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_xstats_hide_zero_result,
 				 name, "xstats-hide-zero");
-cmdline_parse_token_string_t cmd_set_xstats_hide_zero_on_off =
+static cmdline_parse_token_string_t cmd_set_xstats_hide_zero_on_off =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_xstats_hide_zero_result,
 				 on_off, "on#off");
 
-cmdline_parse_inst_t cmd_set_xstats_hide_zero = {
+static cmdline_parse_inst_t cmd_set_xstats_hide_zero = {
 	.f = cmd_set_xstats_hide_zero_parsed,
 	.data = NULL,
 	.help_str = "set xstats-hide-zero on|off",
@@ -9120,17 +9120,17 @@ cmd_set_record_core_cycles_parsed(void *parsed_result,
 	set_record_core_cycles(on_off);
 }
 
-cmdline_parse_token_string_t cmd_set_record_core_cycles_keyword =
+static cmdline_parse_token_string_t cmd_set_record_core_cycles_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_core_cycles_result,
 				 keyword, "set");
-cmdline_parse_token_string_t cmd_set_record_core_cycles_name =
+static cmdline_parse_token_string_t cmd_set_record_core_cycles_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_core_cycles_result,
 				 name, "record-core-cycles");
-cmdline_parse_token_string_t cmd_set_record_core_cycles_on_off =
+static cmdline_parse_token_string_t cmd_set_record_core_cycles_on_off =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_core_cycles_result,
 				 on_off, "on#off");
 
-cmdline_parse_inst_t cmd_set_record_core_cycles = {
+static cmdline_parse_inst_t cmd_set_record_core_cycles = {
 	.f = cmd_set_record_core_cycles_parsed,
 	.data = NULL,
 	.help_str = "set record-core-cycles on|off",
@@ -9162,17 +9162,17 @@ cmd_set_record_burst_stats_parsed(void *parsed_result,
 	set_record_burst_stats(on_off);
 }
 
-cmdline_parse_token_string_t cmd_set_record_burst_stats_keyword =
+static cmdline_parse_token_string_t cmd_set_record_burst_stats_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
 				 keyword, "set");
-cmdline_parse_token_string_t cmd_set_record_burst_stats_name =
+static cmdline_parse_token_string_t cmd_set_record_burst_stats_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
 				 name, "record-burst-stats");
-cmdline_parse_token_string_t cmd_set_record_burst_stats_on_off =
+static cmdline_parse_token_string_t cmd_set_record_burst_stats_on_off =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
 				 on_off, "on#off");
 
-cmdline_parse_inst_t cmd_set_record_burst_stats = {
+static cmdline_parse_inst_t cmd_set_record_burst_stats = {
 	.f = cmd_set_record_burst_stats_parsed,
 	.data = NULL,
 	.help_str = "set record-burst-stats on|off",
@@ -9214,26 +9214,26 @@ cmd_set_uc_hash_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_set_uc_hash_set =
+static cmdline_parse_token_string_t cmd_set_uc_hash_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_hash_table,
 				 set, "set");
-cmdline_parse_token_string_t cmd_set_uc_hash_port =
+static cmdline_parse_token_string_t cmd_set_uc_hash_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_hash_table,
 				 port, "port");
-cmdline_parse_token_num_t cmd_set_uc_hash_portid =
+static cmdline_parse_token_num_t cmd_set_uc_hash_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_uc_hash_table,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_uc_hash_what =
+static cmdline_parse_token_string_t cmd_set_uc_hash_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_hash_table,
 				 what, "uta");
-cmdline_parse_token_etheraddr_t cmd_set_uc_hash_mac =
+static cmdline_parse_token_etheraddr_t cmd_set_uc_hash_mac =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_uc_hash_table,
 				address);
-cmdline_parse_token_string_t cmd_set_uc_hash_mode =
+static cmdline_parse_token_string_t cmd_set_uc_hash_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_hash_table,
 				 mode, "on#off");
 
-cmdline_parse_inst_t cmd_set_uc_hash_filter = {
+static cmdline_parse_inst_t cmd_set_uc_hash_filter = {
 	.f = cmd_set_uc_hash_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> uta <mac_addr> on|off)",
@@ -9276,26 +9276,26 @@ cmd_set_uc_all_hash_parsed(void *parsed_result,
 			ret);
 }
 
-cmdline_parse_token_string_t cmd_set_uc_all_hash_set =
+static cmdline_parse_token_string_t cmd_set_uc_all_hash_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_all_hash_table,
 				 set, "set");
-cmdline_parse_token_string_t cmd_set_uc_all_hash_port =
+static cmdline_parse_token_string_t cmd_set_uc_all_hash_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_all_hash_table,
 				 port, "port");
-cmdline_parse_token_num_t cmd_set_uc_all_hash_portid =
+static cmdline_parse_token_num_t cmd_set_uc_all_hash_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_uc_all_hash_table,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_uc_all_hash_what =
+static cmdline_parse_token_string_t cmd_set_uc_all_hash_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_all_hash_table,
 				 what, "uta");
-cmdline_parse_token_string_t cmd_set_uc_all_hash_value =
+static cmdline_parse_token_string_t cmd_set_uc_all_hash_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_all_hash_table,
 				value,"all");
-cmdline_parse_token_string_t cmd_set_uc_all_hash_mode =
+static cmdline_parse_token_string_t cmd_set_uc_all_hash_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_uc_all_hash_table,
 				 mode, "on#off");
 
-cmdline_parse_inst_t cmd_set_uc_all_hash_filter = {
+static cmdline_parse_inst_t cmd_set_uc_all_hash_filter = {
 	.f = cmd_set_uc_all_hash_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> uta all on|off",
@@ -9333,29 +9333,29 @@ cmd_set_vf_traffic_parsed(void *parsed_result,
 	set_vf_traffic(res->port_id, (uint8_t)is_rx, res->vf_id,(uint8_t) is_on);
 }
 
-cmdline_parse_token_string_t cmd_setvf_traffic_set =
+static cmdline_parse_token_string_t cmd_setvf_traffic_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_traffic,
 				 set, "set");
-cmdline_parse_token_string_t cmd_setvf_traffic_port =
+static cmdline_parse_token_string_t cmd_setvf_traffic_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_traffic,
 				 port, "port");
-cmdline_parse_token_num_t cmd_setvf_traffic_portid =
+static cmdline_parse_token_num_t cmd_setvf_traffic_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vf_traffic,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_setvf_traffic_vf =
+static cmdline_parse_token_string_t cmd_setvf_traffic_vf =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_traffic,
 				 vf, "vf");
-cmdline_parse_token_num_t cmd_setvf_traffic_vfid =
+static cmdline_parse_token_num_t cmd_setvf_traffic_vfid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vf_traffic,
 			      vf_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_setvf_traffic_what =
+static cmdline_parse_token_string_t cmd_setvf_traffic_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_traffic,
 				 what, "tx#rx");
-cmdline_parse_token_string_t cmd_setvf_traffic_mode =
+static cmdline_parse_token_string_t cmd_setvf_traffic_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_traffic,
 				 mode, "on#off");
 
-cmdline_parse_inst_t cmd_set_vf_traffic = {
+static cmdline_parse_inst_t cmd_set_vf_traffic = {
 	.f = cmd_set_vf_traffic_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> vf <vf_id> rx|tx on|off",
@@ -9423,32 +9423,32 @@ cmd_set_vf_rxmode_parsed(void *parsed_result,
 			ret);
 }
 
-cmdline_parse_token_string_t cmd_set_vf_rxmode_set =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 set, "set");
-cmdline_parse_token_string_t cmd_set_vf_rxmode_port =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 port, "port");
-cmdline_parse_token_num_t cmd_set_vf_rxmode_portid =
+static cmdline_parse_token_num_t cmd_set_vf_rxmode_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vf_rxmode,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vf_rxmode_vf =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_vf =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 vf, "vf");
-cmdline_parse_token_num_t cmd_set_vf_rxmode_vfid =
+static cmdline_parse_token_num_t cmd_set_vf_rxmode_vfid =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vf_rxmode,
 			      vf_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_vf_rxmode_what =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 what, "rxmode");
-cmdline_parse_token_string_t cmd_set_vf_rxmode_mode =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 mode, "AUPE#ROPE#BAM#MPE");
-cmdline_parse_token_string_t cmd_set_vf_rxmode_on =
+static cmdline_parse_token_string_t cmd_set_vf_rxmode_on =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vf_rxmode,
 				 on, "on#off");
 
-cmdline_parse_inst_t cmd_set_vf_rxmode = {
+static cmdline_parse_inst_t cmd_set_vf_rxmode = {
 	.f = cmd_set_vf_rxmode_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> vf <vf_id> rxmode "
@@ -9503,29 +9503,29 @@ static void cmd_vf_mac_addr_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_vf_mac_addr_cmd =
+static cmdline_parse_token_string_t cmd_vf_mac_addr_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_mac_addr_result,
 				mac_addr_cmd,"mac_addr");
-cmdline_parse_token_string_t cmd_vf_mac_addr_what =
+static cmdline_parse_token_string_t cmd_vf_mac_addr_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_mac_addr_result,
 				what,"add");
-cmdline_parse_token_string_t cmd_vf_mac_addr_port =
+static cmdline_parse_token_string_t cmd_vf_mac_addr_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_mac_addr_result,
 				port,"port");
-cmdline_parse_token_num_t cmd_vf_mac_addr_portnum =
+static cmdline_parse_token_num_t cmd_vf_mac_addr_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_mac_addr_result,
 				port_num, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_mac_addr_vf =
+static cmdline_parse_token_string_t cmd_vf_mac_addr_vf =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_mac_addr_result,
 				vf,"vf");
-cmdline_parse_token_num_t cmd_vf_mac_addr_vfnum =
+static cmdline_parse_token_num_t cmd_vf_mac_addr_vfnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_mac_addr_result,
 				vf_num, RTE_UINT8);
-cmdline_parse_token_etheraddr_t cmd_vf_mac_addr_addr =
+static cmdline_parse_token_etheraddr_t cmd_vf_mac_addr_addr =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_vf_mac_addr_result,
 				address);
 
-cmdline_parse_inst_t cmd_vf_mac_addr_filter = {
+static cmdline_parse_inst_t cmd_vf_mac_addr_filter = {
 	.f = cmd_vf_mac_addr_parsed,
 	.data = (void *)0,
 	.help_str = "mac_addr add port <port_id> vf <vf_id> <mac_addr>: "
@@ -9597,29 +9597,29 @@ cmd_vf_rx_vlan_filter_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_rx_vlan =
+static cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_rx_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 				 rx_vlan, "rx_vlan");
-cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_what =
+static cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 				 what, "add#rm");
-cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_vlanid =
+static cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_vlanid =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 			      vlan_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_port =
+static cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 				 port, "port");
-cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_portid =
+static cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_portid =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_vf =
+static cmdline_parse_token_string_t cmd_vf_rx_vlan_filter_vf =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 				 vf, "vf");
-cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_vf_mask =
+static cmdline_parse_token_num_t cmd_vf_rx_vlan_filter_vf_mask =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rx_vlan_filter,
 			      vf_mask, RTE_UINT64);
 
-cmdline_parse_inst_t cmd_vf_rxvlan_filter = {
+static cmdline_parse_inst_t cmd_vf_rxvlan_filter = {
 	.f = cmd_vf_rx_vlan_filter_parsed,
 	.data = NULL,
 	.help_str = "rx_vlan add|rm <vlan_id> port <port_id> vf <vf_mask>: "
@@ -9665,29 +9665,29 @@ static void cmd_queue_rate_limit_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_queue_rate_limit_set =
+static cmdline_parse_token_string_t cmd_queue_rate_limit_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_rate_limit_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_queue_rate_limit_port =
+static cmdline_parse_token_string_t cmd_queue_rate_limit_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_rate_limit_result,
 				port, "port");
-cmdline_parse_token_num_t cmd_queue_rate_limit_portnum =
+static cmdline_parse_token_num_t cmd_queue_rate_limit_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_rate_limit_result,
 				port_num, RTE_UINT16);
-cmdline_parse_token_string_t cmd_queue_rate_limit_queue =
+static cmdline_parse_token_string_t cmd_queue_rate_limit_queue =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_rate_limit_result,
 				queue, "queue");
-cmdline_parse_token_num_t cmd_queue_rate_limit_queuenum =
+static cmdline_parse_token_num_t cmd_queue_rate_limit_queuenum =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_rate_limit_result,
 				queue_num, RTE_UINT8);
-cmdline_parse_token_string_t cmd_queue_rate_limit_rate =
+static cmdline_parse_token_string_t cmd_queue_rate_limit_rate =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_rate_limit_result,
 				rate, "rate");
-cmdline_parse_token_num_t cmd_queue_rate_limit_ratenum =
+static cmdline_parse_token_num_t cmd_queue_rate_limit_ratenum =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_rate_limit_result,
 				rate_num, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_queue_rate_limit = {
+static cmdline_parse_inst_t cmd_queue_rate_limit = {
 	.f = cmd_queue_rate_limit_parsed,
 	.data = (void *)0,
 	.help_str = "set port <port_id> queue <queue_id> rate <rate_value>: "
@@ -9736,35 +9736,35 @@ static void cmd_vf_rate_limit_parsed(void *parsed_result,
 
 }
 
-cmdline_parse_token_string_t cmd_vf_rate_limit_set =
+static cmdline_parse_token_string_t cmd_vf_rate_limit_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rate_limit_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_vf_rate_limit_port =
+static cmdline_parse_token_string_t cmd_vf_rate_limit_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rate_limit_result,
 				port, "port");
-cmdline_parse_token_num_t cmd_vf_rate_limit_portnum =
+static cmdline_parse_token_num_t cmd_vf_rate_limit_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rate_limit_result,
 				port_num, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_rate_limit_vf =
+static cmdline_parse_token_string_t cmd_vf_rate_limit_vf =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rate_limit_result,
 				vf, "vf");
-cmdline_parse_token_num_t cmd_vf_rate_limit_vfnum =
+static cmdline_parse_token_num_t cmd_vf_rate_limit_vfnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rate_limit_result,
 				vf_num, RTE_UINT8);
-cmdline_parse_token_string_t cmd_vf_rate_limit_rate =
+static cmdline_parse_token_string_t cmd_vf_rate_limit_rate =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rate_limit_result,
 				rate, "rate");
-cmdline_parse_token_num_t cmd_vf_rate_limit_ratenum =
+static cmdline_parse_token_num_t cmd_vf_rate_limit_ratenum =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rate_limit_result,
 				rate_num, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_rate_limit_q_msk =
+static cmdline_parse_token_string_t cmd_vf_rate_limit_q_msk =
 	TOKEN_STRING_INITIALIZER(struct cmd_vf_rate_limit_result,
 				q_msk, "queue_mask");
-cmdline_parse_token_num_t cmd_vf_rate_limit_q_msk_val =
+static cmdline_parse_token_num_t cmd_vf_rate_limit_q_msk_val =
 	TOKEN_NUM_INITIALIZER(struct cmd_vf_rate_limit_result,
 				q_msk_val, RTE_UINT64);
 
-cmdline_parse_inst_t cmd_vf_rate_limit = {
+static cmdline_parse_inst_t cmd_vf_rate_limit = {
 	.f = cmd_vf_rate_limit_parsed,
 	.data = (void *)0,
 	.help_str = "set port <port_id> vf <vf_id> rate <rate_value> "
@@ -9816,20 +9816,20 @@ cmd_tunnel_udp_config_parsed(void *parsed_result,
 			strerror(-ret));
 }
 
-cmdline_parse_token_string_t cmd_tunnel_udp_config_rx_vxlan_port =
+static cmdline_parse_token_string_t cmd_tunnel_udp_config_rx_vxlan_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config,
 				rx_vxlan_port, "rx_vxlan_port");
-cmdline_parse_token_string_t cmd_tunnel_udp_config_what =
+static cmdline_parse_token_string_t cmd_tunnel_udp_config_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config,
 				what, "add#rm");
-cmdline_parse_token_num_t cmd_tunnel_udp_config_udp_port =
+static cmdline_parse_token_num_t cmd_tunnel_udp_config_udp_port =
 	TOKEN_NUM_INITIALIZER(struct cmd_tunnel_udp_config,
 				udp_port, RTE_UINT16);
-cmdline_parse_token_num_t cmd_tunnel_udp_config_port_id =
+static cmdline_parse_token_num_t cmd_tunnel_udp_config_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_tunnel_udp_config,
 				port_id, RTE_UINT16);
 
-cmdline_parse_inst_t cmd_tunnel_udp_config = {
+static cmdline_parse_inst_t cmd_tunnel_udp_config = {
 	.f = cmd_tunnel_udp_config_parsed,
 	.data = (void *)0,
 	.help_str = "rx_vxlan_port add|rm <udp_port> <port_id>: "
@@ -9892,30 +9892,30 @@ cmd_cfg_tunnel_udp_port_parsed(void *parsed_result,
 			strerror(-ret));
 }
 
-cmdline_parse_token_string_t cmd_config_tunnel_udp_port_port =
+static cmdline_parse_token_string_t cmd_config_tunnel_udp_port_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port, port,
 				 "port");
-cmdline_parse_token_string_t cmd_config_tunnel_udp_port_config =
+static cmdline_parse_token_string_t cmd_config_tunnel_udp_port_config =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port, config,
 				 "config");
-cmdline_parse_token_num_t cmd_config_tunnel_udp_port_port_id =
+static cmdline_parse_token_num_t cmd_config_tunnel_udp_port_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_tunnel_udp_port, port_id,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_tunnel_udp_port_tunnel_port =
+static cmdline_parse_token_string_t cmd_config_tunnel_udp_port_tunnel_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port,
 				 udp_tunnel_port,
 				 "udp_tunnel_port");
-cmdline_parse_token_string_t cmd_config_tunnel_udp_port_action =
+static cmdline_parse_token_string_t cmd_config_tunnel_udp_port_action =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port, action,
 				 "add#rm");
-cmdline_parse_token_string_t cmd_config_tunnel_udp_port_tunnel_type =
+static cmdline_parse_token_string_t cmd_config_tunnel_udp_port_tunnel_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port, tunnel_type,
 				 "vxlan#geneve#vxlan-gpe#ecpri");
-cmdline_parse_token_num_t cmd_config_tunnel_udp_port_value =
+static cmdline_parse_token_num_t cmd_config_tunnel_udp_port_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_tunnel_udp_port, udp_port,
 			      RTE_UINT16);
 
-cmdline_parse_inst_t cmd_cfg_tunnel_udp_port = {
+static cmdline_parse_inst_t cmd_cfg_tunnel_udp_port = {
 	.f = cmd_cfg_tunnel_udp_port_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> udp_tunnel_port add|rm vxlan|"
@@ -10022,7 +10022,7 @@ static void cmd_dump_parsed(void *parsed_result,
 		rte_log_dump(stdout);
 }
 
-cmdline_parse_token_string_t cmd_dump_dump =
+static cmdline_parse_token_string_t cmd_dump_dump =
 	TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump,
 		"dump_physmem#"
 		"dump_memzone#"
@@ -10033,7 +10033,7 @@ cmdline_parse_token_string_t cmd_dump_dump =
 		"dump_devargs#"
 		"dump_log_types");
 
-cmdline_parse_inst_t cmd_dump = {
+static cmdline_parse_inst_t cmd_dump = {
 	.f = cmd_dump_parsed,  /* function to call */
 	.data = NULL,      /* 2nd arg of func */
 	.help_str = "Dump status",
@@ -10074,14 +10074,14 @@ static void cmd_dump_one_parsed(void *parsed_result, struct cmdline *cl,
 	}
 }
 
-cmdline_parse_token_string_t cmd_dump_one_dump =
+static cmdline_parse_token_string_t cmd_dump_one_dump =
 	TOKEN_STRING_INITIALIZER(struct cmd_dump_one_result, dump,
 				 "dump_ring#dump_mempool");
 
-cmdline_parse_token_string_t cmd_dump_one_name =
+static cmdline_parse_token_string_t cmd_dump_one_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_dump_one_result, name, NULL);
 
-cmdline_parse_inst_t cmd_dump_one = {
+static cmdline_parse_inst_t cmd_dump_one = {
 	.f = cmd_dump_one_parsed,  /* function to call */
 	.data = NULL,      /* 2nd arg of func */
 	.help_str = "dump_ring|dump_mempool <name>: Dump one ring/mempool",
@@ -10144,37 +10144,37 @@ cmd_queue_region_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_queue_region_set =
+static cmdline_parse_token_string_t cmd_queue_region_set =
 TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
 		set, "set");
-cmdline_parse_token_string_t cmd_queue_region_port =
+static cmdline_parse_token_string_t cmd_queue_region_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result, port, "port");
-cmdline_parse_token_num_t cmd_queue_region_port_id =
+static cmdline_parse_token_num_t cmd_queue_region_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_queue_region_cmd =
+static cmdline_parse_token_string_t cmd_queue_region_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
 				 cmd, "queue-region");
-cmdline_parse_token_string_t cmd_queue_region_id =
+static cmdline_parse_token_string_t cmd_queue_region_id =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
 				region, "region_id");
-cmdline_parse_token_num_t cmd_queue_region_index =
+static cmdline_parse_token_num_t cmd_queue_region_index =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
 				region_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_queue_region_queue_start_index =
+static cmdline_parse_token_string_t cmd_queue_region_queue_start_index =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
 				queue_start_index, "queue_start_index");
-cmdline_parse_token_num_t cmd_queue_region_queue_id =
+static cmdline_parse_token_num_t cmd_queue_region_queue_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
 				queue_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_queue_region_queue_num =
+static cmdline_parse_token_string_t cmd_queue_region_queue_num =
 	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
 				queue_num, "queue_num");
-cmdline_parse_token_num_t cmd_queue_region_queue_num_value =
+static cmdline_parse_token_num_t cmd_queue_region_queue_num_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
 				queue_num_value, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_queue_region = {
+static cmdline_parse_inst_t cmd_queue_region = {
 	.f = cmd_queue_region_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> queue-region region_id <value> "
@@ -10244,31 +10244,31 @@ cmd_region_flowtype_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_region_flowtype_set =
+static cmdline_parse_token_string_t cmd_region_flowtype_set =
 TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_region_flowtype_port =
+static cmdline_parse_token_string_t cmd_region_flowtype_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
 				port, "port");
-cmdline_parse_token_num_t cmd_region_flowtype_port_index =
+static cmdline_parse_token_num_t cmd_region_flowtype_port_index =
 	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_region_flowtype_cmd =
+static cmdline_parse_token_string_t cmd_region_flowtype_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
 				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_region_flowtype_index =
+static cmdline_parse_token_string_t cmd_region_flowtype_index =
 	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
 				region, "region_id");
-cmdline_parse_token_num_t cmd_region_flowtype_id =
+static cmdline_parse_token_num_t cmd_region_flowtype_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
 				region_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_region_flowtype_flow_index =
+static cmdline_parse_token_string_t cmd_region_flowtype_flow_index =
 	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
 				flowtype, "flowtype");
-cmdline_parse_token_num_t cmd_region_flowtype_flow_id =
+static cmdline_parse_token_num_t cmd_region_flowtype_flow_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
 				flowtype_id, RTE_UINT8);
-cmdline_parse_inst_t cmd_region_flowtype = {
+static cmdline_parse_inst_t cmd_region_flowtype = {
 	.f = cmd_region_flowtype_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> queue-region region_id <value> "
@@ -10335,32 +10335,32 @@ cmd_user_priority_region_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_user_priority_region_set =
+static cmdline_parse_token_string_t cmd_user_priority_region_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_user_priority_region_port =
+static cmdline_parse_token_string_t cmd_user_priority_region_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
 				port, "port");
-cmdline_parse_token_num_t cmd_user_priority_region_port_index =
+static cmdline_parse_token_num_t cmd_user_priority_region_port_index =
 	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_user_priority_region_cmd =
+static cmdline_parse_token_string_t cmd_user_priority_region_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
 				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_user_priority_region_UP =
+static cmdline_parse_token_string_t cmd_user_priority_region_UP =
 	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
 				user_priority, "UP");
-cmdline_parse_token_num_t cmd_user_priority_region_UP_id =
+static cmdline_parse_token_num_t cmd_user_priority_region_UP_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
 				user_priority_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_user_priority_region_region =
+static cmdline_parse_token_string_t cmd_user_priority_region_region =
 	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
 				region, "region_id");
-cmdline_parse_token_num_t cmd_user_priority_region_region_id =
+static cmdline_parse_token_num_t cmd_user_priority_region_region_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
 				region_id, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_user_priority_region = {
+static cmdline_parse_inst_t cmd_user_priority_region = {
 	.f = cmd_user_priority_region_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> queue-region UP <value> "
@@ -10428,26 +10428,26 @@ cmd_flush_queue_region_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_flush_queue_region_set =
+static cmdline_parse_token_string_t cmd_flush_queue_region_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
 				set, "set");
-cmdline_parse_token_string_t cmd_flush_queue_region_port =
+static cmdline_parse_token_string_t cmd_flush_queue_region_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
 				port, "port");
-cmdline_parse_token_num_t cmd_flush_queue_region_port_index =
+static cmdline_parse_token_num_t cmd_flush_queue_region_port_index =
 	TOKEN_NUM_INITIALIZER(struct cmd_flush_queue_region_result,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flush_queue_region_cmd =
+static cmdline_parse_token_string_t cmd_flush_queue_region_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
 				cmd, "queue-region");
-cmdline_parse_token_string_t cmd_flush_queue_region_flush =
+static cmdline_parse_token_string_t cmd_flush_queue_region_flush =
 	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
 				flush, "flush");
-cmdline_parse_token_string_t cmd_flush_queue_region_what =
+static cmdline_parse_token_string_t cmd_flush_queue_region_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
 				what, "on#off");
 
-cmdline_parse_inst_t cmd_flush_queue_region = {
+static cmdline_parse_inst_t cmd_flush_queue_region = {
 	.f = cmd_flush_queue_region_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> queue-region flush on|off"
@@ -10509,20 +10509,20 @@ cmd_show_queue_region_info_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_show_queue_region_info_get =
+static cmdline_parse_token_string_t cmd_show_queue_region_info_get =
 TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
 				show, "show");
-cmdline_parse_token_string_t cmd_show_queue_region_info_port =
+static cmdline_parse_token_string_t cmd_show_queue_region_info_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
 				port, "port");
-cmdline_parse_token_num_t cmd_show_queue_region_info_port_index =
+static cmdline_parse_token_num_t cmd_show_queue_region_info_port_index =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_queue_region_info,
 				port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_queue_region_info_cmd =
+static cmdline_parse_token_string_t cmd_show_queue_region_info_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
 				cmd, "queue-region");
 
-cmdline_parse_inst_t cmd_show_queue_region_info_all = {
+static cmdline_parse_inst_t cmd_show_queue_region_info_all = {
 	.f = cmd_show_queue_region_info_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> queue-region"
@@ -10678,51 +10678,51 @@ cmd_flow_director_filter_parsed(void *parsed_result,
 	close_file(conf.input.packet);
 }
 
-cmdline_parse_token_string_t cmd_flow_director_filter =
+static cmdline_parse_token_string_t cmd_flow_director_filter =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 flow_director_filter, "flow_director_filter");
-cmdline_parse_token_num_t cmd_flow_director_port_id =
+static cmdline_parse_token_num_t cmd_flow_director_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_ops =
+static cmdline_parse_token_string_t cmd_flow_director_ops =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 ops, "add#del#update");
-cmdline_parse_token_string_t cmd_flow_director_flow =
+static cmdline_parse_token_string_t cmd_flow_director_flow =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 flow, "flow");
-cmdline_parse_token_string_t cmd_flow_director_flow_type =
+static cmdline_parse_token_string_t cmd_flow_director_flow_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 		flow_type, NULL);
-cmdline_parse_token_string_t cmd_flow_director_drop =
+static cmdline_parse_token_string_t cmd_flow_director_drop =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 drop, "drop#fwd");
-cmdline_parse_token_string_t cmd_flow_director_queue =
+static cmdline_parse_token_string_t cmd_flow_director_queue =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 queue, "queue");
-cmdline_parse_token_num_t cmd_flow_director_queue_id =
+static cmdline_parse_token_num_t cmd_flow_director_queue_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
 			      queue_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_fd_id =
+static cmdline_parse_token_string_t cmd_flow_director_fd_id =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 fd_id, "fd_id");
-cmdline_parse_token_num_t cmd_flow_director_fd_id_value =
+static cmdline_parse_token_num_t cmd_flow_director_fd_id_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
 			      fd_id_value, RTE_UINT32);
 
-cmdline_parse_token_string_t cmd_flow_director_mode =
+static cmdline_parse_token_string_t cmd_flow_director_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 mode, "mode");
-cmdline_parse_token_string_t cmd_flow_director_mode_raw =
+static cmdline_parse_token_string_t cmd_flow_director_mode_raw =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 mode_value, "raw");
-cmdline_parse_token_string_t cmd_flow_director_packet =
+static cmdline_parse_token_string_t cmd_flow_director_packet =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 packet, "packet");
-cmdline_parse_token_string_t cmd_flow_director_filepath =
+static cmdline_parse_token_string_t cmd_flow_director_filepath =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
 				 filepath, NULL);
 
-cmdline_parse_inst_t cmd_add_del_raw_flow_director = {
+static cmdline_parse_inst_t cmd_add_del_raw_flow_director = {
 	.f = cmd_flow_director_filter_parsed,
 	.data = NULL,
 	.help_str = "flow_director_filter ... : Add or delete a raw flow "
@@ -10825,75 +10825,75 @@ cmd_flow_director_mask_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_flow_director_mask =
+static cmdline_parse_token_string_t cmd_flow_director_mask =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 flow_director_mask, "flow_director_mask");
-cmdline_parse_token_num_t cmd_flow_director_mask_port_id =
+static cmdline_parse_token_num_t cmd_flow_director_mask_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_mask_vlan =
+static cmdline_parse_token_string_t cmd_flow_director_mask_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 vlan, "vlan");
-cmdline_parse_token_num_t cmd_flow_director_mask_vlan_value =
+static cmdline_parse_token_num_t cmd_flow_director_mask_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      vlan_mask, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_mask_src =
+static cmdline_parse_token_string_t cmd_flow_director_mask_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 src_mask, "src_mask");
-cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv4_src =
+static cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv4_src =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_flow_director_mask_result,
 				 ipv4_src);
-cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv6_src =
+static cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv6_src =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_flow_director_mask_result,
 				 ipv6_src);
-cmdline_parse_token_num_t cmd_flow_director_mask_port_src =
+static cmdline_parse_token_num_t cmd_flow_director_mask_port_src =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      port_src, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_mask_dst =
+static cmdline_parse_token_string_t cmd_flow_director_mask_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 dst_mask, "dst_mask");
-cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv4_dst =
+static cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv4_dst =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_flow_director_mask_result,
 				 ipv4_dst);
-cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv6_dst =
+static cmdline_parse_token_ipaddr_t cmd_flow_director_mask_ipv6_dst =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_flow_director_mask_result,
 				 ipv6_dst);
-cmdline_parse_token_num_t cmd_flow_director_mask_port_dst =
+static cmdline_parse_token_num_t cmd_flow_director_mask_port_dst =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      port_dst, RTE_UINT16);
 
-cmdline_parse_token_string_t cmd_flow_director_mask_mode =
+static cmdline_parse_token_string_t cmd_flow_director_mask_mode =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 mode, "mode");
-cmdline_parse_token_string_t cmd_flow_director_mask_mode_ip =
+static cmdline_parse_token_string_t cmd_flow_director_mask_mode_ip =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 mode_value, "IP");
-cmdline_parse_token_string_t cmd_flow_director_mask_mode_mac_vlan =
+static cmdline_parse_token_string_t cmd_flow_director_mask_mode_mac_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 mode_value, "MAC-VLAN");
-cmdline_parse_token_string_t cmd_flow_director_mask_mode_tunnel =
+static cmdline_parse_token_string_t cmd_flow_director_mask_mode_tunnel =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 mode_value, "Tunnel");
-cmdline_parse_token_string_t cmd_flow_director_mask_mac =
+static cmdline_parse_token_string_t cmd_flow_director_mask_mac =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 mac, "mac");
-cmdline_parse_token_num_t cmd_flow_director_mask_mac_value =
+static cmdline_parse_token_num_t cmd_flow_director_mask_mac_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      mac_addr_byte_mask, RTE_UINT8);
-cmdline_parse_token_string_t cmd_flow_director_mask_tunnel_type =
+static cmdline_parse_token_string_t cmd_flow_director_mask_tunnel_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 tunnel_type, "tunnel-type");
-cmdline_parse_token_num_t cmd_flow_director_mask_tunnel_type_value =
+static cmdline_parse_token_num_t cmd_flow_director_mask_tunnel_type_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      tunnel_type_mask, RTE_UINT8);
-cmdline_parse_token_string_t cmd_flow_director_mask_tunnel_id =
+static cmdline_parse_token_string_t cmd_flow_director_mask_tunnel_id =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_mask_result,
 				 tunnel_id, "tunnel-id");
-cmdline_parse_token_num_t cmd_flow_director_mask_tunnel_id_value =
+static cmdline_parse_token_num_t cmd_flow_director_mask_tunnel_id_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_mask_result,
 			      tunnel_id_mask, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_set_flow_director_ip_mask = {
+static cmdline_parse_inst_t cmd_set_flow_director_ip_mask = {
 	.f = cmd_flow_director_mask_parsed,
 	.data = NULL,
 	.help_str = "flow_director_mask ... : "
@@ -10917,7 +10917,7 @@ cmdline_parse_inst_t cmd_set_flow_director_ip_mask = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_flow_director_mac_vlan_mask = {
+static cmdline_parse_inst_t cmd_set_flow_director_mac_vlan_mask = {
 	.f = cmd_flow_director_mask_parsed,
 	.data = NULL,
 	.help_str = "flow_director_mask ... : Set MAC VLAN mode "
@@ -10933,7 +10933,7 @@ cmdline_parse_inst_t cmd_set_flow_director_mac_vlan_mask = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_flow_director_tunnel_mask = {
+static cmdline_parse_inst_t cmd_set_flow_director_tunnel_mask = {
 	.f = cmd_flow_director_mask_parsed,
 	.data = NULL,
 	.help_str = "flow_director_mask ... : Set tunnel mode "
@@ -11040,21 +11040,21 @@ cmd_flow_director_flxpld_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(res->port_id, 1, 1);
 }
 
-cmdline_parse_token_string_t cmd_flow_director_flexpayload =
+static cmdline_parse_token_string_t cmd_flow_director_flexpayload =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_flexpayload_result,
 				 flow_director_flexpayload,
 				 "flow_director_flex_payload");
-cmdline_parse_token_num_t cmd_flow_director_flexpayload_port_id =
+static cmdline_parse_token_num_t cmd_flow_director_flexpayload_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_flexpayload_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_flow_director_flexpayload_payload_layer =
+static cmdline_parse_token_string_t cmd_flow_director_flexpayload_payload_layer =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_flexpayload_result,
 				 payload_layer, "raw#l2#l3#l4");
-cmdline_parse_token_string_t cmd_flow_director_flexpayload_payload_cfg =
+static cmdline_parse_token_string_t cmd_flow_director_flexpayload_payload_cfg =
 	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_flexpayload_result,
 				 payload_cfg, NULL);
 
-cmdline_parse_inst_t cmd_set_flow_director_flex_payload = {
+static cmdline_parse_inst_t cmd_set_flow_director_flex_payload = {
 	.f = cmd_flow_director_flxpld_parsed,
 	.data = NULL,
 	.help_str = "flow_director_flexpayload ... : "
@@ -11097,19 +11097,19 @@ static void cmd_mcast_addr_parsed(void *parsed_result,
 		mcast_addr_remove(res->port_num, &res->mc_addr);
 }
 
-cmdline_parse_token_string_t cmd_mcast_addr_cmd =
+static cmdline_parse_token_string_t cmd_mcast_addr_cmd =
 	TOKEN_STRING_INITIALIZER(struct cmd_mcast_addr_result,
 				 mcast_addr_cmd, "mcast_addr");
-cmdline_parse_token_string_t cmd_mcast_addr_what =
+static cmdline_parse_token_string_t cmd_mcast_addr_what =
 	TOKEN_STRING_INITIALIZER(struct cmd_mcast_addr_result, what,
 				 "add#remove");
-cmdline_parse_token_num_t cmd_mcast_addr_portnum =
+static cmdline_parse_token_num_t cmd_mcast_addr_portnum =
 	TOKEN_NUM_INITIALIZER(struct cmd_mcast_addr_result, port_num,
 				 RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_mcast_addr_addr =
+static cmdline_parse_token_etheraddr_t cmd_mcast_addr_addr =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_mac_addr_result, address);
 
-cmdline_parse_inst_t cmd_mcast_addr = {
+static cmdline_parse_inst_t cmd_mcast_addr = {
 	.f = cmd_mcast_addr_parsed,
 	.data = (void *)0,
 	.help_str = "mcast_addr add|remove <port_id> <mcast_addr>: "
@@ -11137,31 +11137,31 @@ struct cmd_vf_vlan_anti_spoof_result {
 };
 
 /* Common CLI fields for vf vlan anti spoof enable disable */
-cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_set =
+static cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_vf =
+static cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_vlan =
+static cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_vlan =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 vlan, "vlan");
-cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_antispoof =
+static cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_antispoof =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 antispoof, "antispoof");
-cmdline_parse_token_num_t cmd_vf_vlan_anti_spoof_port_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_anti_spoof_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_vlan_anti_spoof_vf_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_anti_spoof_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 vf_id, RTE_UINT32);
-cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_on_off =
+static cmdline_parse_token_string_t cmd_vf_vlan_anti_spoof_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_anti_spoof_result,
 		 on_off, "on#off");
@@ -11213,7 +11213,7 @@ cmd_set_vf_vlan_anti_spoof_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_vlan_anti_spoof = {
+static cmdline_parse_inst_t cmd_set_vf_vlan_anti_spoof = {
 	.f = cmd_set_vf_vlan_anti_spoof_parsed,
 	.data = NULL,
 	.help_str = "set vf vlan antispoof <port_id> <vf_id> on|off",
@@ -11243,31 +11243,31 @@ struct cmd_vf_mac_anti_spoof_result {
 };
 
 /* Common CLI fields for vf mac anti spoof enable disable */
-cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_set =
+static cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_vf =
+static cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_mac =
+static cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_mac =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 mac, "mac");
-cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_antispoof =
+static cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_antispoof =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 antispoof, "antispoof");
-cmdline_parse_token_num_t cmd_vf_mac_anti_spoof_port_id =
+static cmdline_parse_token_num_t cmd_vf_mac_anti_spoof_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_mac_anti_spoof_vf_id =
+static cmdline_parse_token_num_t cmd_vf_mac_anti_spoof_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 vf_id, RTE_UINT32);
-cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_on_off =
+static cmdline_parse_token_string_t cmd_vf_mac_anti_spoof_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_mac_anti_spoof_result,
 		 on_off, "on#off");
@@ -11320,7 +11320,7 @@ cmd_set_vf_mac_anti_spoof_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_mac_anti_spoof = {
+static cmdline_parse_inst_t cmd_set_vf_mac_anti_spoof = {
 	.f = cmd_set_vf_mac_anti_spoof_parsed,
 	.data = NULL,
 	.help_str = "set vf mac antispoof <port_id> <vf_id> on|off",
@@ -11350,31 +11350,31 @@ struct cmd_vf_vlan_stripq_result {
 };
 
 /* Common CLI fields for vf vlan strip enable disable */
-cmdline_parse_token_string_t cmd_vf_vlan_stripq_set =
+static cmdline_parse_token_string_t cmd_vf_vlan_stripq_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_vlan_stripq_vf =
+static cmdline_parse_token_string_t cmd_vf_vlan_stripq_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_vlan_stripq_vlan =
+static cmdline_parse_token_string_t cmd_vf_vlan_stripq_vlan =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 vlan, "vlan");
-cmdline_parse_token_string_t cmd_vf_vlan_stripq_stripq =
+static cmdline_parse_token_string_t cmd_vf_vlan_stripq_stripq =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 stripq, "stripq");
-cmdline_parse_token_num_t cmd_vf_vlan_stripq_port_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_stripq_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_vlan_stripq_vf_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_stripq_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_vlan_stripq_on_off =
+static cmdline_parse_token_string_t cmd_vf_vlan_stripq_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_stripq_result,
 		 on_off, "on#off");
@@ -11427,7 +11427,7 @@ cmd_set_vf_vlan_stripq_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_vlan_stripq = {
+static cmdline_parse_inst_t cmd_set_vf_vlan_stripq = {
 	.f = cmd_set_vf_vlan_stripq_parsed,
 	.data = NULL,
 	.help_str = "set vf vlan stripq <port_id> <vf_id> on|off",
@@ -11457,31 +11457,31 @@ struct cmd_vf_vlan_insert_result {
 };
 
 /* Common CLI fields for vf vlan insert enable disable */
-cmdline_parse_token_string_t cmd_vf_vlan_insert_set =
+static cmdline_parse_token_string_t cmd_vf_vlan_insert_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_vlan_insert_vf =
+static cmdline_parse_token_string_t cmd_vf_vlan_insert_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_vlan_insert_vlan =
+static cmdline_parse_token_string_t cmd_vf_vlan_insert_vlan =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 vlan, "vlan");
-cmdline_parse_token_string_t cmd_vf_vlan_insert_insert =
+static cmdline_parse_token_string_t cmd_vf_vlan_insert_insert =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 insert, "insert");
-cmdline_parse_token_num_t cmd_vf_vlan_insert_port_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_insert_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_vlan_insert_vf_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_insert_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_vlan_insert_vlan_id =
+static cmdline_parse_token_num_t cmd_vf_vlan_insert_vlan_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_vlan_insert_result,
 		 vlan_id, RTE_UINT16);
@@ -11532,7 +11532,7 @@ cmd_set_vf_vlan_insert_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_vlan_insert = {
+static cmdline_parse_inst_t cmd_set_vf_vlan_insert = {
 	.f = cmd_set_vf_vlan_insert_parsed,
 	.data = NULL,
 	.help_str = "set vf vlan insert <port_id> <vf_id> <vlan_id>",
@@ -11560,23 +11560,23 @@ struct cmd_tx_loopback_result {
 };
 
 /* Common CLI fields for tx loopback enable disable */
-cmdline_parse_token_string_t cmd_tx_loopback_set =
+static cmdline_parse_token_string_t cmd_tx_loopback_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_loopback_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_tx_loopback_tx =
+static cmdline_parse_token_string_t cmd_tx_loopback_tx =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_loopback_result,
 		 tx, "tx");
-cmdline_parse_token_string_t cmd_tx_loopback_loopback =
+static cmdline_parse_token_string_t cmd_tx_loopback_loopback =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_loopback_result,
 		 loopback, "loopback");
-cmdline_parse_token_num_t cmd_tx_loopback_port_id =
+static cmdline_parse_token_num_t cmd_tx_loopback_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_tx_loopback_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_tx_loopback_on_off =
+static cmdline_parse_token_string_t cmd_tx_loopback_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_loopback_result,
 		 on_off, "on#off");
@@ -11629,7 +11629,7 @@ cmd_set_tx_loopback_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_tx_loopback = {
+static cmdline_parse_inst_t cmd_set_tx_loopback = {
 	.f = cmd_set_tx_loopback_parsed,
 	.data = NULL,
 	.help_str = "set tx loopback <port_id> on|off",
@@ -11656,27 +11656,27 @@ struct cmd_all_queues_drop_en_result {
 };
 
 /* Common CLI fields for tx loopback enable disable */
-cmdline_parse_token_string_t cmd_all_queues_drop_en_set =
+static cmdline_parse_token_string_t cmd_all_queues_drop_en_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_all_queues_drop_en_all =
+static cmdline_parse_token_string_t cmd_all_queues_drop_en_all =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 all, "all");
-cmdline_parse_token_string_t cmd_all_queues_drop_en_queues =
+static cmdline_parse_token_string_t cmd_all_queues_drop_en_queues =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 queues, "queues");
-cmdline_parse_token_string_t cmd_all_queues_drop_en_drop =
+static cmdline_parse_token_string_t cmd_all_queues_drop_en_drop =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 drop, "drop");
-cmdline_parse_token_num_t cmd_all_queues_drop_en_port_id =
+static cmdline_parse_token_num_t cmd_all_queues_drop_en_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_all_queues_drop_en_on_off =
+static cmdline_parse_token_string_t cmd_all_queues_drop_en_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_all_queues_drop_en_result,
 		 on_off, "on#off");
@@ -11719,7 +11719,7 @@ cmd_set_all_queues_drop_en_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_all_queues_drop_en = {
+static cmdline_parse_inst_t cmd_set_all_queues_drop_en = {
 	.f = cmd_set_all_queues_drop_en_parsed,
 	.data = NULL,
 	.help_str = "set all queues drop <port_id> on|off",
@@ -11748,31 +11748,31 @@ struct cmd_vf_split_drop_en_result {
 };
 
 /* Common CLI fields for vf split drop enable disable */
-cmdline_parse_token_string_t cmd_vf_split_drop_en_set =
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_vf =
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_split =
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_split =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 split, "split");
-cmdline_parse_token_string_t cmd_vf_split_drop_en_drop =
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_drop =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 drop, "drop");
-cmdline_parse_token_num_t cmd_vf_split_drop_en_port_id =
+static cmdline_parse_token_num_t cmd_vf_split_drop_en_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_split_drop_en_vf_id =
+static cmdline_parse_token_num_t cmd_vf_split_drop_en_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_vf_split_drop_en_on_off =
+static cmdline_parse_token_string_t cmd_vf_split_drop_en_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_split_drop_en_result,
 		 on_off, "on#off");
@@ -11812,7 +11812,7 @@ cmd_set_vf_split_drop_en_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_split_drop_en = {
+static cmdline_parse_inst_t cmd_set_vf_split_drop_en = {
 	.f = cmd_set_vf_split_drop_en_parsed,
 	.data = NULL,
 	.help_str = "set vf split drop <port_id> <vf_id> on|off",
@@ -11843,31 +11843,31 @@ struct cmd_set_vf_mac_addr_result {
 };
 
 /* Common CLI fields for vf split drop enable disable */
-cmdline_parse_token_string_t cmd_set_vf_mac_addr_set =
+static cmdline_parse_token_string_t cmd_set_vf_mac_addr_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_set_vf_mac_addr_vf =
+static cmdline_parse_token_string_t cmd_set_vf_mac_addr_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_set_vf_mac_addr_mac =
+static cmdline_parse_token_string_t cmd_set_vf_mac_addr_mac =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 mac, "mac");
-cmdline_parse_token_string_t cmd_set_vf_mac_addr_addr =
+static cmdline_parse_token_string_t cmd_set_vf_mac_addr_addr =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 addr, "addr");
-cmdline_parse_token_num_t cmd_set_vf_mac_addr_port_id =
+static cmdline_parse_token_num_t cmd_set_vf_mac_addr_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_set_vf_mac_addr_vf_id =
+static cmdline_parse_token_num_t cmd_set_vf_mac_addr_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_mac_addr_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_set_vf_mac_addr_mac_addr =
+static cmdline_parse_token_etheraddr_t cmd_set_vf_mac_addr_mac_addr =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vf_mac_addr_result,
 		 mac_addr);
 
@@ -11916,7 +11916,7 @@ cmd_set_vf_mac_addr_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_mac_addr = {
+static cmdline_parse_inst_t cmd_set_vf_mac_addr = {
 	.f = cmd_set_vf_mac_addr_parsed,
 	.data = NULL,
 	.help_str = "set vf mac addr <port_id> <vf_id> <mac_addr>",
@@ -11948,39 +11948,39 @@ struct cmd_macsec_offload_on_result {
 };
 
 /* Common CLI fields for MACsec offload disable */
-cmdline_parse_token_string_t cmd_macsec_offload_on_set =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_offload_on_macsec =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_macsec =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_offload_on_offload =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 offload, "offload");
-cmdline_parse_token_num_t cmd_macsec_offload_on_port_id =
+static cmdline_parse_token_num_t cmd_macsec_offload_on_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_macsec_offload_on_on =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_on =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 on, "on");
-cmdline_parse_token_string_t cmd_macsec_offload_on_encrypt =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_encrypt =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 encrypt, "encrypt");
-cmdline_parse_token_string_t cmd_macsec_offload_on_en_on_off =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_en_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 en_on_off, "on#off");
-cmdline_parse_token_string_t cmd_macsec_offload_on_replay_protect =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_replay_protect =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 replay_protect, "replay-protect");
-cmdline_parse_token_string_t cmd_macsec_offload_on_rp_on_off =
+static cmdline_parse_token_string_t cmd_macsec_offload_on_rp_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_on_result,
 		 rp_on_off, "on#off");
@@ -12034,7 +12034,7 @@ cmd_set_macsec_offload_on_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_macsec_offload_on = {
+static cmdline_parse_inst_t cmd_set_macsec_offload_on = {
 	.f = cmd_set_macsec_offload_on_parsed,
 	.data = NULL,
 	.help_str = "set macsec offload <port_id> on "
@@ -12063,23 +12063,23 @@ struct cmd_macsec_offload_off_result {
 };
 
 /* Common CLI fields for MACsec offload disable */
-cmdline_parse_token_string_t cmd_macsec_offload_off_set =
+static cmdline_parse_token_string_t cmd_macsec_offload_off_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_off_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_offload_off_macsec =
+static cmdline_parse_token_string_t cmd_macsec_offload_off_macsec =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_off_result,
 		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_offload_off_offload =
+static cmdline_parse_token_string_t cmd_macsec_offload_off_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_off_result,
 		 offload, "offload");
-cmdline_parse_token_num_t cmd_macsec_offload_off_port_id =
+static cmdline_parse_token_num_t cmd_macsec_offload_off_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_offload_off_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_macsec_offload_off_off =
+static cmdline_parse_token_string_t cmd_macsec_offload_off_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_offload_off_result,
 		 off, "off");
@@ -12128,7 +12128,7 @@ cmd_set_macsec_offload_off_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_macsec_offload_off = {
+static cmdline_parse_inst_t cmd_set_macsec_offload_off = {
 	.f = cmd_set_macsec_offload_off_parsed,
 	.data = NULL,
 	.help_str = "set macsec offload <port_id> off",
@@ -12154,31 +12154,31 @@ struct cmd_macsec_sc_result {
 };
 
 /* Common CLI fields for MACsec secure connection configure */
-cmdline_parse_token_string_t cmd_macsec_sc_set =
+static cmdline_parse_token_string_t cmd_macsec_sc_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_sc_macsec =
+static cmdline_parse_token_string_t cmd_macsec_sc_macsec =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_sc_sc =
+static cmdline_parse_token_string_t cmd_macsec_sc_sc =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 sc, "sc");
-cmdline_parse_token_string_t cmd_macsec_sc_tx_rx =
+static cmdline_parse_token_string_t cmd_macsec_sc_tx_rx =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 tx_rx, "tx#rx");
-cmdline_parse_token_num_t cmd_macsec_sc_port_id =
+static cmdline_parse_token_num_t cmd_macsec_sc_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_etheraddr_t cmd_macsec_sc_mac =
+static cmdline_parse_token_etheraddr_t cmd_macsec_sc_mac =
 	TOKEN_ETHERADDR_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 mac);
-cmdline_parse_token_num_t cmd_macsec_sc_pi =
+static cmdline_parse_token_num_t cmd_macsec_sc_pi =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sc_result,
 		 pi, RTE_UINT16);
@@ -12216,7 +12216,7 @@ cmd_set_macsec_sc_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_macsec_sc = {
+static cmdline_parse_inst_t cmd_set_macsec_sc = {
 	.f = cmd_set_macsec_sc_parsed,
 	.data = NULL,
 	.help_str = "set macsec sc tx|rx <port_id> <mac> <pi>",
@@ -12246,39 +12246,39 @@ struct cmd_macsec_sa_result {
 };
 
 /* Common CLI fields for MACsec secure connection configure */
-cmdline_parse_token_string_t cmd_macsec_sa_set =
+static cmdline_parse_token_string_t cmd_macsec_sa_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_macsec_sa_macsec =
+static cmdline_parse_token_string_t cmd_macsec_sa_macsec =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 macsec, "macsec");
-cmdline_parse_token_string_t cmd_macsec_sa_sa =
+static cmdline_parse_token_string_t cmd_macsec_sa_sa =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 sa, "sa");
-cmdline_parse_token_string_t cmd_macsec_sa_tx_rx =
+static cmdline_parse_token_string_t cmd_macsec_sa_tx_rx =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 tx_rx, "tx#rx");
-cmdline_parse_token_num_t cmd_macsec_sa_port_id =
+static cmdline_parse_token_num_t cmd_macsec_sa_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_macsec_sa_idx =
+static cmdline_parse_token_num_t cmd_macsec_sa_idx =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 idx, RTE_UINT8);
-cmdline_parse_token_num_t cmd_macsec_sa_an =
+static cmdline_parse_token_num_t cmd_macsec_sa_an =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 an, RTE_UINT8);
-cmdline_parse_token_num_t cmd_macsec_sa_pn =
+static cmdline_parse_token_num_t cmd_macsec_sa_pn =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 pn, RTE_UINT32);
-cmdline_parse_token_string_t cmd_macsec_sa_key =
+static cmdline_parse_token_string_t cmd_macsec_sa_key =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_macsec_sa_result,
 		 key, NULL);
@@ -12339,7 +12339,7 @@ cmd_set_macsec_sa_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_macsec_sa = {
+static cmdline_parse_inst_t cmd_set_macsec_sa = {
 	.f = cmd_set_macsec_sa_parsed,
 	.data = NULL,
 	.help_str = "set macsec sa tx|rx <port_id> <idx> <an> <pn> <key>",
@@ -12370,27 +12370,27 @@ struct cmd_vf_promisc_result {
 };
 
 /* Common CLI fields for VF unicast promiscuous mode enable disable */
-cmdline_parse_token_string_t cmd_vf_promisc_set =
+static cmdline_parse_token_string_t cmd_vf_promisc_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_promisc_vf =
+static cmdline_parse_token_string_t cmd_vf_promisc_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_promisc_promisc =
+static cmdline_parse_token_string_t cmd_vf_promisc_promisc =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 promisc, "promisc");
-cmdline_parse_token_num_t cmd_vf_promisc_port_id =
+static cmdline_parse_token_num_t cmd_vf_promisc_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_promisc_vf_id =
+static cmdline_parse_token_num_t cmd_vf_promisc_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 vf_id, RTE_UINT32);
-cmdline_parse_token_string_t cmd_vf_promisc_on_off =
+static cmdline_parse_token_string_t cmd_vf_promisc_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_promisc_result,
 		 on_off, "on#off");
@@ -12431,7 +12431,7 @@ cmd_set_vf_promisc_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_promisc = {
+static cmdline_parse_inst_t cmd_set_vf_promisc = {
 	.f = cmd_set_vf_promisc_parsed,
 	.data = NULL,
 	.help_str = "set vf promisc <port_id> <vf_id> on|off: "
@@ -12460,27 +12460,27 @@ struct cmd_vf_allmulti_result {
 };
 
 /* Common CLI fields for VF multicast promiscuous mode enable disable */
-cmdline_parse_token_string_t cmd_vf_allmulti_set =
+static cmdline_parse_token_string_t cmd_vf_allmulti_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_allmulti_vf =
+static cmdline_parse_token_string_t cmd_vf_allmulti_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_allmulti_allmulti =
+static cmdline_parse_token_string_t cmd_vf_allmulti_allmulti =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 allmulti, "allmulti");
-cmdline_parse_token_num_t cmd_vf_allmulti_port_id =
+static cmdline_parse_token_num_t cmd_vf_allmulti_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_allmulti_vf_id =
+static cmdline_parse_token_num_t cmd_vf_allmulti_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 vf_id, RTE_UINT32);
-cmdline_parse_token_string_t cmd_vf_allmulti_on_off =
+static cmdline_parse_token_string_t cmd_vf_allmulti_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_allmulti_result,
 		 on_off, "on#off");
@@ -12521,7 +12521,7 @@ cmd_set_vf_allmulti_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_allmulti = {
+static cmdline_parse_inst_t cmd_set_vf_allmulti = {
 	.f = cmd_set_vf_allmulti_parsed,
 	.data = NULL,
 	.help_str = "set vf allmulti <port_id> <vf_id> on|off: "
@@ -12550,27 +12550,27 @@ struct cmd_set_vf_broadcast_result {
 };
 
 /* Common CLI fields for vf broadcast enable disable */
-cmdline_parse_token_string_t cmd_set_vf_broadcast_set =
+static cmdline_parse_token_string_t cmd_set_vf_broadcast_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_set_vf_broadcast_vf =
+static cmdline_parse_token_string_t cmd_set_vf_broadcast_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_set_vf_broadcast_broadcast =
+static cmdline_parse_token_string_t cmd_set_vf_broadcast_broadcast =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 broadcast, "broadcast");
-cmdline_parse_token_num_t cmd_set_vf_broadcast_port_id =
+static cmdline_parse_token_num_t cmd_set_vf_broadcast_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_set_vf_broadcast_vf_id =
+static cmdline_parse_token_num_t cmd_set_vf_broadcast_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vf_broadcast_on_off =
+static cmdline_parse_token_string_t cmd_set_vf_broadcast_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_broadcast_result,
 		 on_off, "on#off");
@@ -12612,7 +12612,7 @@ cmd_set_vf_broadcast_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_broadcast = {
+static cmdline_parse_inst_t cmd_set_vf_broadcast = {
 	.f = cmd_set_vf_broadcast_parsed,
 	.data = NULL,
 	.help_str = "set vf broadcast <port_id> <vf_id> on|off",
@@ -12641,31 +12641,31 @@ struct cmd_set_vf_vlan_tag_result {
 };
 
 /* Common CLI fields for vf vlan tag enable disable */
-cmdline_parse_token_string_t cmd_set_vf_vlan_tag_set =
+static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vf =
+static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vlan =
+static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vlan =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 vlan, "vlan");
-cmdline_parse_token_string_t cmd_set_vf_vlan_tag_tag =
+static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_tag =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 tag, "tag");
-cmdline_parse_token_num_t cmd_set_vf_vlan_tag_port_id =
+static cmdline_parse_token_num_t cmd_set_vf_vlan_tag_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_set_vf_vlan_tag_vf_id =
+static cmdline_parse_token_num_t cmd_set_vf_vlan_tag_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vf_vlan_tag_on_off =
+static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_vf_vlan_tag_result,
 		 on_off, "on#off");
@@ -12707,7 +12707,7 @@ cmd_set_vf_vlan_tag_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_vf_vlan_tag = {
+static cmdline_parse_inst_t cmd_set_vf_vlan_tag = {
 	.f = cmd_set_vf_vlan_tag_parsed,
 	.data = NULL,
 	.help_str = "set vf vlan tag <port_id> <vf_id> on|off",
@@ -12740,55 +12740,55 @@ struct cmd_vf_tc_bw_result {
 	uint8_t tc_map;
 };
 
-cmdline_parse_token_string_t cmd_vf_tc_bw_set =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_vf_tc_bw_vf =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_vf_tc_bw_tc =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tc =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 tc, "tc");
-cmdline_parse_token_string_t cmd_vf_tc_bw_tx =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tx =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 tx, "tx");
-cmdline_parse_token_string_t cmd_vf_tc_bw_strict_link_prio =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_strict_link_prio =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 strict_link_prio, "strict-link-priority");
-cmdline_parse_token_string_t cmd_vf_tc_bw_min_bw =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_min_bw =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 min_bw, "min-bandwidth");
-cmdline_parse_token_string_t cmd_vf_tc_bw_max_bw =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_max_bw =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 max_bw, "max-bandwidth");
-cmdline_parse_token_num_t cmd_vf_tc_bw_port_id =
+static cmdline_parse_token_num_t cmd_vf_tc_bw_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_tc_bw_vf_id =
+static cmdline_parse_token_num_t cmd_vf_tc_bw_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 vf_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_vf_tc_bw_tc_no =
+static cmdline_parse_token_num_t cmd_vf_tc_bw_tc_no =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 tc_no, RTE_UINT8);
-cmdline_parse_token_num_t cmd_vf_tc_bw_bw =
+static cmdline_parse_token_num_t cmd_vf_tc_bw_bw =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 bw, RTE_UINT32);
-cmdline_parse_token_string_t cmd_vf_tc_bw_bw_list =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_bw_list =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 bw_list, NULL);
-cmdline_parse_token_num_t cmd_vf_tc_bw_tc_map =
+static cmdline_parse_token_num_t cmd_vf_tc_bw_tc_map =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_vf_tc_bw_result,
 		 tc_map, RTE_UINT8);
@@ -12829,7 +12829,7 @@ cmd_vf_max_bw_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_vf_max_bw = {
+static cmdline_parse_inst_t cmd_vf_max_bw = {
 	.f = cmd_vf_max_bw_parsed,
 	.data = NULL,
 	.help_str = "set vf tx max-bandwidth <port_id> <vf_id> <bandwidth>",
@@ -12931,7 +12931,7 @@ cmd_vf_tc_min_bw_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_vf_tc_min_bw = {
+static cmdline_parse_inst_t cmd_vf_tc_min_bw = {
 	.f = cmd_vf_tc_min_bw_parsed,
 	.data = NULL,
 	.help_str = "set vf tc tx min-bandwidth <port_id> <vf_id>"
@@ -12996,7 +12996,7 @@ cmd_tc_min_bw_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_tc_min_bw = {
+static cmdline_parse_inst_t cmd_tc_min_bw = {
 	.f = cmd_tc_min_bw_parsed,
 	.data = NULL,
 	.help_str = "set tc tx min-bandwidth <port_id> <bw1, bw2, ...>",
@@ -13048,7 +13048,7 @@ cmd_vf_tc_max_bw_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_vf_tc_max_bw = {
+static cmdline_parse_inst_t cmd_vf_tc_max_bw = {
 	.f = cmd_vf_tc_max_bw_parsed,
 	.data = NULL,
 	.help_str = "set vf tc tx max-bandwidth <port_id> <vf_id> <tc_no>"
@@ -13086,71 +13086,71 @@ struct cmd_set_vxlan_result {
 	struct rte_ether_addr eth_dst;
 };
 
-cmdline_parse_token_string_t cmd_set_vxlan_set =
+static cmdline_parse_token_string_t cmd_set_vxlan_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, set, "set");
-cmdline_parse_token_string_t cmd_set_vxlan_vxlan =
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, "vxlan");
-cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
 				 "vxlan-tos-ttl");
-cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
 				 "vxlan-with-vlan");
-cmdline_parse_token_string_t cmd_set_vxlan_ip_version =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "ip-version");
-cmdline_parse_token_string_t cmd_set_vxlan_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, ip_version,
 				 "ipv4#ipv6");
-cmdline_parse_token_string_t cmd_set_vxlan_vni =
+static cmdline_parse_token_string_t cmd_set_vxlan_vni =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "vni");
-cmdline_parse_token_num_t cmd_set_vxlan_vni_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_vni_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, vni, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_vxlan_udp_src =
+static cmdline_parse_token_string_t cmd_set_vxlan_udp_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "udp-src");
-cmdline_parse_token_num_t cmd_set_vxlan_udp_src_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_udp_src_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_src, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vxlan_udp_dst =
+static cmdline_parse_token_string_t cmd_set_vxlan_udp_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "udp-dst");
-cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_dst, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "ip-tos");
-cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tos, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "ip-ttl");
-cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, ttl, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_vxlan_ip_src =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "ip-src");
-cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_src_value =
+static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_src_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_src);
-cmdline_parse_token_string_t cmd_set_vxlan_ip_dst =
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "ip-dst");
-cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_dst_value =
+static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_dst_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_dst);
-cmdline_parse_token_string_t cmd_set_vxlan_vlan =
+static cmdline_parse_token_string_t cmd_set_vxlan_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "vlan-tci");
-cmdline_parse_token_num_t cmd_set_vxlan_vlan_value =
+static cmdline_parse_token_num_t cmd_set_vxlan_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tci, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_vxlan_eth_src =
+static cmdline_parse_token_string_t cmd_set_vxlan_eth_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "eth-src");
-cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_src_value =
+static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_src_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_src);
-cmdline_parse_token_string_t cmd_set_vxlan_eth_dst =
+static cmdline_parse_token_string_t cmd_set_vxlan_eth_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
 				 "eth-dst");
-cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_dst_value =
+static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_dst_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_dst);
 
 static void cmd_set_vxlan_parsed(void *parsed_result,
@@ -13200,7 +13200,7 @@ static void cmd_set_vxlan_parsed(void *parsed_result,
 		   RTE_ETHER_ADDR_LEN);
 }
 
-cmdline_parse_inst_t cmd_set_vxlan = {
+static cmdline_parse_inst_t cmd_set_vxlan = {
 	.f = cmd_set_vxlan_parsed,
 	.data = NULL,
 	.help_str = "set vxlan ip-version ipv4|ipv6 vni <vni> udp-src"
@@ -13229,7 +13229,7 @@ cmdline_parse_inst_t cmd_set_vxlan = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_vxlan_tos_ttl = {
+static cmdline_parse_inst_t cmd_set_vxlan_tos_ttl = {
 	.f = cmd_set_vxlan_parsed,
 	.data = NULL,
 	.help_str = "set vxlan-tos-ttl ip-version ipv4|ipv6 vni <vni> udp-src"
@@ -13263,7 +13263,7 @@ cmdline_parse_inst_t cmd_set_vxlan_tos_ttl = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_vxlan_with_vlan = {
+static cmdline_parse_inst_t cmd_set_vxlan_with_vlan = {
 	.f = cmd_set_vxlan_parsed,
 	.data = NULL,
 	.help_str = "set vxlan-with-vlan ip-version ipv4|ipv6 vni <vni>"
@@ -13309,48 +13309,48 @@ struct cmd_set_nvgre_result {
 	struct rte_ether_addr eth_dst;
 };
 
-cmdline_parse_token_string_t cmd_set_nvgre_set =
+static cmdline_parse_token_string_t cmd_set_nvgre_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, set, "set");
-cmdline_parse_token_string_t cmd_set_nvgre_nvgre =
+static cmdline_parse_token_string_t cmd_set_nvgre_nvgre =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre, "nvgre");
-cmdline_parse_token_string_t cmd_set_nvgre_nvgre_with_vlan =
+static cmdline_parse_token_string_t cmd_set_nvgre_nvgre_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre,
 				 "nvgre-with-vlan");
-cmdline_parse_token_string_t cmd_set_nvgre_ip_version =
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "ip-version");
-cmdline_parse_token_string_t cmd_set_nvgre_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, ip_version,
 				 "ipv4#ipv6");
-cmdline_parse_token_string_t cmd_set_nvgre_tni =
+static cmdline_parse_token_string_t cmd_set_nvgre_tni =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "tni");
-cmdline_parse_token_num_t cmd_set_nvgre_tni_value =
+static cmdline_parse_token_num_t cmd_set_nvgre_tni_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tni, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_nvgre_ip_src =
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "ip-src");
-cmdline_parse_token_num_t cmd_set_nvgre_ip_src_value =
+static cmdline_parse_token_num_t cmd_set_nvgre_ip_src_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_src);
-cmdline_parse_token_string_t cmd_set_nvgre_ip_dst =
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "ip-dst");
-cmdline_parse_token_ipaddr_t cmd_set_nvgre_ip_dst_value =
+static cmdline_parse_token_ipaddr_t cmd_set_nvgre_ip_dst_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_dst);
-cmdline_parse_token_string_t cmd_set_nvgre_vlan =
+static cmdline_parse_token_string_t cmd_set_nvgre_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "vlan-tci");
-cmdline_parse_token_num_t cmd_set_nvgre_vlan_value =
+static cmdline_parse_token_num_t cmd_set_nvgre_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tci, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_nvgre_eth_src =
+static cmdline_parse_token_string_t cmd_set_nvgre_eth_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "eth-src");
-cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_src_value =
+static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_src_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_src);
-cmdline_parse_token_string_t cmd_set_nvgre_eth_dst =
+static cmdline_parse_token_string_t cmd_set_nvgre_eth_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
 				 "eth-dst");
-cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_dst_value =
+static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_dst_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_dst);
 
 static void cmd_set_nvgre_parsed(void *parsed_result,
@@ -13391,7 +13391,7 @@ static void cmd_set_nvgre_parsed(void *parsed_result,
 		   RTE_ETHER_ADDR_LEN);
 }
 
-cmdline_parse_inst_t cmd_set_nvgre = {
+static cmdline_parse_inst_t cmd_set_nvgre = {
 	.f = cmd_set_nvgre_parsed,
 	.data = NULL,
 	.help_str = "set nvgre ip-version <ipv4|ipv6> tni <tni> ip-src"
@@ -13416,7 +13416,7 @@ cmdline_parse_inst_t cmd_set_nvgre = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_nvgre_with_vlan = {
+static cmdline_parse_inst_t cmd_set_nvgre_with_vlan = {
 	.f = cmd_set_nvgre_parsed,
 	.data = NULL,
 	.help_str = "set nvgre-with-vlan ip-version <ipv4|ipv6> tni <tni>"
@@ -13455,33 +13455,33 @@ struct cmd_set_l2_encap_result {
 	struct rte_ether_addr eth_dst;
 };
 
-cmdline_parse_token_string_t cmd_set_l2_encap_set =
+static cmdline_parse_token_string_t cmd_set_l2_encap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, set, "set");
-cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap =
+static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap, "l2_encap");
-cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap,
 				 "l2_encap-with-vlan");
-cmdline_parse_token_string_t cmd_set_l2_encap_ip_version =
+static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
 				 "ip-version");
-cmdline_parse_token_string_t cmd_set_l2_encap_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, ip_version,
 				 "ipv4#ipv6");
-cmdline_parse_token_string_t cmd_set_l2_encap_vlan =
+static cmdline_parse_token_string_t cmd_set_l2_encap_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
 				 "vlan-tci");
-cmdline_parse_token_num_t cmd_set_l2_encap_vlan_value =
+static cmdline_parse_token_num_t cmd_set_l2_encap_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_l2_encap_result, tci, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_l2_encap_eth_src =
+static cmdline_parse_token_string_t cmd_set_l2_encap_eth_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
 				 "eth-src");
-cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_src_value =
+static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_src_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_src);
-cmdline_parse_token_string_t cmd_set_l2_encap_eth_dst =
+static cmdline_parse_token_string_t cmd_set_l2_encap_eth_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
 				 "eth-dst");
-cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_dst_value =
+static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_dst_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_dst);
 
 static void cmd_set_l2_encap_parsed(void *parsed_result,
@@ -13508,7 +13508,7 @@ static void cmd_set_l2_encap_parsed(void *parsed_result,
 		   RTE_ETHER_ADDR_LEN);
 }
 
-cmdline_parse_inst_t cmd_set_l2_encap = {
+static cmdline_parse_inst_t cmd_set_l2_encap = {
 	.f = cmd_set_l2_encap_parsed,
 	.data = NULL,
 	.help_str = "set l2_encap ip-version ipv4|ipv6"
@@ -13526,7 +13526,7 @@ cmdline_parse_inst_t cmd_set_l2_encap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_l2_encap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_l2_encap_with_vlan = {
 	.f = cmd_set_l2_encap_parsed,
 	.data = NULL,
 	.help_str = "set l2_encap-with-vlan ip-version ipv4|ipv6"
@@ -13554,12 +13554,12 @@ struct cmd_set_l2_decap_result {
 	uint32_t vlan_present:1;
 };
 
-cmdline_parse_token_string_t cmd_set_l2_decap_set =
+static cmdline_parse_token_string_t cmd_set_l2_decap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, set, "set");
-cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap =
+static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
 				 "l2_decap");
-cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
 				 "l2_decap-with-vlan");
 
@@ -13575,7 +13575,7 @@ static void cmd_set_l2_decap_parsed(void *parsed_result,
 		l2_decap_conf.select_vlan = 1;
 }
 
-cmdline_parse_inst_t cmd_set_l2_decap = {
+static cmdline_parse_inst_t cmd_set_l2_decap = {
 	.f = cmd_set_l2_decap_parsed,
 	.data = NULL,
 	.help_str = "set l2_decap",
@@ -13586,7 +13586,7 @@ cmdline_parse_inst_t cmd_set_l2_decap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_l2_decap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_l2_decap_with_vlan = {
 	.f = cmd_set_l2_decap_parsed,
 	.data = NULL,
 	.help_str = "set l2_decap-with-vlan",
@@ -13612,53 +13612,53 @@ struct cmd_set_mplsogre_encap_result {
 	struct rte_ether_addr eth_dst;
 };
 
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_set =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, set,
 				 "set");
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, mplsogre,
 				 "mplsogre_encap");
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 mplsogre, "mplsogre_encap-with-vlan");
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "ip-version");
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 ip_version, "ipv4#ipv6");
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_label =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_label =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "label");
-cmdline_parse_token_num_t cmd_set_mplsogre_encap_label_value =
+static cmdline_parse_token_num_t cmd_set_mplsogre_encap_label_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, label,
 			      RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_src =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "ip-src");
-cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_src_value =
+static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_src_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_src);
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_dst =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "ip-dst");
-cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_dst_value =
+static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_dst_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_dst);
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "vlan-tci");
-cmdline_parse_token_num_t cmd_set_mplsogre_encap_vlan_value =
+static cmdline_parse_token_num_t cmd_set_mplsogre_encap_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, tci,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_src =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "eth-src");
-cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_src_value =
+static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_src_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				    eth_src);
-cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_dst =
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				 pos_token, "eth-dst");
-cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_dst_value =
+static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_dst_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
 				    eth_dst);
 
@@ -13700,7 +13700,7 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
 		   RTE_ETHER_ADDR_LEN);
 }
 
-cmdline_parse_inst_t cmd_set_mplsogre_encap = {
+static cmdline_parse_inst_t cmd_set_mplsogre_encap = {
 	.f = cmd_set_mplsogre_encap_parsed,
 	.data = NULL,
 	.help_str = "set mplsogre_encap ip-version ipv4|ipv6 label <label>"
@@ -13725,7 +13725,7 @@ cmdline_parse_inst_t cmd_set_mplsogre_encap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_mplsogre_encap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_mplsogre_encap_with_vlan = {
 	.f = cmd_set_mplsogre_encap_parsed,
 	.data = NULL,
 	.help_str = "set mplsogre_encap-with-vlan ip-version ipv4|ipv6"
@@ -13761,19 +13761,19 @@ struct cmd_set_mplsogre_decap_result {
 	uint32_t vlan_present:1;
 };
 
-cmdline_parse_token_string_t cmd_set_mplsogre_decap_set =
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, set,
 				 "set");
-cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap =
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, mplsogre,
 				 "mplsogre_decap");
-cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
 				 mplsogre, "mplsogre_decap-with-vlan");
-cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version =
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
 				 pos_token, "ip-version");
-cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
 				 ip_version, "ipv4#ipv6");
 
@@ -13793,7 +13793,7 @@ static void cmd_set_mplsogre_decap_parsed(void *parsed_result,
 		mplsogre_decap_conf.select_ipv4 = 0;
 }
 
-cmdline_parse_inst_t cmd_set_mplsogre_decap = {
+static cmdline_parse_inst_t cmd_set_mplsogre_decap = {
 	.f = cmd_set_mplsogre_decap_parsed,
 	.data = NULL,
 	.help_str = "set mplsogre_decap ip-version ipv4|ipv6",
@@ -13806,7 +13806,7 @@ cmdline_parse_inst_t cmd_set_mplsogre_decap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_mplsogre_decap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_mplsogre_decap_with_vlan = {
 	.f = cmd_set_mplsogre_decap_parsed,
 	.data = NULL,
 	.help_str = "set mplsogre_decap-with-vlan ip-version ipv4|ipv6",
@@ -13836,65 +13836,65 @@ struct cmd_set_mplsoudp_encap_result {
 	struct rte_ether_addr eth_dst;
 };
 
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_set =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, set,
 				 "set");
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, mplsoudp,
 				 "mplsoudp_encap");
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 mplsoudp, "mplsoudp_encap-with-vlan");
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "ip-version");
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 ip_version, "ipv4#ipv6");
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_label =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_label =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "label");
-cmdline_parse_token_num_t cmd_set_mplsoudp_encap_label_value =
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_label_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, label,
 			      RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_src =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "udp-src");
-cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_src_value =
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_src_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_src,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_dst =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "udp-dst");
-cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_dst_value =
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_dst_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_dst,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_src =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "ip-src");
-cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_src_value =
+static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_src_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_src);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_dst =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "ip-dst");
-cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_dst_value =
+static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_dst_value =
 	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_dst);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "vlan-tci");
-cmdline_parse_token_num_t cmd_set_mplsoudp_encap_vlan_value =
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_vlan_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, tci,
 			      RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_src =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_src =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "eth-src");
-cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_src_value =
+static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_src_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				    eth_src);
-cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_dst =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_dst =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				 pos_token, "eth-dst");
-cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_dst_value =
+static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_dst_value =
 	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
 				    eth_dst);
 
@@ -13938,7 +13938,7 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result,
 		   RTE_ETHER_ADDR_LEN);
 }
 
-cmdline_parse_inst_t cmd_set_mplsoudp_encap = {
+static cmdline_parse_inst_t cmd_set_mplsoudp_encap = {
 	.f = cmd_set_mplsoudp_encap_parsed,
 	.data = NULL,
 	.help_str = "set mplsoudp_encap ip-version ipv4|ipv6 label <label>"
@@ -13967,7 +13967,7 @@ cmdline_parse_inst_t cmd_set_mplsoudp_encap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_mplsoudp_encap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_mplsoudp_encap_with_vlan = {
 	.f = cmd_set_mplsoudp_encap_parsed,
 	.data = NULL,
 	.help_str = "set mplsoudp_encap-with-vlan ip-version ipv4|ipv6"
@@ -14008,19 +14008,19 @@ struct cmd_set_mplsoudp_decap_result {
 	uint32_t vlan_present:1;
 };
 
-cmdline_parse_token_string_t cmd_set_mplsoudp_decap_set =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, set,
 				 "set");
-cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, mplsoudp,
 				 "mplsoudp_decap");
-cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
 				 mplsoudp, "mplsoudp_decap-with-vlan");
-cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
 				 pos_token, "ip-version");
-cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version_value =
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
 				 ip_version, "ipv4#ipv6");
 
@@ -14040,7 +14040,7 @@ static void cmd_set_mplsoudp_decap_parsed(void *parsed_result,
 		mplsoudp_decap_conf.select_ipv4 = 0;
 }
 
-cmdline_parse_inst_t cmd_set_mplsoudp_decap = {
+static cmdline_parse_inst_t cmd_set_mplsoudp_decap = {
 	.f = cmd_set_mplsoudp_decap_parsed,
 	.data = NULL,
 	.help_str = "set mplsoudp_decap ip-version ipv4|ipv6",
@@ -14053,7 +14053,7 @@ cmdline_parse_inst_t cmd_set_mplsoudp_decap = {
 	},
 };
 
-cmdline_parse_inst_t cmd_set_mplsoudp_decap_with_vlan = {
+static cmdline_parse_inst_t cmd_set_mplsoudp_decap_with_vlan = {
 	.f = cmd_set_mplsoudp_decap_parsed,
 	.data = NULL,
 	.help_str = "set mplsoudp_decap-with-vlan ip-version ipv4|ipv6",
@@ -14105,109 +14105,109 @@ struct cmd_set_conntrack_common_result {
 	uint32_t le;
 };
 
-cmdline_parse_token_string_t cmd_set_conntrack_set =
+static cmdline_parse_token_string_t cmd_set_conntrack_set =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 set, "set");
-cmdline_parse_token_string_t cmd_set_conntrack_conntrack =
+static cmdline_parse_token_string_t cmd_set_conntrack_conntrack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 conntrack, "conntrack");
-cmdline_parse_token_string_t cmd_set_conntrack_common_com =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_com =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 common, "com");
-cmdline_parse_token_string_t cmd_set_conntrack_common_peer =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_peer =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 peer, "peer");
-cmdline_parse_token_num_t cmd_set_conntrack_common_peer_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_peer_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      peer_port, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_conntrack_common_is_orig =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_is_orig =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 is_orig, "is_orig");
-cmdline_parse_token_num_t cmd_set_conntrack_common_is_orig_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_is_orig_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      is_original, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_enable =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_enable =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 enable, "enable");
-cmdline_parse_token_num_t cmd_set_conntrack_common_enable_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_enable_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      en, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_live =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_live =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 live, "live");
-cmdline_parse_token_num_t cmd_set_conntrack_common_live_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_live_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      is_live, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_sack =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_sack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 sack, "sack");
-cmdline_parse_token_num_t cmd_set_conntrack_common_sack_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_sack_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      s_ack, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_cack =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_cack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 cack, "cack");
-cmdline_parse_token_num_t cmd_set_conntrack_common_cack_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_cack_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      c_ack, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_dir =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_dir =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_dir, "last_dir");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_dir_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_dir_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      ld, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_liberal =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_liberal =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 liberal, "liberal");
-cmdline_parse_token_num_t cmd_set_conntrack_common_liberal_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_liberal_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      lb, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_state =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_state =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 state, "state");
-cmdline_parse_token_num_t cmd_set_conntrack_common_state_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_state_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      stat, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_conntrack_common_max_ackwin =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_max_ackwin =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 max_ack_win, "max_ack_win");
-cmdline_parse_token_num_t cmd_set_conntrack_common_max_ackwin_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_max_ackwin_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      factor, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_conntrack_common_retrans =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_retrans =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 retrans, "r_lim");
-cmdline_parse_token_num_t cmd_set_conntrack_common_retrans_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_retrans_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      re_num, RTE_UINT8);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_win =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_win =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_win, "last_win");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_win_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_win_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      lw, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_seq =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_seq =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_seq, "last_seq");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_seq_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_seq_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      ls, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_ack =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_ack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_ack, "last_ack");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_ack_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_ack_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      la, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_end =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_end =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_end, "last_end");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_end_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_end_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      le, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_common_last_index =
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_index =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
 				 last_index, "last_index");
-cmdline_parse_token_num_t cmd_set_conntrack_common_last_index_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_index_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
 			      li, RTE_UINT8);
 
@@ -14237,7 +14237,7 @@ static void cmd_set_conntrack_common_parsed(void *parsed_result,
 	conntrack_context.last_end = res->le;
 }
 
-cmdline_parse_inst_t cmd_set_conntrack_common = {
+static cmdline_parse_inst_t cmd_set_conntrack_common = {
 	.f = cmd_set_conntrack_common_parsed,
 	.data = NULL,
 	.help_str = "set conntrack com peer <port_id> is_orig <dir> enable <en>"
@@ -14308,61 +14308,55 @@ struct cmd_set_conntrack_dir_result {
 	uint32_t ma;
 };
 
-cmdline_parse_token_string_t cmd_set_conntrack_dir_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 set, "set");
-cmdline_parse_token_string_t cmd_set_conntrack_dir_conntrack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 conntrack, "conntrack");
-cmdline_parse_token_string_t cmd_set_conntrack_dir_dir =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_dir =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 dir, "orig#rply");
-cmdline_parse_token_string_t cmd_set_conntrack_dir_scale =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_scale =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 scale, "scale");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_scale_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_scale_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      factor, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_fin =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_fin =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 fin, "fin");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_fin_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_fin_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      f, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_ack =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_ack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 ack_seen, "acked");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_ack_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_ack_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      as, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_unack_data =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_unack_data =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 unack, "unack_data");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_unack_data_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_unack_data_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      un, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_sent_end =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_sent_end =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 sent_end, "sent_end");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_sent_end_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_sent_end_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      se, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_reply_end =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_reply_end =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 reply_end, "reply_end");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_reply_end_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_reply_end_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      re, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_max_win =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_max_win =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 max_win, "max_win");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_max_win_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_max_win_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      mw, RTE_UINT32);
-cmdline_parse_token_string_t cmd_set_conntrack_dir_max_ack =
+static cmdline_parse_token_string_t cmd_set_conntrack_dir_max_ack =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
 				 max_ack, "max_ack");
-cmdline_parse_token_num_t cmd_set_conntrack_dir_max_ack_value =
+static cmdline_parse_token_num_t cmd_set_conntrack_dir_max_ack_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
 			      ma, RTE_UINT32);
 
@@ -14389,7 +14383,7 @@ static void cmd_set_conntrack_dir_parsed(void *parsed_result,
 	dir->max_win = res->mw;
 }
 
-cmdline_parse_inst_t cmd_set_conntrack_dir = {
+static cmdline_parse_inst_t cmd_set_conntrack_dir = {
 	.f = cmd_set_conntrack_dir_parsed,
 	.data = NULL,
 	.help_str = "set conntrack orig|rply scale <factor> fin <sent>"
@@ -14453,7 +14447,7 @@ cmd_strict_link_prio_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_strict_link_prio = {
+static cmdline_parse_inst_t cmd_strict_link_prio = {
 	.f = cmd_strict_link_prio_parsed,
 	.data = NULL,
 	.help_str = "set tx strict-link-priority <port_id> <tc_bitmap>",
@@ -14475,14 +14469,14 @@ struct cmd_ddp_add_result {
 	char filepath[];
 };
 
-cmdline_parse_token_string_t cmd_ddp_add_ddp =
+static cmdline_parse_token_string_t cmd_ddp_add_ddp =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, ddp, "ddp");
-cmdline_parse_token_string_t cmd_ddp_add_add =
+static cmdline_parse_token_string_t cmd_ddp_add_add =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, add, "add");
-cmdline_parse_token_num_t cmd_ddp_add_port_id =
+static cmdline_parse_token_num_t cmd_ddp_add_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_ddp_add_result, port_id,
 		RTE_UINT16);
-cmdline_parse_token_string_t cmd_ddp_add_filepath =
+static cmdline_parse_token_string_t cmd_ddp_add_filepath =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, filepath, NULL);
 
 static void
@@ -14535,7 +14529,7 @@ cmd_ddp_add_parsed(
 	free((void *)filepath);
 }
 
-cmdline_parse_inst_t cmd_ddp_add = {
+static cmdline_parse_inst_t cmd_ddp_add = {
 	.f = cmd_ddp_add_parsed,
 	.data = NULL,
 	.help_str = "ddp add <port_id> <profile_path[,backup_profile_path]>",
@@ -14556,13 +14550,13 @@ struct cmd_ddp_del_result {
 	char filepath[];
 };
 
-cmdline_parse_token_string_t cmd_ddp_del_ddp =
+static cmdline_parse_token_string_t cmd_ddp_del_ddp =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, ddp, "ddp");
-cmdline_parse_token_string_t cmd_ddp_del_del =
+static cmdline_parse_token_string_t cmd_ddp_del_del =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, del, "del");
-cmdline_parse_token_num_t cmd_ddp_del_port_id =
+static cmdline_parse_token_num_t cmd_ddp_del_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_ddp_del_result, port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_ddp_del_filepath =
+static cmdline_parse_token_string_t cmd_ddp_del_filepath =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, filepath, NULL);
 
 static void
@@ -14600,7 +14594,7 @@ cmd_ddp_del_parsed(
 	close_file(buff);
 }
 
-cmdline_parse_inst_t cmd_ddp_del = {
+static cmdline_parse_inst_t cmd_ddp_del = {
 	.f = cmd_ddp_del_parsed,
 	.data = NULL,
 	.help_str = "ddp del <port_id> <backup_profile_path>",
@@ -14621,13 +14615,13 @@ struct cmd_ddp_info_result {
 	char filepath[];
 };
 
-cmdline_parse_token_string_t cmd_ddp_info_ddp =
+static cmdline_parse_token_string_t cmd_ddp_info_ddp =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, ddp, "ddp");
-cmdline_parse_token_string_t cmd_ddp_info_get =
+static cmdline_parse_token_string_t cmd_ddp_info_get =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, get, "get");
-cmdline_parse_token_string_t cmd_ddp_info_info =
+static cmdline_parse_token_string_t cmd_ddp_info_info =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, info, "info");
-cmdline_parse_token_string_t cmd_ddp_info_filepath =
+static cmdline_parse_token_string_t cmd_ddp_info_filepath =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, filepath, NULL);
 
 static void
@@ -14836,7 +14830,7 @@ cmd_ddp_info_parsed(
 	close_file(pkg);
 }
 
-cmdline_parse_inst_t cmd_ddp_get_info = {
+static cmdline_parse_inst_t cmd_ddp_get_info = {
 	.f = cmd_ddp_info_parsed,
 	.data = NULL,
 	.help_str = "ddp get info <profile_path>",
@@ -14860,13 +14854,13 @@ struct cmd_ddp_get_list_result {
 	portid_t port_id;
 };
 
-cmdline_parse_token_string_t cmd_ddp_get_list_ddp =
+static cmdline_parse_token_string_t cmd_ddp_get_list_ddp =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, ddp, "ddp");
-cmdline_parse_token_string_t cmd_ddp_get_list_get =
+static cmdline_parse_token_string_t cmd_ddp_get_list_get =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, get, "get");
-cmdline_parse_token_string_t cmd_ddp_get_list_list =
+static cmdline_parse_token_string_t cmd_ddp_get_list_list =
 	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, list, "list");
-cmdline_parse_token_num_t cmd_ddp_get_list_port_id =
+static cmdline_parse_token_num_t cmd_ddp_get_list_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_ddp_get_list_result, port_id,
 		RTE_UINT16);
 
@@ -14922,7 +14916,7 @@ cmd_ddp_get_list_parsed(
 		fprintf(stderr, "Failed to get ddp list\n");
 }
 
-cmdline_parse_inst_t cmd_ddp_get_list = {
+static cmdline_parse_inst_t cmd_ddp_get_list = {
 	.f = cmd_ddp_get_list_parsed,
 	.data = NULL,
 	.help_str = "ddp get list <port_id>",
@@ -15011,36 +15005,36 @@ cmd_cfg_input_set_parsed(
 		fprintf(stderr, "Function not supported\n");
 }
 
-cmdline_parse_token_string_t cmd_cfg_input_set_port =
+static cmdline_parse_token_string_t cmd_cfg_input_set_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 port, "port");
-cmdline_parse_token_string_t cmd_cfg_input_set_cfg =
+static cmdline_parse_token_string_t cmd_cfg_input_set_cfg =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 cfg, "config");
-cmdline_parse_token_num_t cmd_cfg_input_set_port_id =
+static cmdline_parse_token_num_t cmd_cfg_input_set_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_cfg_input_set_pctype =
+static cmdline_parse_token_string_t cmd_cfg_input_set_pctype =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 pctype, "pctype");
-cmdline_parse_token_num_t cmd_cfg_input_set_pctype_id =
+static cmdline_parse_token_num_t cmd_cfg_input_set_pctype_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
 			      pctype_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_cfg_input_set_inset_type =
+static cmdline_parse_token_string_t cmd_cfg_input_set_inset_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 inset_type,
 				 "hash_inset#fdir_inset#fdir_flx_inset");
-cmdline_parse_token_string_t cmd_cfg_input_set_opt =
+static cmdline_parse_token_string_t cmd_cfg_input_set_opt =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 opt, "get#set#clear");
-cmdline_parse_token_string_t cmd_cfg_input_set_field =
+static cmdline_parse_token_string_t cmd_cfg_input_set_field =
 	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
 				 field, "field");
-cmdline_parse_token_num_t cmd_cfg_input_set_field_idx =
+static cmdline_parse_token_num_t cmd_cfg_input_set_field_idx =
 	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
 			      field_idx, RTE_UINT8);
 
-cmdline_parse_inst_t cmd_cfg_input_set = {
+static cmdline_parse_inst_t cmd_cfg_input_set = {
 	.f = cmd_cfg_input_set_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> pctype <pctype_id> hash_inset|"
@@ -15112,33 +15106,33 @@ cmd_clear_input_set_parsed(
 		fprintf(stderr, "Function not supported\n");
 }
 
-cmdline_parse_token_string_t cmd_clear_input_set_port =
+static cmdline_parse_token_string_t cmd_clear_input_set_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 port, "port");
-cmdline_parse_token_string_t cmd_clear_input_set_cfg =
+static cmdline_parse_token_string_t cmd_clear_input_set_cfg =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 cfg, "config");
-cmdline_parse_token_num_t cmd_clear_input_set_port_id =
+static cmdline_parse_token_num_t cmd_clear_input_set_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_clear_input_set_result,
 			      port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_clear_input_set_pctype =
+static cmdline_parse_token_string_t cmd_clear_input_set_pctype =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 pctype, "pctype");
-cmdline_parse_token_num_t cmd_clear_input_set_pctype_id =
+static cmdline_parse_token_num_t cmd_clear_input_set_pctype_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_clear_input_set_result,
 			      pctype_id, RTE_UINT8);
-cmdline_parse_token_string_t cmd_clear_input_set_inset_type =
+static cmdline_parse_token_string_t cmd_clear_input_set_inset_type =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 inset_type,
 				 "hash_inset#fdir_inset#fdir_flx_inset");
-cmdline_parse_token_string_t cmd_clear_input_set_clear =
+static cmdline_parse_token_string_t cmd_clear_input_set_clear =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 clear, "clear");
-cmdline_parse_token_string_t cmd_clear_input_set_all =
+static cmdline_parse_token_string_t cmd_clear_input_set_all =
 	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
 				 all, "all");
 
-cmdline_parse_inst_t cmd_clear_input_set = {
+static cmdline_parse_inst_t cmd_clear_input_set = {
 	.f = cmd_clear_input_set_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> pctype <pctype_id> hash_inset|"
@@ -15168,23 +15162,23 @@ struct cmd_show_vf_stats_result {
 };
 
 /* Common CLI fields show vf stats*/
-cmdline_parse_token_string_t cmd_show_vf_stats_show =
+static cmdline_parse_token_string_t cmd_show_vf_stats_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_vf_stats_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_show_vf_stats_vf =
+static cmdline_parse_token_string_t cmd_show_vf_stats_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_vf_stats_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_show_vf_stats_stats =
+static cmdline_parse_token_string_t cmd_show_vf_stats_stats =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_vf_stats_result,
 		 stats, "stats");
-cmdline_parse_token_num_t cmd_show_vf_stats_port_id =
+static cmdline_parse_token_num_t cmd_show_vf_stats_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_vf_stats_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_show_vf_stats_vf_id =
+static cmdline_parse_token_num_t cmd_show_vf_stats_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_vf_stats_result,
 		 vf_id, RTE_UINT16);
@@ -15251,7 +15245,7 @@ cmd_show_vf_stats_parsed(
 			       nic_stats_border, nic_stats_border);
 }
 
-cmdline_parse_inst_t cmd_show_vf_stats = {
+static cmdline_parse_inst_t cmd_show_vf_stats = {
 	.f = cmd_show_vf_stats_parsed,
 	.data = NULL,
 	.help_str = "show vf stats <port_id> <vf_id>",
@@ -15277,23 +15271,23 @@ struct cmd_clear_vf_stats_result {
 };
 
 /* Common CLI fields clear vf stats*/
-cmdline_parse_token_string_t cmd_clear_vf_stats_clear =
+static cmdline_parse_token_string_t cmd_clear_vf_stats_clear =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_clear_vf_stats_result,
 		 clear, "clear");
-cmdline_parse_token_string_t cmd_clear_vf_stats_vf =
+static cmdline_parse_token_string_t cmd_clear_vf_stats_vf =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_clear_vf_stats_result,
 		 vf, "vf");
-cmdline_parse_token_string_t cmd_clear_vf_stats_stats =
+static cmdline_parse_token_string_t cmd_clear_vf_stats_stats =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_clear_vf_stats_result,
 		 stats, "stats");
-cmdline_parse_token_num_t cmd_clear_vf_stats_port_id =
+static cmdline_parse_token_num_t cmd_clear_vf_stats_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_clear_vf_stats_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_clear_vf_stats_vf_id =
+static cmdline_parse_token_num_t cmd_clear_vf_stats_vf_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_clear_vf_stats_result,
 		 vf_id, RTE_UINT16);
@@ -15338,7 +15332,7 @@ cmd_clear_vf_stats_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_clear_vf_stats = {
+static cmdline_parse_inst_t cmd_clear_vf_stats = {
 	.f = cmd_clear_vf_stats_parsed,
 	.data = NULL,
 	.help_str = "clear vf stats <port_id> <vf_id>",
@@ -15365,27 +15359,27 @@ struct cmd_pctype_mapping_reset_result {
 };
 
 /* Common CLI fields for port config pctype mapping reset*/
-cmdline_parse_token_string_t cmd_pctype_mapping_reset_port =
+static cmdline_parse_token_string_t cmd_pctype_mapping_reset_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 port, "port");
-cmdline_parse_token_string_t cmd_pctype_mapping_reset_config =
+static cmdline_parse_token_string_t cmd_pctype_mapping_reset_config =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 config, "config");
-cmdline_parse_token_num_t cmd_pctype_mapping_reset_port_id =
+static cmdline_parse_token_num_t cmd_pctype_mapping_reset_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_pctype_mapping_reset_pctype =
+static cmdline_parse_token_string_t cmd_pctype_mapping_reset_pctype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 pctype, "pctype");
-cmdline_parse_token_string_t cmd_pctype_mapping_reset_mapping =
+static cmdline_parse_token_string_t cmd_pctype_mapping_reset_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_pctype_mapping_reset_reset =
+static cmdline_parse_token_string_t cmd_pctype_mapping_reset_reset =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_reset_result,
 		 reset, "reset");
@@ -15420,7 +15414,7 @@ cmd_pctype_mapping_reset_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_pctype_mapping_reset = {
+static cmdline_parse_inst_t cmd_pctype_mapping_reset = {
 	.f = cmd_pctype_mapping_reset_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> pctype mapping reset",
@@ -15447,23 +15441,23 @@ struct cmd_pctype_mapping_get_result {
 };
 
 /* Common CLI fields for pctype mapping get */
-cmdline_parse_token_string_t cmd_pctype_mapping_get_show =
+static cmdline_parse_token_string_t cmd_pctype_mapping_get_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_get_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_pctype_mapping_get_port =
+static cmdline_parse_token_string_t cmd_pctype_mapping_get_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_get_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_pctype_mapping_get_port_id =
+static cmdline_parse_token_num_t cmd_pctype_mapping_get_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_pctype_mapping_get_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_pctype_mapping_get_pctype =
+static cmdline_parse_token_string_t cmd_pctype_mapping_get_pctype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_get_result,
 		 pctype, "pctype");
-cmdline_parse_token_string_t cmd_pctype_mapping_get_mapping =
+static cmdline_parse_token_string_t cmd_pctype_mapping_get_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_get_result,
 		 mapping, "mapping");
@@ -15522,7 +15516,7 @@ cmd_pctype_mapping_get_parsed(
 #endif
 }
 
-cmdline_parse_inst_t cmd_pctype_mapping_get = {
+static cmdline_parse_inst_t cmd_pctype_mapping_get = {
 	.f = cmd_pctype_mapping_get_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> pctype mapping",
@@ -15551,35 +15545,35 @@ struct cmd_pctype_mapping_update_result {
 };
 
 /* Common CLI fields for pctype mapping update*/
-cmdline_parse_token_string_t cmd_pctype_mapping_update_port =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 port, "port");
-cmdline_parse_token_string_t cmd_pctype_mapping_update_config =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_config =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 config, "config");
-cmdline_parse_token_num_t cmd_pctype_mapping_update_port_id =
+static cmdline_parse_token_num_t cmd_pctype_mapping_update_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_pctype_mapping_update_pctype =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_pctype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 pctype, "pctype");
-cmdline_parse_token_string_t cmd_pctype_mapping_update_mapping =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_pctype_mapping_update_update =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_update =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 update, "update");
-cmdline_parse_token_string_t cmd_pctype_mapping_update_pc_type =
+static cmdline_parse_token_string_t cmd_pctype_mapping_update_pc_type =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 pctype_list, NULL);
-cmdline_parse_token_num_t cmd_pctype_mapping_update_flow_type =
+static cmdline_parse_token_num_t cmd_pctype_mapping_update_flow_type =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_pctype_mapping_update_result,
 		 flow_type, RTE_UINT16);
@@ -15631,7 +15625,7 @@ cmd_pctype_mapping_update_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_pctype_mapping_update = {
+static cmdline_parse_inst_t cmd_pctype_mapping_update = {
 	.f = cmd_pctype_mapping_update_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> pctype mapping update"
@@ -15661,23 +15655,23 @@ struct cmd_ptype_mapping_get_result {
 };
 
 /* Common CLI fields for ptype mapping get */
-cmdline_parse_token_string_t cmd_ptype_mapping_get_ptype =
+static cmdline_parse_token_string_t cmd_ptype_mapping_get_ptype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_get_result,
 		 ptype, "ptype");
-cmdline_parse_token_string_t cmd_ptype_mapping_get_mapping =
+static cmdline_parse_token_string_t cmd_ptype_mapping_get_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_get_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_ptype_mapping_get_get =
+static cmdline_parse_token_string_t cmd_ptype_mapping_get_get =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_get_result,
 		 get, "get");
-cmdline_parse_token_num_t cmd_ptype_mapping_get_port_id =
+static cmdline_parse_token_num_t cmd_ptype_mapping_get_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_get_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_ptype_mapping_get_valid_only =
+static cmdline_parse_token_num_t cmd_ptype_mapping_get_valid_only =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_get_result,
 		 valid_only, RTE_UINT8);
@@ -15730,7 +15724,7 @@ cmd_ptype_mapping_get_parsed(
 #endif
 }
 
-cmdline_parse_inst_t cmd_ptype_mapping_get = {
+static cmdline_parse_inst_t cmd_ptype_mapping_get = {
 	.f = cmd_ptype_mapping_get_parsed,
 	.data = NULL,
 	.help_str = "ptype mapping get <port_id> <valid_only>",
@@ -15758,31 +15752,31 @@ struct cmd_ptype_mapping_replace_result {
 };
 
 /* Common CLI fields for ptype mapping replace */
-cmdline_parse_token_string_t cmd_ptype_mapping_replace_ptype =
+static cmdline_parse_token_string_t cmd_ptype_mapping_replace_ptype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 ptype, "ptype");
-cmdline_parse_token_string_t cmd_ptype_mapping_replace_mapping =
+static cmdline_parse_token_string_t cmd_ptype_mapping_replace_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_ptype_mapping_replace_replace =
+static cmdline_parse_token_string_t cmd_ptype_mapping_replace_replace =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 replace, "replace");
-cmdline_parse_token_num_t cmd_ptype_mapping_replace_port_id =
+static cmdline_parse_token_num_t cmd_ptype_mapping_replace_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_ptype_mapping_replace_target =
+static cmdline_parse_token_num_t cmd_ptype_mapping_replace_target =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 target, RTE_UINT32);
-cmdline_parse_token_num_t cmd_ptype_mapping_replace_mask =
+static cmdline_parse_token_num_t cmd_ptype_mapping_replace_mask =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 mask, RTE_UINT8);
-cmdline_parse_token_num_t cmd_ptype_mapping_replace_pkt_type =
+static cmdline_parse_token_num_t cmd_ptype_mapping_replace_pkt_type =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_replace_result,
 		 pkt_type, RTE_UINT32);
@@ -15824,7 +15818,7 @@ cmd_ptype_mapping_replace_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_ptype_mapping_replace = {
+static cmdline_parse_inst_t cmd_ptype_mapping_replace = {
 	.f = cmd_ptype_mapping_replace_parsed,
 	.data = NULL,
 	.help_str =
@@ -15852,19 +15846,19 @@ struct cmd_ptype_mapping_reset_result {
 };
 
 /* Common CLI fields for ptype mapping reset*/
-cmdline_parse_token_string_t cmd_ptype_mapping_reset_ptype =
+static cmdline_parse_token_string_t cmd_ptype_mapping_reset_ptype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_reset_result,
 		 ptype, "ptype");
-cmdline_parse_token_string_t cmd_ptype_mapping_reset_mapping =
+static cmdline_parse_token_string_t cmd_ptype_mapping_reset_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_reset_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_ptype_mapping_reset_reset =
+static cmdline_parse_token_string_t cmd_ptype_mapping_reset_reset =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_reset_result,
 		 reset, "reset");
-cmdline_parse_token_num_t cmd_ptype_mapping_reset_port_id =
+static cmdline_parse_token_num_t cmd_ptype_mapping_reset_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_reset_result,
 		 port_id, RTE_UINT16);
@@ -15899,7 +15893,7 @@ cmd_ptype_mapping_reset_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_ptype_mapping_reset = {
+static cmdline_parse_inst_t cmd_ptype_mapping_reset = {
 	.f = cmd_ptype_mapping_reset_parsed,
 	.data = NULL,
 	.help_str = "ptype mapping reset <port_id>",
@@ -15925,27 +15919,27 @@ struct cmd_ptype_mapping_update_result {
 };
 
 /* Common CLI fields for ptype mapping update*/
-cmdline_parse_token_string_t cmd_ptype_mapping_update_ptype =
+static cmdline_parse_token_string_t cmd_ptype_mapping_update_ptype =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 ptype, "ptype");
-cmdline_parse_token_string_t cmd_ptype_mapping_update_mapping =
+static cmdline_parse_token_string_t cmd_ptype_mapping_update_mapping =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 mapping, "mapping");
-cmdline_parse_token_string_t cmd_ptype_mapping_update_update =
+static cmdline_parse_token_string_t cmd_ptype_mapping_update_update =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 reset, "update");
-cmdline_parse_token_num_t cmd_ptype_mapping_update_port_id =
+static cmdline_parse_token_num_t cmd_ptype_mapping_update_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_num_t cmd_ptype_mapping_update_hw_ptype =
+static cmdline_parse_token_num_t cmd_ptype_mapping_update_hw_ptype =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 hw_ptype, RTE_UINT8);
-cmdline_parse_token_num_t cmd_ptype_mapping_update_sw_ptype =
+static cmdline_parse_token_num_t cmd_ptype_mapping_update_sw_ptype =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_ptype_mapping_update_result,
 		 sw_ptype, RTE_UINT32);
@@ -15990,7 +15984,7 @@ cmd_ptype_mapping_update_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_ptype_mapping_update = {
+static cmdline_parse_inst_t cmd_ptype_mapping_update = {
 	.f = cmd_ptype_mapping_update_parsed,
 	.data = NULL,
 	.help_str = "ptype mapping update <port_id> <hw_ptype> <sw_ptype>",
@@ -16012,9 +16006,9 @@ struct cmd_cmdfile_result {
 };
 
 /* Common CLI fields for file commands */
-cmdline_parse_token_string_t cmd_load_cmdfile =
+static cmdline_parse_token_string_t cmd_load_cmdfile =
 	TOKEN_STRING_INITIALIZER(struct cmd_cmdfile_result, load, "load");
-cmdline_parse_token_string_t cmd_load_cmdfile_filename =
+static cmdline_parse_token_string_t cmd_load_cmdfile_filename =
 	TOKEN_STRING_INITIALIZER(struct cmd_cmdfile_result, filename, NULL);
 
 static void
@@ -16028,7 +16022,7 @@ cmd_load_from_file_parsed(
 	cmdline_read_from_file(res->filename);
 }
 
-cmdline_parse_inst_t cmd_load_from_file = {
+static cmdline_parse_inst_t cmd_load_from_file = {
 	.f = cmd_load_from_file_parsed,
 	.data = NULL,
 	.help_str = "load <filename>",
@@ -16048,23 +16042,23 @@ struct cmd_rx_offload_get_capa_result {
 	cmdline_fixed_string_t capabilities;
 };
 
-cmdline_parse_token_string_t cmd_rx_offload_get_capa_show =
+static cmdline_parse_token_string_t cmd_rx_offload_get_capa_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_capa_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_rx_offload_get_capa_port =
+static cmdline_parse_token_string_t cmd_rx_offload_get_capa_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_capa_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_rx_offload_get_capa_port_id =
+static cmdline_parse_token_num_t cmd_rx_offload_get_capa_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_rx_offload_get_capa_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_rx_offload_get_capa_rx_offload =
+static cmdline_parse_token_string_t cmd_rx_offload_get_capa_rx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_capa_result,
 		 rx_offload, "rx_offload");
-cmdline_parse_token_string_t cmd_rx_offload_get_capa_capabilities =
+static cmdline_parse_token_string_t cmd_rx_offload_get_capa_capabilities =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_capa_result,
 		 capabilities, "capabilities");
@@ -16122,7 +16116,7 @@ cmd_rx_offload_get_capa_parsed(
 	printf("\n\n");
 }
 
-cmdline_parse_inst_t cmd_rx_offload_get_capa = {
+static cmdline_parse_inst_t cmd_rx_offload_get_capa = {
 	.f = cmd_rx_offload_get_capa_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rx_offload capabilities",
@@ -16145,23 +16139,23 @@ struct cmd_rx_offload_get_configuration_result {
 	cmdline_fixed_string_t configuration;
 };
 
-cmdline_parse_token_string_t cmd_rx_offload_get_configuration_show =
+static cmdline_parse_token_string_t cmd_rx_offload_get_configuration_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_configuration_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_rx_offload_get_configuration_port =
+static cmdline_parse_token_string_t cmd_rx_offload_get_configuration_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_configuration_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_rx_offload_get_configuration_port_id =
+static cmdline_parse_token_num_t cmd_rx_offload_get_configuration_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_rx_offload_get_configuration_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_rx_offload_get_configuration_rx_offload =
+static cmdline_parse_token_string_t cmd_rx_offload_get_configuration_rx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_configuration_result,
 		 rx_offload, "rx_offload");
-cmdline_parse_token_string_t cmd_rx_offload_get_configuration_configuration =
+static cmdline_parse_token_string_t cmd_rx_offload_get_configuration_configuration =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_rx_offload_get_configuration_result,
 		 configuration, "configuration");
@@ -16208,7 +16202,7 @@ cmd_rx_offload_get_configuration_parsed(
 	printf("\n");
 }
 
-cmdline_parse_inst_t cmd_rx_offload_get_configuration = {
+static cmdline_parse_inst_t cmd_rx_offload_get_configuration = {
 	.f = cmd_rx_offload_get_configuration_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rx_offload configuration",
@@ -16232,23 +16226,23 @@ struct cmd_config_per_port_rx_offload_result {
 	cmdline_fixed_string_t on_off;
 };
 
-cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_port =
+static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 port, "port");
-cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_config =
+static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_config =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 config, "config");
-cmdline_parse_token_num_t cmd_config_per_port_rx_offload_result_port_id =
+static cmdline_parse_token_num_t cmd_config_per_port_rx_offload_result_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_rx_offload =
+static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_rx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 rx_offload, "rx_offload");
-cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_offload =
+static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 offload, "vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#"
@@ -16256,7 +16250,7 @@ cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_offload =
 			   "header_split#vlan_filter#vlan_extend#jumbo_frame#"
 			   "scatter#buffer_split#timestamp#security#"
 			   "keep_crc#rss_hash");
-cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_on_off =
+static cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_rx_offload_result,
 		 on_off, "on#off");
@@ -16330,7 +16324,7 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(port_id, 1, 1);
 }
 
-cmdline_parse_inst_t cmd_config_per_port_rx_offload = {
+static cmdline_parse_inst_t cmd_config_per_port_rx_offload = {
 	.f = cmd_config_per_port_rx_offload_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> rx_offload vlan_strip|ipv4_cksum|"
@@ -16360,34 +16354,34 @@ struct cmd_config_per_queue_rx_offload_result {
 	cmdline_fixed_string_t on_off;
 };
 
-cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_port =
+static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_config_per_queue_rx_offload_result_port_id =
+static cmdline_parse_token_num_t cmd_config_per_queue_rx_offload_result_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_rxq =
+static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_rxq =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 rxq, "rxq");
-cmdline_parse_token_num_t cmd_config_per_queue_rx_offload_result_queue_id =
+static cmdline_parse_token_num_t cmd_config_per_queue_rx_offload_result_queue_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 queue_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_rxoffload =
+static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_rxoffload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 rx_offload, "rx_offload");
-cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_offload =
+static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 offload, "vlan_strip#ipv4_cksum#udp_cksum#tcp_cksum#tcp_lro#"
 			   "qinq_strip#outer_ipv4_cksum#macsec_strip#"
 			   "header_split#vlan_filter#vlan_extend#jumbo_frame#"
 			   "scatter#buffer_split#timestamp#security#keep_crc");
-cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_on_off =
+static cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_rx_offload_result,
 		 on_off, "on#off");
@@ -16437,7 +16431,7 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(port_id, 1, 1);
 }
 
-cmdline_parse_inst_t cmd_config_per_queue_rx_offload = {
+static cmdline_parse_inst_t cmd_config_per_queue_rx_offload = {
 	.f = cmd_config_per_queue_rx_offload_parsed,
 	.data = NULL,
 	.help_str = "port <port_id> rxq <queue_id> rx_offload "
@@ -16467,23 +16461,23 @@ struct cmd_tx_offload_get_capa_result {
 	cmdline_fixed_string_t capabilities;
 };
 
-cmdline_parse_token_string_t cmd_tx_offload_get_capa_show =
+static cmdline_parse_token_string_t cmd_tx_offload_get_capa_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_capa_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_tx_offload_get_capa_port =
+static cmdline_parse_token_string_t cmd_tx_offload_get_capa_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_capa_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_tx_offload_get_capa_port_id =
+static cmdline_parse_token_num_t cmd_tx_offload_get_capa_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_tx_offload_get_capa_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_tx_offload_get_capa_tx_offload =
+static cmdline_parse_token_string_t cmd_tx_offload_get_capa_tx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_capa_result,
 		 tx_offload, "tx_offload");
-cmdline_parse_token_string_t cmd_tx_offload_get_capa_capabilities =
+static cmdline_parse_token_string_t cmd_tx_offload_get_capa_capabilities =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_capa_result,
 		 capabilities, "capabilities");
@@ -16541,7 +16535,7 @@ cmd_tx_offload_get_capa_parsed(
 	printf("\n\n");
 }
 
-cmdline_parse_inst_t cmd_tx_offload_get_capa = {
+static cmdline_parse_inst_t cmd_tx_offload_get_capa = {
 	.f = cmd_tx_offload_get_capa_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> tx_offload capabilities",
@@ -16564,23 +16558,23 @@ struct cmd_tx_offload_get_configuration_result {
 	cmdline_fixed_string_t configuration;
 };
 
-cmdline_parse_token_string_t cmd_tx_offload_get_configuration_show =
+static cmdline_parse_token_string_t cmd_tx_offload_get_configuration_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_configuration_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_tx_offload_get_configuration_port =
+static cmdline_parse_token_string_t cmd_tx_offload_get_configuration_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_configuration_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_tx_offload_get_configuration_port_id =
+static cmdline_parse_token_num_t cmd_tx_offload_get_configuration_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_tx_offload_get_configuration_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_tx_offload_get_configuration_tx_offload =
+static cmdline_parse_token_string_t cmd_tx_offload_get_configuration_tx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_configuration_result,
 		 tx_offload, "tx_offload");
-cmdline_parse_token_string_t cmd_tx_offload_get_configuration_configuration =
+static cmdline_parse_token_string_t cmd_tx_offload_get_configuration_configuration =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_tx_offload_get_configuration_result,
 		 configuration, "configuration");
@@ -16627,7 +16621,7 @@ cmd_tx_offload_get_configuration_parsed(
 	printf("\n");
 }
 
-cmdline_parse_inst_t cmd_tx_offload_get_configuration = {
+static cmdline_parse_inst_t cmd_tx_offload_get_configuration = {
 	.f = cmd_tx_offload_get_configuration_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> tx_offload configuration",
@@ -16651,23 +16645,23 @@ struct cmd_config_per_port_tx_offload_result {
 	cmdline_fixed_string_t on_off;
 };
 
-cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_port =
+static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 port, "port");
-cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_config =
+static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_config =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 config, "config");
-cmdline_parse_token_num_t cmd_config_per_port_tx_offload_result_port_id =
+static cmdline_parse_token_num_t cmd_config_per_port_tx_offload_result_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_tx_offload =
+static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_tx_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 tx_offload, "tx_offload");
-cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_offload =
+static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 offload, "vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#"
@@ -16676,7 +16670,7 @@ cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_offload =
 			  "ipip_tnl_tso#geneve_tnl_tso#macsec_insert#"
 			  "mt_lockfree#multi_segs#mbuf_fast_free#security#"
 			  "send_on_timestamp");
-cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_on_off =
+static cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_port_tx_offload_result,
 		 on_off, "on#off");
@@ -16753,7 +16747,7 @@ cmd_config_per_port_tx_offload_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(port_id, 1, 1);
 }
 
-cmdline_parse_inst_t cmd_config_per_port_tx_offload = {
+static cmdline_parse_inst_t cmd_config_per_port_tx_offload = {
 	.f = cmd_config_per_port_tx_offload_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> tx_offload "
@@ -16785,27 +16779,27 @@ struct cmd_config_per_queue_tx_offload_result {
 	cmdline_fixed_string_t on_off;
 };
 
-cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_port =
+static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_config_per_queue_tx_offload_result_port_id =
+static cmdline_parse_token_num_t cmd_config_per_queue_tx_offload_result_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_txq =
+static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_txq =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 txq, "txq");
-cmdline_parse_token_num_t cmd_config_per_queue_tx_offload_result_queue_id =
+static cmdline_parse_token_num_t cmd_config_per_queue_tx_offload_result_queue_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 queue_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_txoffload =
+static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_txoffload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 tx_offload, "tx_offload");
-cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_offload =
+static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_offload =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 offload, "vlan_insert#ipv4_cksum#udp_cksum#tcp_cksum#"
@@ -16813,7 +16807,7 @@ cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_offload =
 			  "qinq_insert#vxlan_tnl_tso#gre_tnl_tso#"
 			  "ipip_tnl_tso#geneve_tnl_tso#macsec_insert#"
 			  "mt_lockfree#multi_segs#mbuf_fast_free#security");
-cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_on_off =
+static cmdline_parse_token_string_t cmd_config_per_queue_tx_offload_result_on_off =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_config_per_queue_tx_offload_result,
 		 on_off, "on#off");
@@ -16863,7 +16857,7 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result,
 	cmd_reconfig_device_queue(port_id, 1, 1);
 }
 
-cmdline_parse_inst_t cmd_config_per_queue_tx_offload = {
+static cmdline_parse_inst_t cmd_config_per_queue_tx_offload = {
 	.f = cmd_config_per_queue_tx_offload_parsed,
 	.data = NULL,
 	.help_str = "port <port_id> txq <queue_id> tx_offload "
@@ -16912,23 +16906,23 @@ cmd_config_tx_metadata_specific_parsed(void *parsed_result,
 	rte_flow_dynf_metadata_register();
 }
 
-cmdline_parse_token_string_t cmd_config_tx_metadata_specific_port =
+static cmdline_parse_token_string_t cmd_config_tx_metadata_specific_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_metadata_specific_result,
 			port, "port");
-cmdline_parse_token_string_t cmd_config_tx_metadata_specific_keyword =
+static cmdline_parse_token_string_t cmd_config_tx_metadata_specific_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_metadata_specific_result,
 			keyword, "config");
-cmdline_parse_token_num_t cmd_config_tx_metadata_specific_id =
+static cmdline_parse_token_num_t cmd_config_tx_metadata_specific_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_tx_metadata_specific_result,
 			port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_tx_metadata_specific_item =
+static cmdline_parse_token_string_t cmd_config_tx_metadata_specific_item =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_metadata_specific_result,
 			item, "tx_metadata");
-cmdline_parse_token_num_t cmd_config_tx_metadata_specific_value =
+static cmdline_parse_token_num_t cmd_config_tx_metadata_specific_value =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_tx_metadata_specific_result,
 			value, RTE_UINT32);
 
-cmdline_parse_inst_t cmd_config_tx_metadata_specific = {
+static cmdline_parse_inst_t cmd_config_tx_metadata_specific = {
 	.f = cmd_config_tx_metadata_specific_parsed,
 	.data = NULL,
 	.help_str = "port config <port_id> tx_metadata <value>",
@@ -16991,26 +16985,26 @@ cmd_config_dynf_specific_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_config_tx_dynf_specific_port =
+static cmdline_parse_token_string_t cmd_config_tx_dynf_specific_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			keyword, "port");
-cmdline_parse_token_string_t cmd_config_tx_dynf_specific_keyword =
+static cmdline_parse_token_string_t cmd_config_tx_dynf_specific_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			keyword, "config");
-cmdline_parse_token_num_t cmd_config_tx_dynf_specific_port_id =
+static cmdline_parse_token_num_t cmd_config_tx_dynf_specific_port_id =
 	TOKEN_NUM_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_config_tx_dynf_specific_item =
+static cmdline_parse_token_string_t cmd_config_tx_dynf_specific_item =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			item, "dynf");
-cmdline_parse_token_string_t cmd_config_tx_dynf_specific_name =
+static cmdline_parse_token_string_t cmd_config_tx_dynf_specific_name =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			name, NULL);
-cmdline_parse_token_string_t cmd_config_tx_dynf_specific_value =
+static cmdline_parse_token_string_t cmd_config_tx_dynf_specific_value =
 	TOKEN_STRING_INITIALIZER(struct cmd_config_tx_dynf_specific_result,
 			value, "set#clear");
 
-cmdline_parse_inst_t cmd_config_tx_dynf_specific = {
+static cmdline_parse_inst_t cmd_config_tx_dynf_specific = {
 	.f = cmd_config_dynf_specific_parsed,
 	.data = NULL,
 	.help_str = "port config <port id> dynf <name> set|clear",
@@ -17050,20 +17044,20 @@ cmd_show_tx_metadata_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_show_tx_metadata_show =
+static cmdline_parse_token_string_t cmd_show_tx_metadata_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_tx_metadata_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_show_tx_metadata_port =
+static cmdline_parse_token_string_t cmd_show_tx_metadata_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_tx_metadata_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_show_tx_metadata_pid =
+static cmdline_parse_token_num_t cmd_show_tx_metadata_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_tx_metadata_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_tx_metadata_keyword =
+static cmdline_parse_token_string_t cmd_show_tx_metadata_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_tx_metadata_result,
 			cmd_keyword, "tx_metadata");
 
-cmdline_parse_inst_t cmd_show_tx_metadata = {
+static cmdline_parse_inst_t cmd_show_tx_metadata = {
 	.f = cmd_show_tx_metadata_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> tx_metadata",
@@ -17127,23 +17121,23 @@ cmd_show_fec_capability_parsed(void *parsed_result,
 	free(speed_fec_capa);
 }
 
-cmdline_parse_token_string_t cmd_show_fec_capability_show =
+static cmdline_parse_token_string_t cmd_show_fec_capability_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_show_fec_capability_port =
+static cmdline_parse_token_string_t cmd_show_fec_capability_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_show_fec_capability_pid =
+static cmdline_parse_token_num_t cmd_show_fec_capability_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_fec_capability_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_fec_capability_fec =
+static cmdline_parse_token_string_t cmd_show_fec_capability_fec =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
 			cmd_fec, "fec");
-cmdline_parse_token_string_t cmd_show_fec_capability_keyword =
+static cmdline_parse_token_string_t cmd_show_fec_capability_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
 			cmd_keyword, "capabilities");
 
-cmdline_parse_inst_t cmd_show_capability = {
+static cmdline_parse_inst_t cmd_show_capability = {
 	.f = cmd_show_fec_capability_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> fec capabilities",
@@ -17209,20 +17203,20 @@ cmd_show_fec_mode_parsed(void *parsed_result,
 	printf("%s\n", buf);
 }
 
-cmdline_parse_token_string_t cmd_show_fec_mode_show =
+static cmdline_parse_token_string_t cmd_show_fec_mode_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_metadata_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_show_fec_mode_port =
+static cmdline_parse_token_string_t cmd_show_fec_mode_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_metadata_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_show_fec_mode_pid =
+static cmdline_parse_token_num_t cmd_show_fec_mode_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_fec_metadata_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_fec_mode_keyword =
+static cmdline_parse_token_string_t cmd_show_fec_mode_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_fec_metadata_result,
 			cmd_keyword, "fec_mode");
 
-cmdline_parse_inst_t cmd_show_fec_mode = {
+static cmdline_parse_inst_t cmd_show_fec_mode = {
 	.f = cmd_show_fec_mode_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> fec_mode",
@@ -17245,23 +17239,23 @@ struct cmd_set_port_fec_mode {
 };
 
 /* Common CLI fields for set fec mode */
-cmdline_parse_token_string_t cmd_set_port_fec_mode_set =
+static cmdline_parse_token_string_t cmd_set_port_fec_mode_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_fec_mode,
 		 set, "set");
-cmdline_parse_token_string_t cmd_set_port_fec_mode_port =
+static cmdline_parse_token_string_t cmd_set_port_fec_mode_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_fec_mode,
 		 port, "port");
-cmdline_parse_token_num_t cmd_set_port_fec_mode_port_id =
+static cmdline_parse_token_num_t cmd_set_port_fec_mode_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_port_fec_mode,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_port_fec_mode_str =
+static cmdline_parse_token_string_t cmd_set_port_fec_mode_str =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_fec_mode,
 		 fec_mode, "fec_mode");
-cmdline_parse_token_string_t cmd_set_port_fec_mode_value =
+static cmdline_parse_token_string_t cmd_set_port_fec_mode_value =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_fec_mode,
 		 fec_value, NULL);
@@ -17294,7 +17288,7 @@ cmd_set_port_fec_mode_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_set_fec_mode = {
+static cmdline_parse_inst_t cmd_set_fec_mode = {
 	.f = cmd_set_port_fec_mode_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> fec_mode auto|off|rs|baser",
@@ -17319,19 +17313,19 @@ struct cmd_show_port_supported_ptypes_result {
 };
 
 /* Common CLI fields for show port ptypes */
-cmdline_parse_token_string_t cmd_show_port_supported_ptypes_show =
+static cmdline_parse_token_string_t cmd_show_port_supported_ptypes_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_supported_ptypes_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_show_port_supported_ptypes_port =
+static cmdline_parse_token_string_t cmd_show_port_supported_ptypes_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_supported_ptypes_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_show_port_supported_ptypes_port_id =
+static cmdline_parse_token_num_t cmd_show_port_supported_ptypes_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_port_supported_ptypes_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_port_supported_ptypes_ptypes =
+static cmdline_parse_token_string_t cmd_show_port_supported_ptypes_ptypes =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_supported_ptypes_result,
 		 ptypes, "ptypes");
@@ -17403,7 +17397,7 @@ cmd_show_port_supported_ptypes_parsed(
 	}
 }
 
-cmdline_parse_inst_t cmd_show_port_supported_ptypes = {
+static cmdline_parse_inst_t cmd_show_port_supported_ptypes = {
 	.f = cmd_show_port_supported_ptypes_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> ptypes",
@@ -17474,31 +17468,31 @@ cmd_show_rx_tx_desc_status_parsed(void *parsed_result,
 	}
 }
 
-cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_show =
+static cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_port =
+static cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_pid =
+static cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_keyword =
+static cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_keyword, "rxq#txq");
-cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_qid =
+static cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_qid =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_desc =
+static cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_desc =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_desc, "desc");
-cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_did =
+static cmdline_parse_token_num_t cmd_show_rx_tx_desc_status_did =
 	TOKEN_NUM_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_did, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_status =
+static cmdline_parse_token_string_t cmd_show_rx_tx_desc_status_status =
 	TOKEN_STRING_INITIALIZER(struct cmd_show_rx_tx_desc_status_result,
 			cmd_status, "status");
-cmdline_parse_inst_t cmd_show_rx_tx_desc_status = {
+static cmdline_parse_inst_t cmd_show_rx_tx_desc_status = {
 	.f = cmd_show_rx_tx_desc_status_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rxq|txq <queue_id> desc <desc_id> "
@@ -17549,39 +17543,39 @@ cmd_show_rx_queue_desc_used_count_parsed(void *parsed_result,
 	printf("Used desc count = %d\n", rc);
 }
 
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_show =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_show, "show");
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_port =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_port, "port");
-cmdline_parse_token_num_t cmd_show_rx_queue_desc_used_count_pid =
+static cmdline_parse_token_num_t cmd_show_rx_queue_desc_used_count_pid =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_rxq =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_rxq =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_rxq, "rxq");
-cmdline_parse_token_num_t cmd_show_rx_queue_desc_used_count_qid =
+static cmdline_parse_token_num_t cmd_show_rx_queue_desc_used_count_qid =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_qid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_desc =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_desc =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_count, "desc");
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_used =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_used =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_count, "used");
-cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_count =
+static cmdline_parse_token_string_t cmd_show_rx_queue_desc_used_count_count =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_rx_queue_desc_used_count_result,
 		 cmd_count, "count");
-cmdline_parse_inst_t cmd_show_rx_queue_desc_used_count = {
+static cmdline_parse_inst_t cmd_show_rx_queue_desc_used_count = {
 	.f = cmd_show_rx_queue_desc_used_count_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> rxq <queue_id> desc used count",
@@ -17608,23 +17602,23 @@ struct cmd_set_port_ptypes_result {
 };
 
 /* Common CLI fields for set port ptypes */
-cmdline_parse_token_string_t cmd_set_port_ptypes_set =
+static cmdline_parse_token_string_t cmd_set_port_ptypes_set =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_ptypes_result,
 		 set, "set");
-cmdline_parse_token_string_t cmd_set_port_ptypes_port =
+static cmdline_parse_token_string_t cmd_set_port_ptypes_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_ptypes_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_set_port_ptypes_port_id =
+static cmdline_parse_token_num_t cmd_set_port_ptypes_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_port_ptypes_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_set_port_ptypes_mask_str =
+static cmdline_parse_token_string_t cmd_set_port_ptypes_mask_str =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_set_port_ptypes_result,
 		 ptype_mask, "ptype_mask");
-cmdline_parse_token_num_t cmd_set_port_ptypes_mask_u32 =
+static cmdline_parse_token_num_t cmd_set_port_ptypes_mask_u32 =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_set_port_ptypes_result,
 		 mask, RTE_UINT32);
@@ -17668,7 +17662,7 @@ cmd_set_port_ptypes_parsed(
 	clear_ptypes = false;
 }
 
-cmdline_parse_inst_t cmd_set_port_ptypes = {
+static cmdline_parse_inst_t cmd_set_port_ptypes = {
 	.f = cmd_set_port_ptypes_parsed,
 	.data = NULL,
 	.help_str = "set port <port_id> ptype_mask <mask>",
@@ -17706,20 +17700,20 @@ cmd_showport_macs_parsed(void *parsed_result,
 		show_mcast_macs(res->cmd_pid);
 }
 
-cmdline_parse_token_string_t cmd_showport_macs_show =
+static cmdline_parse_token_string_t cmd_showport_macs_show =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_macs_result,
 			cmd_show, "show");
-cmdline_parse_token_string_t cmd_showport_macs_port =
+static cmdline_parse_token_string_t cmd_showport_macs_port =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_macs_result,
 			cmd_port, "port");
-cmdline_parse_token_num_t cmd_showport_macs_pid =
+static cmdline_parse_token_num_t cmd_showport_macs_pid =
 	TOKEN_NUM_INITIALIZER(struct cmd_showport_macs_result,
 			cmd_pid, RTE_UINT16);
-cmdline_parse_token_string_t cmd_showport_macs_keyword =
+static cmdline_parse_token_string_t cmd_showport_macs_keyword =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_macs_result,
 			cmd_keyword, "macs#mcast_macs");
 
-cmdline_parse_inst_t cmd_showport_macs = {
+static cmdline_parse_inst_t cmd_showport_macs = {
 	.f = cmd_showport_macs_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> macs|mcast_macs",
@@ -17742,27 +17736,27 @@ struct cmd_show_port_flow_transfer_proxy_result {
 	cmdline_fixed_string_t proxy;
 };
 
-cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_show =
+static cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_show =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 show, "show");
-cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_port =
+static cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_port =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 port, "port");
-cmdline_parse_token_num_t cmd_show_port_flow_transfer_proxy_port_id =
+static cmdline_parse_token_num_t cmd_show_port_flow_transfer_proxy_port_id =
 	TOKEN_NUM_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 port_id, RTE_UINT16);
-cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_flow =
+static cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_flow =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 flow, "flow");
-cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_transfer =
+static cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_transfer =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 transfer, "transfer");
-cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_proxy =
+static cmdline_parse_token_string_t cmd_show_port_flow_transfer_proxy_proxy =
 	TOKEN_STRING_INITIALIZER
 		(struct cmd_show_port_flow_transfer_proxy_result,
 		 proxy, "proxy");
@@ -17788,7 +17782,7 @@ cmd_show_port_flow_transfer_proxy_parsed(void *parsed_result,
 	printf("Transfer proxy port ID: %u\n\n", proxy_port_id);
 }
 
-cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = {
+static cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = {
 	.f = cmd_show_port_flow_transfer_proxy_parsed,
 	.data = NULL,
 	.help_str = "show port <port_id> flow transfer proxy",
@@ -17806,7 +17800,7 @@ cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = {
 /* ******************************************************************************** */
 
 /* list of instructions */
-cmdline_parse_ctx_t main_ctx[] = {
+static cmdline_parse_ctx_t main_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_help_brief,
 	(cmdline_parse_inst_t *)&cmd_help_long,
 	(cmdline_parse_inst_t *)&cmd_quit,
-- 
2.36.1


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

* [RFC PATCH v2 2/5] app/testpmd: register driver specific commands
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 1/5] app/testpmd: mark cmdline symbols as static David Marchand
@ 2022-05-18 19:46   ` David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 3/5] net/bonding: move testpmd commands David Marchand
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-18 19:46 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Bruce Richardson

Introduce a testpmd API so that drivers can register specific commands.

A driver can list some files to compile with testpmd, by setting them
in the testpmd_sources (driver local) meson variable.
drivers/meson.build then takes care of appending this to a global meson
variable, and adding the driver to testpmd dependency.

Note: testpmd.h is fixed to that it is self sufficient when being
included.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since RFC v1:
- fixed registering issue,

---
 app/test-pmd/cmdline.c   | 83 ++++++++++++++++++++++++++++++++++++----
 app/test-pmd/meson.build |  5 +++
 app/test-pmd/testpmd.c   |  4 ++
 app/test-pmd/testpmd.h   | 16 ++++++++
 drivers/meson.build      |  5 +++
 meson.build              |  2 +
 6 files changed, 108 insertions(+), 7 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 498fe2c2b7..9de7ecdab7 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -69,6 +69,9 @@
 #include "bpf_cmd.h"
 
 static struct cmdline *testpmd_cl;
+static cmdline_parse_ctx_t *main_ctx;
+static TAILQ_HEAD(, testpmd_cmdline_parser) cmdline_parsers =
+	TAILQ_HEAD_INITIALIZER(cmdline_parsers);
 
 static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue);
 
@@ -94,6 +97,7 @@ static void cmd_help_brief_parsed(__rte_unused void *parsed_result,
 		"    help filters                    : Filters configuration help.\n"
 		"    help traffic_management         : Traffic Management commands.\n"
 		"    help devices                    : Device related cmds.\n"
+		"    help drivers                    : Driver specific cmds.\n"
 		"    help all                        : All of the above sections.\n\n"
 	);
 
@@ -1177,6 +1181,21 @@ static void cmd_help_long_parsed(void *parsed_result,
 		);
 	}
 
+	if (show_all || !strcmp(res->section, "drivers")) {
+		struct testpmd_cmdline_parser *parser;
+		unsigned int i;
+
+		cmdline_printf(
+			cl,
+			"\n"
+			"Driver specific:\n"
+			"----------------\n"
+		);
+		TAILQ_FOREACH(parser, &cmdline_parsers, next) {
+			for (i = 0; parser->help[i] != NULL; i++)
+				cmdline_printf(cl, "%s\n", parser->help[i]);
+		}
+	}
 }
 
 static cmdline_parse_token_string_t cmd_help_long_help =
@@ -1184,14 +1203,14 @@ static cmdline_parse_token_string_t cmd_help_long_help =
 
 static cmdline_parse_token_string_t cmd_help_long_section =
 	TOKEN_STRING_INITIALIZER(struct cmd_help_long_result, section,
-			"all#control#display#config#"
-			"ports#registers#filters#traffic_management#devices");
+		"all#control#display#config#ports#registers#"
+		"filters#traffic_management#devices#drivers");
 
 static cmdline_parse_inst_t cmd_help_long = {
 	.f = cmd_help_long_parsed,
 	.data = NULL,
 	.help_str = "help all|control|display|config|ports|register|"
-		"filters|traffic_management|devices: "
+		"filters|traffic_management|devices|drivers: "
 		"Show help",
 	.tokens = {
 		(void *)&cmd_help_long_help,
@@ -17800,7 +17819,7 @@ static cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = {
 /* ******************************************************************************** */
 
 /* list of instructions */
-static cmdline_parse_ctx_t main_ctx[] = {
+static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_help_brief,
 	(cmdline_parse_inst_t *)&cmd_help_long,
 	(cmdline_parse_inst_t *)&cmd_quit,
@@ -18086,6 +18105,59 @@ static cmdline_parse_ctx_t main_ctx[] = {
 	NULL,
 };
 
+void
+testpmd_add_commands(struct testpmd_cmdline_parser *parser)
+{
+	TAILQ_INSERT_TAIL(&cmdline_parsers, parser, next);
+}
+
+int
+init_cmdline(void)
+{
+	struct testpmd_cmdline_parser *parser;
+	cmdline_parse_ctx_t *ctx;
+	unsigned int count = 0;
+	unsigned int i;
+
+	/* initialize non-constant commands */
+	cmd_set_fwd_mode_init();
+	cmd_set_fwd_retry_mode_init();
+
+	main_ctx = NULL;
+	for (i = 0; builtin_ctx[i] != NULL; i++) {
+		ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
+		if (ctx == NULL)
+			goto err;
+		main_ctx = ctx;
+		main_ctx[count + i] = builtin_ctx[i];
+	}
+	count += i;
+
+	TAILQ_FOREACH(parser, &cmdline_parsers, next) {
+		for (i = 0; parser->ctx[i] != NULL; i++) {
+			ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
+			if (ctx == NULL)
+				goto err;
+			main_ctx = ctx;
+			main_ctx[count + i] = builtin_ctx[i];
+		}
+		count += i;
+	}
+
+	/* cmdline expects a NULL terminated array */
+	ctx = realloc(main_ctx, (count + 1) * sizeof(*ctx));
+	if (ctx == NULL)
+		goto err;
+	main_ctx = ctx;
+	main_ctx[count] = NULL;
+	count += 1;
+
+	return 0;
+err:
+	free(main_ctx);
+	return -1;
+}
+
 /* read cmdline commands from file */
 void
 cmdline_read_from_file(const char *filename)
@@ -18113,9 +18185,6 @@ void
 prompt(void)
 {
 	int ret;
-	/* initialize non-constant commands */
-	cmd_set_fwd_mode_init();
-	cmd_set_fwd_retry_mode_init();
 
 	testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> ");
 	if (testpmd_cl == NULL)
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 43130c8856..46a7511e9a 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -73,3 +73,8 @@ endif
 if dpdk_conf.has('RTE_NET_DPAA')
     deps += ['bus_dpaa', 'mempool_dpaa', 'net_dpaa']
 endif
+
+# Driver specific sources include some testpmd headers.
+includes = include_directories('.')
+sources += testpmd_drivers_sources
+deps += testpmd_drivers_deps
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 79bb23264b..93ec930b15 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -4275,6 +4275,10 @@ main(int argc, char** argv)
 	}
 #endif
 #ifdef RTE_LIB_CMDLINE
+	if (init_cmdline() != 0)
+		rte_exit(EXIT_FAILURE,
+			"Could not initialise cmdline context.\n");
+
 	if (strlen(cmdline_filename) != 0)
 		cmdline_read_from_file(cmdline_filename);
 
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 31f766c965..b7f926cd38 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -16,7 +16,13 @@
 #include <rte_gso.h>
 #endif
 #include <rte_os_shim.h>
+#include <rte_ethdev.h>
+#include <rte_flow.h>
+#include <rte_mbuf_dyn.h>
+
 #include <cmdline.h>
+#include <cmdline_parse.h>
+
 #include <sys/queue.h>
 #ifdef RTE_HAS_JANSSON
 #include <jansson.h>
@@ -866,6 +872,7 @@ unsigned int parse_item_list(const char *str, const char *item_name,
 			unsigned int *parsed_items, int check_unique_values);
 void launch_args_parse(int argc, char** argv);
 void cmdline_read_from_file(const char *filename);
+int init_cmdline(void);
 void prompt(void);
 void prompt_exit(void);
 void nic_stats_display(portid_t port_id);
@@ -1169,6 +1176,15 @@ extern int flow_parse(const char *src, void *result, unsigned int size,
 		      struct rte_flow_item **pattern,
 		      struct rte_flow_action **actions);
 
+/* For registering commands out of testpmd sources. */
+struct testpmd_cmdline_parser {
+	TAILQ_ENTRY(testpmd_cmdline_parser) next;
+	cmdline_parse_ctx_t *ctx;
+	const char *help[];
+};
+
+extern void testpmd_add_commands(struct testpmd_cmdline_parser *parser);
+
 /*
  * Work-around of a compilation error with ICC on invocations of the
  * rte_be_to_cpu_16() function.
diff --git a/drivers/meson.build b/drivers/meson.build
index 1d8123b00c..4daa2658b7 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -102,6 +102,7 @@ foreach subpath:subdirs
         # static builds.
         ext_deps = []
         pkgconfig_extra_libs = []
+        testpmd_sources = []
 
         if not enable_drivers.contains(drv_path)
             build = false
@@ -246,6 +247,10 @@ foreach subpath:subdirs
         set_variable('shared_@0@'.format(lib_name), shared_dep)
         set_variable('static_@0@'.format(lib_name), static_dep)
         dependency_name = ''.join(lib_name.split('rte_'))
+        if testpmd_sources.length() != 0
+            testpmd_drivers_sources += testpmd_sources
+            testpmd_drivers_deps += dependency_name
+        endif
         if developer_mode
             message('drivers/@0@: Defining dependency "@1@"'.format(
                     drv_path, dependency_name))
diff --git a/meson.build b/meson.build
index 937f6110c0..5561171617 100644
--- a/meson.build
+++ b/meson.build
@@ -42,6 +42,8 @@ dpdk_drivers = []
 dpdk_extra_ldflags = []
 dpdk_libs_disabled = []
 dpdk_drvs_disabled = []
+testpmd_drivers_sources = []
+testpmd_drivers_deps = []
 abi_version_file = files('ABI_VERSION')
 
 if host_machine.cpu_family().startswith('x86')
-- 
2.36.1


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

* [RFC PATCH v2 3/5] net/bonding: move testpmd commands
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 1/5] app/testpmd: mark cmdline symbols as static David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 2/5] app/testpmd: register driver specific commands David Marchand
@ 2022-05-18 19:46   ` David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 4/5] net/i40e: " David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 5/5] net/ixgbe: " David Marchand
  4 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-18 19:46 UTC (permalink / raw)
  To: dev
  Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Chas Williams,
	Min Hu (Connor)

Move related specific testpmd commands into this driver directory.
While at it, fix checkpatch warnings.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 app/test-pmd/cmdline.c                     | 1035 -------------------
 app/test-pmd/meson.build                   |    3 -
 drivers/net/bonding/meson.build            |    1 +
 drivers/net/bonding/rte_eth_bond_testpmd.c | 1037 ++++++++++++++++++++
 4 files changed, 1038 insertions(+), 1038 deletions(-)
 create mode 100644 drivers/net/bonding/rte_eth_bond_testpmd.c

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 9de7ecdab7..58bdf206d7 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -47,10 +47,6 @@
 #include <cmdline_parse_etheraddr.h>
 #include <cmdline_socket.h>
 #include <cmdline.h>
-#ifdef RTE_NET_BOND
-#include <rte_eth_bond.h>
-#include <rte_eth_bond_8023ad.h>
-#endif
 #if defined RTE_BUS_DPAA && defined RTE_NET_DPAA
 #include <rte_pmd_dpaa.h>
 #endif
@@ -614,44 +610,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"   Show the bypass configuration for a bypass enabled NIC"
 			" using the lowest port on the NIC.\n\n"
 
-#ifdef RTE_NET_BOND
-			"create bonded device (mode) (socket)\n"
-			"	Create a new bonded device with specific bonding mode and socket.\n\n"
-
-			"add bonding slave (slave_id) (port_id)\n"
-			"	Add a slave device to a bonded device.\n\n"
-
-			"remove bonding slave (slave_id) (port_id)\n"
-			"	Remove a slave device from a bonded device.\n\n"
-
-			"set bonding mode (value) (port_id)\n"
-			"	Set the bonding mode on a bonded device.\n\n"
-
-			"set bonding primary (slave_id) (port_id)\n"
-			"	Set the primary slave for a bonded device.\n\n"
-
-			"show bonding config (port_id)\n"
-			"	Show the bonding config for port_id.\n\n"
-
-			"show bonding lacp info (port_id)\n"
-			"	Show the bonding lacp information for port_id.\n\n"
-
-			"set bonding mac_addr (port_id) (address)\n"
-			"	Set the MAC address of a bonded device.\n\n"
-
-			"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)"
-			"	Set Aggregation mode for IEEE802.3AD (mode 4)"
-
-			"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
-			"	Set the transmit balance policy for bonded device running in balance mode.\n\n"
-
-			"set bonding mon_period (port_id) (value)\n"
-			"	Set the bonding link status monitoring polling period in ms.\n\n"
-
-			"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
-			"	Enable/disable dedicated queues for LACP control traffic.\n\n"
-
-#endif
 			"set link-up port (port_id)\n"
 			"	Set link up for a port.\n\n"
 
@@ -5921,985 +5879,6 @@ static cmdline_parse_inst_t cmd_show_bypass_config = {
 	},
 };
 
-#ifdef RTE_NET_BOND
-/* *** SET BONDING MODE *** */
-struct cmd_set_bonding_mode_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mode;
-	uint8_t value;
-	portid_t port_id;
-};
-
-static void cmd_set_bonding_mode_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_mode_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	struct rte_port *port = &ports[port_id];
-
-	/*
-	 * Bonding mode changed means resources of device changed, like whether
-	 * started rte timer or not. Device should be restarted when resources
-	 * of device changed.
-	 */
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr,
-			"\t Error: Can't set bonding mode when port %d is not stopped\n",
-			port_id);
-		return;
-	}
-
-	/* Set the bonding mode for the relevant port. */
-	if (0 != rte_eth_bond_mode_set(port_id, res->value))
-		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
-			port_id);
-}
-
-static cmdline_parse_token_string_t cmd_setbonding_mode_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		set, "set");
-static cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_setbonding_mode_mode =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
-		mode, "mode");
-static cmdline_parse_token_num_t cmd_setbonding_mode_value =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
-		value, RTE_UINT8);
-static cmdline_parse_token_num_t cmd_setbonding_mode_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
-		port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_set_bonding_mode = {
-		.f = cmd_set_bonding_mode_parsed,
-		.help_str = "set bonding mode <mode_value> <port_id>: "
-			"Set the bonding mode for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *) &cmd_setbonding_mode_set,
-				(void *) &cmd_setbonding_mode_bonding,
-				(void *) &cmd_setbonding_mode_mode,
-				(void *) &cmd_setbonding_mode_value,
-				(void *) &cmd_setbonding_mode_port,
-				NULL
-		}
-};
-
-/* *** SET BONDING SLOW_QUEUE SW/HW *** */
-struct cmd_set_bonding_lacp_dedicated_queues_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t lacp;
-	cmdline_fixed_string_t dedicated_queues;
-	portid_t port_id;
-	cmdline_fixed_string_t mode;
-};
-
-static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	struct rte_port *port;
-
-	port = &ports[port_id];
-
-	/** Check if the port is not started **/
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr, "Please stop port %d first\n", port_id);
-		return;
-	}
-
-	if (!strcmp(res->mode, "enable")) {
-		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
-			printf("Dedicate queues for LACP control packets"
-					" enabled\n");
-		else
-			printf("Enabling dedicate queues for LACP control "
-					"packets on port %d failed\n", port_id);
-	} else if (!strcmp(res->mode, "disable")) {
-		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
-			printf("Dedicated queues for LACP control packets "
-					"disabled\n");
-		else
-			printf("Disabling dedicated queues for LACP control "
-					"traffic on port %d failed\n", port_id);
-	}
-}
-
-static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		set, "set");
-static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		lacp, "lacp");
-static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		dedicated_queues, "dedicated_queues");
-static cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
-		mode, "enable#disable");
-
-static cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
-		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
-		.help_str = "set bonding lacp dedicated_queues <port_id> "
-			"enable|disable: "
-			"Enable/disable dedicated queues for LACP control traffic for port_id",
-		.data = NULL,
-		.tokens = {
-			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
-			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
-			NULL
-		}
-};
-
-/* *** SET BALANCE XMIT POLICY *** */
-struct cmd_set_bonding_balance_xmit_policy_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t balance_xmit_policy;
-	portid_t port_id;
-	cmdline_fixed_string_t policy;
-};
-
-static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
-	portid_t port_id = res->port_id;
-	uint8_t policy;
-
-	if (!strcmp(res->policy, "l2")) {
-		policy = BALANCE_XMIT_POLICY_LAYER2;
-	} else if (!strcmp(res->policy, "l23")) {
-		policy = BALANCE_XMIT_POLICY_LAYER23;
-	} else if (!strcmp(res->policy, "l34")) {
-		policy = BALANCE_XMIT_POLICY_LAYER34;
-	} else {
-		fprintf(stderr, "\t Invalid xmit policy selection");
-		return;
-	}
-
-	/* Set the bonding mode for the relevant port. */
-	if (0 != rte_eth_bond_xmit_policy_set(port_id, policy)) {
-		fprintf(stderr,
-			"\t Failed to set bonding balance xmit policy for port = %d.\n",
-			port_id);
-	}
-}
-
-static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		set, "set");
-static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		balance_xmit_policy, "balance_xmit_policy");
-static cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
-		policy, "l2#l23#l34");
-
-static cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
-		.f = cmd_set_bonding_balance_xmit_policy_parsed,
-		.help_str = "set bonding balance_xmit_policy <port_id> "
-			"l2|l23|l34: "
-			"Set the bonding balance_xmit_policy for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_setbonding_balance_xmit_policy_set,
-				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
-				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
-				(void *)&cmd_setbonding_balance_xmit_policy_port,
-				(void *)&cmd_setbonding_balance_xmit_policy_policy,
-				NULL
-		}
-};
-
-/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
-struct cmd_show_bonding_lacp_info_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t lacp;
-	cmdline_fixed_string_t info;
-	portid_t port_id;
-};
-
-static void port_param_show(struct port_params *params)
-{
-	char buf[RTE_ETHER_ADDR_FMT_SIZE];
-
-	printf("\t\tsystem priority: %u\n", params->system_priority);
-	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
-	printf("\t\tsystem mac address: %s\n", buf);
-	printf("\t\tport key: %u\n", params->key);
-	printf("\t\tport priority: %u\n", params->port_priority);
-	printf("\t\tport number: %u\n", params->port_number);
-}
-
-static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
-{
-	char a_state[256] = { 0 };
-	char p_state[256] = { 0 };
-	int a_len = 0;
-	int p_len = 0;
-	uint32_t i;
-
-	static const char * const state[] = {
-		"ACTIVE",
-		"TIMEOUT",
-		"AGGREGATION",
-		"SYNCHRONIZATION",
-		"COLLECTING",
-		"DISTRIBUTING",
-		"DEFAULTED",
-		"EXPIRED"
-	};
-	static const char * const selection[] = {
-		"UNSELECTED",
-		"STANDBY",
-		"SELECTED"
-	};
-
-	for (i = 0; i < RTE_DIM(state); i++) {
-		if ((info->actor_state >> i) & 1)
-			a_len += snprintf(&a_state[a_len],
-						RTE_DIM(a_state) - a_len, "%s ",
-						state[i]);
-
-		if ((info->partner_state >> i) & 1)
-			p_len += snprintf(&p_state[p_len],
-						RTE_DIM(p_state) - p_len, "%s ",
-						state[i]);
-	}
-	printf("\tAggregator port id: %u\n", info->agg_port_id);
-	printf("\tselection: %s\n", selection[info->selected]);
-	printf("\tActor detail info:\n");
-	port_param_show(&info->actor);
-	printf("\t\tport state: %s\n", a_state);
-	printf("\tPartner detail info:\n");
-	port_param_show(&info->partner);
-	printf("\t\tport state: %s\n", p_state);
-	printf("\n");
-}
-
-static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
-{
-	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
-	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
-	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
-	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
-	printf("\taggregate wait timeout: %u ms\n",
-			conf->aggregate_wait_timeout_ms);
-	printf("\ttx period: %u ms\n", conf->tx_period_ms);
-	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
-	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
-	switch (conf->agg_selection) {
-	case AGG_BANDWIDTH:
-		printf("\taggregation mode: bandwidth\n");
-		break;
-	case AGG_STABLE:
-		printf("\taggregation mode: stable\n");
-		break;
-	case AGG_COUNT:
-		printf("\taggregation mode: count\n");
-		break;
-	default:
-		printf("\taggregation mode: invalid\n");
-		break;
-	}
-
-	printf("\n");
-}
-
-static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
-	struct rte_eth_bond_8023ad_slave_info slave_info;
-	struct rte_eth_bond_8023ad_conf port_conf;
-	portid_t slaves[RTE_MAX_ETHPORTS];
-	portid_t port_id = res->port_id;
-	int num_active_slaves;
-	int bonding_mode;
-	int i;
-	int ret;
-
-	bonding_mode = rte_eth_bond_mode_get(port_id);
-	if (bonding_mode != BONDING_MODE_8023AD) {
-		fprintf(stderr, "\tBonding mode is not mode 4\n");
-		return;
-	}
-
-	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
-			RTE_MAX_ETHPORTS);
-	if (num_active_slaves < 0) {
-		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
-				port_id);
-		return;
-	}
-	if (num_active_slaves == 0)
-		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
-			port_id);
-
-	printf("\tIEEE802.3 port: %u\n", port_id);
-	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
-	if (ret) {
-		fprintf(stderr, "\tGet bonded device %u info failed\n",
-			port_id);
-		return;
-	}
-	lacp_conf_show(&port_conf);
-
-	for (i = 0; i < num_active_slaves; i++) {
-		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
-				&slave_info);
-		if (ret) {
-			fprintf(stderr, "\tGet slave device %u info failed\n",
-				slaves[i]);
-			return;
-		}
-		printf("\tSlave Port: %u\n", slaves[i]);
-		lacp_slave_info_show(&slave_info);
-	}
-}
-
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		show, "show");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		bonding, "lacp");
-static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		info, "info");
-static cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
-TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
-		port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
-		.f = cmd_show_bonding_lacp_info_parsed,
-		.help_str = "show bonding lacp info <port_id> : "
-			"Show bonding IEEE802.3 information for port_id",
-		.data = NULL,
-		.tokens = {
-			(void *)&cmd_show_bonding_lacp_info_show,
-			(void *)&cmd_show_bonding_lacp_info_bonding,
-			(void *)&cmd_show_bonding_lacp_info_lacp,
-			(void *)&cmd_show_bonding_lacp_info_info,
-			(void *)&cmd_show_bonding_lacp_info_port_id,
-			NULL
-		}
-};
-
-/* *** SHOW NIC BONDING CONFIGURATION *** */
-struct cmd_show_bonding_config_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t config;
-	portid_t port_id;
-};
-
-static void cmd_show_bonding_config_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_show_bonding_config_result *res = parsed_result;
-	int bonding_mode, agg_mode;
-	portid_t slaves[RTE_MAX_ETHPORTS];
-	int num_slaves, num_active_slaves;
-	int primary_id;
-	int i;
-	portid_t port_id = res->port_id;
-
-	/* Display the bonding mode.*/
-	bonding_mode = rte_eth_bond_mode_get(port_id);
-	if (bonding_mode < 0) {
-		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
-			port_id);
-		return;
-	} else
-		printf("\tBonding mode: %d\n", bonding_mode);
-
-	if (bonding_mode == BONDING_MODE_BALANCE ||
-		bonding_mode == BONDING_MODE_8023AD) {
-		int balance_xmit_policy;
-
-		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
-		if (balance_xmit_policy < 0) {
-			fprintf(stderr,
-				"\tFailed to get balance xmit policy for port = %d\n",
-				port_id);
-			return;
-		} else {
-			printf("\tBalance Xmit Policy: ");
-
-			switch (balance_xmit_policy) {
-			case BALANCE_XMIT_POLICY_LAYER2:
-				printf("BALANCE_XMIT_POLICY_LAYER2");
-				break;
-			case BALANCE_XMIT_POLICY_LAYER23:
-				printf("BALANCE_XMIT_POLICY_LAYER23");
-				break;
-			case BALANCE_XMIT_POLICY_LAYER34:
-				printf("BALANCE_XMIT_POLICY_LAYER34");
-				break;
-			}
-			printf("\n");
-		}
-	}
-
-	if (bonding_mode == BONDING_MODE_8023AD) {
-		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
-		printf("\tIEEE802.3AD Aggregator Mode: ");
-		switch (agg_mode) {
-		case AGG_BANDWIDTH:
-			printf("bandwidth");
-			break;
-		case AGG_STABLE:
-			printf("stable");
-			break;
-		case AGG_COUNT:
-			printf("count");
-			break;
-		}
-		printf("\n");
-	}
-
-	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
-
-	if (num_slaves < 0) {
-		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
-			port_id);
-		return;
-	}
-	if (num_slaves > 0) {
-		printf("\tSlaves (%d): [", num_slaves);
-		for (i = 0; i < num_slaves - 1; i++)
-			printf("%d ", slaves[i]);
-
-		printf("%d]\n", slaves[num_slaves - 1]);
-	} else {
-		printf("\tSlaves: []\n");
-
-	}
-
-	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
-			RTE_MAX_ETHPORTS);
-
-	if (num_active_slaves < 0) {
-		fprintf(stderr,
-			"\tFailed to get active slave list for port = %d\n",
-			port_id);
-		return;
-	}
-	if (num_active_slaves > 0) {
-		printf("\tActive Slaves (%d): [", num_active_slaves);
-		for (i = 0; i < num_active_slaves - 1; i++)
-			printf("%d ", slaves[i]);
-
-		printf("%d]\n", slaves[num_active_slaves - 1]);
-
-	} else {
-		printf("\tActive Slaves: []\n");
-
-	}
-
-	primary_id = rte_eth_bond_primary_get(port_id);
-	if (primary_id < 0) {
-		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
-			port_id);
-		return;
-	} else
-		printf("\tPrimary: [%d]\n", primary_id);
-
-}
-
-static cmdline_parse_token_string_t cmd_showbonding_config_show =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		show, "show");
-static cmdline_parse_token_string_t cmd_showbonding_config_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_showbonding_config_config =
-TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
-		config, "config");
-static cmdline_parse_token_num_t cmd_showbonding_config_port =
-TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
-		port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_show_bonding_config = {
-		.f = cmd_show_bonding_config_parsed,
-		.help_str = "show bonding config <port_id>: "
-			"Show the bonding config for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_showbonding_config_show,
-				(void *)&cmd_showbonding_config_bonding,
-				(void *)&cmd_showbonding_config_config,
-				(void *)&cmd_showbonding_config_port,
-				NULL
-		}
-};
-
-/* *** SET BONDING PRIMARY *** */
-struct cmd_set_bonding_primary_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t primary;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_set_bonding_primary_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_primary_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* Set the primary slave for a bonded device. */
-	if (0 != rte_eth_bond_primary_set(master_port_id, slave_port_id)) {
-		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
-			master_port_id);
-		return;
-	}
-	init_port_config();
-}
-
-static cmdline_parse_token_string_t cmd_setbonding_primary_set =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		set, "set");
-static cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_setbonding_primary_primary =
-TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
-		primary, "primary");
-static cmdline_parse_token_num_t cmd_setbonding_primary_slave =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
-		slave_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_setbonding_primary_port =
-TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
-		port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_set_bonding_primary = {
-		.f = cmd_set_bonding_primary_parsed,
-		.help_str = "set bonding primary <slave_id> <port_id>: "
-			"Set the primary slave for port_id",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_setbonding_primary_set,
-				(void *)&cmd_setbonding_primary_bonding,
-				(void *)&cmd_setbonding_primary_primary,
-				(void *)&cmd_setbonding_primary_slave,
-				(void *)&cmd_setbonding_primary_port,
-				NULL
-		}
-};
-
-/* *** ADD SLAVE *** */
-struct cmd_add_bonding_slave_result {
-	cmdline_fixed_string_t add;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t slave;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_add_bonding_slave_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_add_bonding_slave_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* add the slave for a bonded device. */
-	if (0 != rte_eth_bond_slave_add(master_port_id, slave_port_id)) {
-		fprintf(stderr,
-			"\t Failed to add slave %d to master port = %d.\n",
-			slave_port_id, master_port_id);
-		return;
-	}
-	init_port_config();
-	set_port_slave_flag(slave_port_id);
-}
-
-static cmdline_parse_token_string_t cmd_addbonding_slave_add =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		add, "add");
-static cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		bonding, "bonding");
-static cmdline_parse_token_string_t cmd_addbonding_slave_slave =
-TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
-		slave, "slave");
-static cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
-TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
-		slave_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_addbonding_slave_port =
-TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
-		port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_add_bonding_slave = {
-		.f = cmd_add_bonding_slave_parsed,
-		.help_str = "add bonding slave <slave_id> <port_id>: "
-			"Add a slave device to a bonded device",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_addbonding_slave_add,
-				(void *)&cmd_addbonding_slave_bonding,
-				(void *)&cmd_addbonding_slave_slave,
-				(void *)&cmd_addbonding_slave_slaveid,
-				(void *)&cmd_addbonding_slave_port,
-				NULL
-		}
-};
-
-/* *** REMOVE SLAVE *** */
-struct cmd_remove_bonding_slave_result {
-	cmdline_fixed_string_t remove;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t slave;
-	portid_t slave_id;
-	portid_t port_id;
-};
-
-static void cmd_remove_bonding_slave_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_remove_bonding_slave_result *res = parsed_result;
-	portid_t master_port_id = res->port_id;
-	portid_t slave_port_id = res->slave_id;
-
-	/* remove the slave from a bonded device. */
-	if (0 != rte_eth_bond_slave_remove(master_port_id, slave_port_id)) {
-		fprintf(stderr,
-			"\t Failed to remove slave %d from master port = %d.\n",
-			slave_port_id, master_port_id);
-		return;
-	}
-	init_port_config();
-	clear_port_slave_flag(slave_port_id);
-}
-
-static cmdline_parse_token_string_t cmd_removebonding_slave_remove =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				remove, "remove");
-static cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				bonding, "bonding");
-static cmdline_parse_token_string_t cmd_removebonding_slave_slave =
-		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				slave, "slave");
-static cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
-		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				slave_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_removebonding_slave_port =
-		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
-				port_id, RTE_UINT16);
-
-static cmdline_parse_inst_t cmd_remove_bonding_slave = {
-		.f = cmd_remove_bonding_slave_parsed,
-		.help_str = "remove bonding slave <slave_id> <port_id>: "
-			"Remove a slave device from a bonded device",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_removebonding_slave_remove,
-				(void *)&cmd_removebonding_slave_bonding,
-				(void *)&cmd_removebonding_slave_slave,
-				(void *)&cmd_removebonding_slave_slaveid,
-				(void *)&cmd_removebonding_slave_port,
-				NULL
-		}
-};
-
-/* *** CREATE BONDED DEVICE *** */
-struct cmd_create_bonded_device_result {
-	cmdline_fixed_string_t create;
-	cmdline_fixed_string_t bonded;
-	cmdline_fixed_string_t device;
-	uint8_t mode;
-	uint8_t socket;
-};
-
-static int bond_dev_num = 0;
-
-static void cmd_create_bonded_device_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_create_bonded_device_result *res = parsed_result;
-	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
-	int port_id;
-	int ret;
-
-	if (test_done == 0) {
-		fprintf(stderr, "Please stop forwarding first\n");
-		return;
-	}
-
-	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
-			bond_dev_num++);
-
-	/* Create a new bonded device. */
-	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
-	if (port_id < 0) {
-		fprintf(stderr, "\t Failed to create bonded device.\n");
-		return;
-	} else {
-		printf("Created new bonded device %s on (port %d).\n", ethdev_name,
-				port_id);
-
-		/* Update number of ports */
-		nb_ports = rte_eth_dev_count_avail();
-		reconfig(port_id, res->socket);
-		ret = rte_eth_promiscuous_enable(port_id);
-		if (ret != 0)
-			fprintf(stderr,
-				"Failed to enable promiscuous mode for port %u: %s - ignore\n",
-				port_id, rte_strerror(-ret));
-
-		ports[port_id].need_setup = 0;
-		ports[port_id].port_status = RTE_PORT_STOPPED;
-	}
-
-}
-
-static cmdline_parse_token_string_t cmd_createbonded_device_create =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				create, "create");
-static cmdline_parse_token_string_t cmd_createbonded_device_bonded =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				bonded, "bonded");
-static cmdline_parse_token_string_t cmd_createbonded_device_device =
-		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
-				device, "device");
-static cmdline_parse_token_num_t cmd_createbonded_device_mode =
-		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
-				mode, RTE_UINT8);
-static cmdline_parse_token_num_t cmd_createbonded_device_socket =
-		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
-				socket, RTE_UINT8);
-
-static cmdline_parse_inst_t cmd_create_bonded_device = {
-		.f = cmd_create_bonded_device_parsed,
-		.help_str = "create bonded device <mode> <socket>: "
-			"Create a new bonded device with specific bonding mode and socket",
-		.data = NULL,
-		.tokens = {
-				(void *)&cmd_createbonded_device_create,
-				(void *)&cmd_createbonded_device_bonded,
-				(void *)&cmd_createbonded_device_device,
-				(void *)&cmd_createbonded_device_mode,
-				(void *)&cmd_createbonded_device_socket,
-				NULL
-		}
-};
-
-/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
-struct cmd_set_bond_mac_addr_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mac_addr;
-	uint16_t port_num;
-	struct rte_ether_addr address;
-};
-
-static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bond_mac_addr_result *res = parsed_result;
-	int ret;
-
-	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
-		return;
-
-	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
-
-	/* check the return value and print it if is < 0 */
-	if (ret < 0)
-		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
-			strerror(-ret));
-}
-
-static cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
-static cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
-				"bonding");
-static cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
-				"mac_addr");
-static cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
-				port_num, RTE_UINT16);
-static cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
-		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
-
-static cmdline_parse_inst_t cmd_set_bond_mac_addr = {
-		.f = cmd_set_bond_mac_addr_parsed,
-		.data = (void *) 0,
-		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
-		.tokens = {
-				(void *)&cmd_set_bond_mac_addr_set,
-				(void *)&cmd_set_bond_mac_addr_bonding,
-				(void *)&cmd_set_bond_mac_addr_mac,
-				(void *)&cmd_set_bond_mac_addr_portnum,
-				(void *)&cmd_set_bond_mac_addr_addr,
-				NULL
-		}
-};
-
-
-/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
-struct cmd_set_bond_mon_period_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t mon_period;
-	uint16_t port_num;
-	uint32_t period_ms;
-};
-
-static void cmd_set_bond_mon_period_parsed(void *parsed_result,
-		__rte_unused  struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bond_mon_period_result *res = parsed_result;
-	int ret;
-
-	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
-
-	/* check the return value and print it if is < 0 */
-	if (ret < 0)
-		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
-			strerror(-ret));
-}
-
-static cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				set, "set");
-static cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				bonding, "bonding");
-static cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
-		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				mon_period,	"mon_period");
-static cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				port_num, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
-		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
-				period_ms, RTE_UINT32);
-
-static cmdline_parse_inst_t cmd_set_bond_mon_period = {
-		.f = cmd_set_bond_mon_period_parsed,
-		.data = (void *) 0,
-		.help_str = "set bonding mon_period <port_id> <period_ms>",
-		.tokens = {
-				(void *)&cmd_set_bond_mon_period_set,
-				(void *)&cmd_set_bond_mon_period_bonding,
-				(void *)&cmd_set_bond_mon_period_mon_period,
-				(void *)&cmd_set_bond_mon_period_portnum,
-				(void *)&cmd_set_bond_mon_period_period_ms,
-				NULL
-		}
-};
-
-
-
-struct cmd_set_bonding_agg_mode_policy_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t bonding;
-	cmdline_fixed_string_t agg_mode;
-	uint16_t port_num;
-	cmdline_fixed_string_t policy;
-};
-
-
-static void
-cmd_set_bonding_agg_mode(void *parsed_result,
-		__rte_unused struct cmdline *cl,
-		__rte_unused void *data)
-{
-	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
-	uint8_t policy = AGG_BANDWIDTH;
-
-	if (!strcmp(res->policy, "bandwidth"))
-		policy = AGG_BANDWIDTH;
-	else if (!strcmp(res->policy, "stable"))
-		policy = AGG_STABLE;
-	else if (!strcmp(res->policy, "count"))
-		policy = AGG_COUNT;
-
-	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
-}
-
-
-static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				set, "set");
-static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				bonding, "bonding");
-
-static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				agg_mode, "agg_mode");
-
-static cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
-				port_num, RTE_UINT16);
-
-static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
-	TOKEN_STRING_INITIALIZER(
-			struct cmd_set_bonding_balance_xmit_policy_result,
-		policy, "stable#bandwidth#count");
-
-static cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
-	.f = cmd_set_bonding_agg_mode,
-	.data = (void *) 0,
-	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
-	.tokens = {
-			(void *)&cmd_set_bonding_agg_mode_set,
-			(void *)&cmd_set_bonding_agg_mode_bonding,
-			(void *)&cmd_set_bonding_agg_mode_agg_mode,
-			(void *)&cmd_set_bonding_agg_mode_portnum,
-			(void *)&cmd_set_bonding_agg_mode_policy_string,
-			NULL
-		}
-};
-
-
-#endif /* RTE_NET_BOND */
-
 /* *** SET FORWARDING MODE *** */
 struct cmd_set_fwd_mode_result {
 	cmdline_fixed_string_t set;
@@ -17860,20 +16839,6 @@ static cmdline_parse_ctx_t builtin_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_set_bypass_event,
 	(cmdline_parse_inst_t *)&cmd_set_bypass_timeout,
 	(cmdline_parse_inst_t *)&cmd_show_bypass_config,
-#ifdef RTE_NET_BOND
-	(cmdline_parse_inst_t *) &cmd_set_bonding_mode,
-	(cmdline_parse_inst_t *) &cmd_show_bonding_config,
-	(cmdline_parse_inst_t *) &cmd_show_bonding_lacp_info,
-	(cmdline_parse_inst_t *) &cmd_set_bonding_primary,
-	(cmdline_parse_inst_t *) &cmd_add_bonding_slave,
-	(cmdline_parse_inst_t *) &cmd_remove_bonding_slave,
-	(cmdline_parse_inst_t *) &cmd_create_bonded_device,
-	(cmdline_parse_inst_t *) &cmd_set_bond_mac_addr,
-	(cmdline_parse_inst_t *) &cmd_set_balance_xmit_policy,
-	(cmdline_parse_inst_t *) &cmd_set_bond_mon_period,
-	(cmdline_parse_inst_t *) &cmd_set_lacp_dedicated_queues,
-	(cmdline_parse_inst_t *) &cmd_set_bonding_agg_mode_policy,
-#endif
 	(cmdline_parse_inst_t *)&cmd_vlan_offload,
 	(cmdline_parse_inst_t *)&cmd_vlan_tpid,
 	(cmdline_parse_inst_t *)&cmd_rx_vlan_filter_all,
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 46a7511e9a..07634332f3 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -58,9 +58,6 @@ endif
 if dpdk_conf.has('RTE_LIB_PDUMP')
     deps += 'pdump'
 endif
-if dpdk_conf.has('RTE_NET_BOND')
-    deps += 'net_bond'
-endif
 if dpdk_conf.has('RTE_NET_BNXT')
     deps += 'net_bnxt'
 endif
diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build
index 402b44be1a..faea892295 100644
--- a/drivers/net/bonding/meson.build
+++ b/drivers/net/bonding/meson.build
@@ -16,6 +16,7 @@ sources = files(
         'rte_eth_bond_flow.c',
         'rte_eth_bond_pmd.c',
 )
+testpmd_sources = files('rte_eth_bond_testpmd.c')
 
 deps += 'sched' # needed for rte_bitmap.h
 deps += ['ip_frag']
diff --git a/drivers/net/bonding/rte_eth_bond_testpmd.c b/drivers/net/bonding/rte_eth_bond_testpmd.c
new file mode 100644
index 0000000000..3949a8c3ca
--- /dev/null
+++ b/drivers/net/bonding/rte_eth_bond_testpmd.c
@@ -0,0 +1,1037 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2016 Intel Corporation.
+ */
+
+#include <rte_eth_bond.h>
+#include <rte_eth_bond_8023ad.h>
+
+#include <cmdline_parse.h>
+#include <cmdline_parse_etheraddr.h>
+#include <cmdline_parse_num.h>
+#include <cmdline_parse_string.h>
+
+#include "testpmd.h"
+
+/* *** SET BONDING MODE *** */
+struct cmd_set_bonding_mode_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mode;
+	uint8_t value;
+	portid_t port_id;
+};
+
+static void cmd_set_bonding_mode_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_mode_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	struct rte_port *port = &ports[port_id];
+
+	/*
+	 * Bonding mode changed means resources of device changed, like whether
+	 * started rte timer or not. Device should be restarted when resources
+	 * of device changed.
+	 */
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr,
+			"\t Error: Can't set bonding mode when port %d is not stopped\n",
+			port_id);
+		return;
+	}
+
+	/* Set the bonding mode for the relevant port. */
+	if (rte_eth_bond_mode_set(port_id, res->value) != 0)
+		fprintf(stderr, "\t Failed to set bonding mode for port = %d.\n",
+			port_id);
+}
+
+static cmdline_parse_token_string_t cmd_setbonding_mode_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		set, "set");
+static cmdline_parse_token_string_t cmd_setbonding_mode_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_setbonding_mode_mode =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_mode_result,
+		mode, "mode");
+static cmdline_parse_token_num_t cmd_setbonding_mode_value =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
+		value, RTE_UINT8);
+static cmdline_parse_token_num_t cmd_setbonding_mode_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_mode_result,
+		port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_set_bonding_mode = {
+		.f = cmd_set_bonding_mode_parsed,
+		.help_str = "set bonding mode <mode_value> <port_id>: "
+			"Set the bonding mode for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_mode_set,
+				(void *)&cmd_setbonding_mode_bonding,
+				(void *)&cmd_setbonding_mode_mode,
+				(void *)&cmd_setbonding_mode_value,
+				(void *)&cmd_setbonding_mode_port,
+				NULL
+		}
+};
+
+/* *** SET BONDING SLOW_QUEUE SW/HW *** */
+struct cmd_set_bonding_lacp_dedicated_queues_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t lacp;
+	cmdline_fixed_string_t dedicated_queues;
+	portid_t port_id;
+	cmdline_fixed_string_t mode;
+};
+
+static void cmd_set_bonding_lacp_dedicated_queues_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_lacp_dedicated_queues_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	struct rte_port *port;
+
+	port = &ports[port_id];
+
+	/** Check if the port is not started **/
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr, "Please stop port %d first\n", port_id);
+		return;
+	}
+
+	if (!strcmp(res->mode, "enable")) {
+		if (rte_eth_bond_8023ad_dedicated_queues_enable(port_id) == 0)
+			printf("Dedicate queues for LACP control packets"
+					" enabled\n");
+		else
+			printf("Enabling dedicate queues for LACP control "
+					"packets on port %d failed\n", port_id);
+	} else if (!strcmp(res->mode, "disable")) {
+		if (rte_eth_bond_8023ad_dedicated_queues_disable(port_id) == 0)
+			printf("Dedicated queues for LACP control packets "
+					"disabled\n");
+		else
+			printf("Disabling dedicated queues for LACP control "
+					"traffic on port %d failed\n", port_id);
+	}
+}
+
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		set, "set");
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_lacp =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		lacp, "lacp");
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_dedicated_queues =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		dedicated_queues, "dedicated_queues");
+static cmdline_parse_token_num_t cmd_setbonding_lacp_dedicated_queues_port_id =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_setbonding_lacp_dedicated_queues_mode =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_lacp_dedicated_queues_result,
+		mode, "enable#disable");
+
+static cmdline_parse_inst_t cmd_set_lacp_dedicated_queues = {
+		.f = cmd_set_bonding_lacp_dedicated_queues_parsed,
+		.help_str = "set bonding lacp dedicated_queues <port_id> "
+			"enable|disable: "
+			"Enable/disable dedicated queues for LACP control traffic for port_id",
+		.data = NULL,
+		.tokens = {
+			(void *)&cmd_setbonding_lacp_dedicated_queues_set,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_bonding,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_lacp,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_dedicated_queues,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_port_id,
+			(void *)&cmd_setbonding_lacp_dedicated_queues_mode,
+			NULL
+		}
+};
+
+/* *** SET BALANCE XMIT POLICY *** */
+struct cmd_set_bonding_balance_xmit_policy_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t balance_xmit_policy;
+	portid_t port_id;
+	cmdline_fixed_string_t policy;
+};
+
+static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_balance_xmit_policy_result *res = parsed_result;
+	portid_t port_id = res->port_id;
+	uint8_t policy;
+
+	if (!strcmp(res->policy, "l2")) {
+		policy = BALANCE_XMIT_POLICY_LAYER2;
+	} else if (!strcmp(res->policy, "l23")) {
+		policy = BALANCE_XMIT_POLICY_LAYER23;
+	} else if (!strcmp(res->policy, "l34")) {
+		policy = BALANCE_XMIT_POLICY_LAYER34;
+	} else {
+		fprintf(stderr, "\t Invalid xmit policy selection");
+		return;
+	}
+
+	/* Set the bonding mode for the relevant port. */
+	if (rte_eth_bond_xmit_policy_set(port_id, policy) != 0) {
+		fprintf(stderr,
+			"\t Failed to set bonding balance xmit policy for port = %d.\n",
+			port_id);
+	}
+}
+
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		set, "set");
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_balance_xmit_policy =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		balance_xmit_policy, "balance_xmit_policy");
+static cmdline_parse_token_num_t cmd_setbonding_balance_xmit_policy_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		port_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_setbonding_balance_xmit_policy_policy =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		policy, "l2#l23#l34");
+
+static cmdline_parse_inst_t cmd_set_balance_xmit_policy = {
+		.f = cmd_set_bonding_balance_xmit_policy_parsed,
+		.help_str = "set bonding balance_xmit_policy <port_id> "
+			"l2|l23|l34: "
+			"Set the bonding balance_xmit_policy for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_balance_xmit_policy_set,
+				(void *)&cmd_setbonding_balance_xmit_policy_bonding,
+				(void *)&cmd_setbonding_balance_xmit_policy_balance_xmit_policy,
+				(void *)&cmd_setbonding_balance_xmit_policy_port,
+				(void *)&cmd_setbonding_balance_xmit_policy_policy,
+				NULL
+		}
+};
+
+/* *** SHOW IEEE802.3 BONDING INFORMATION *** */
+struct cmd_show_bonding_lacp_info_result {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t lacp;
+	cmdline_fixed_string_t info;
+	portid_t port_id;
+};
+
+static void port_param_show(struct port_params *params)
+{
+	char buf[RTE_ETHER_ADDR_FMT_SIZE];
+
+	printf("\t\tsystem priority: %u\n", params->system_priority);
+	rte_ether_format_addr(buf, RTE_ETHER_ADDR_FMT_SIZE, &params->system);
+	printf("\t\tsystem mac address: %s\n", buf);
+	printf("\t\tport key: %u\n", params->key);
+	printf("\t\tport priority: %u\n", params->port_priority);
+	printf("\t\tport number: %u\n", params->port_number);
+}
+
+static void lacp_slave_info_show(struct rte_eth_bond_8023ad_slave_info *info)
+{
+	char a_state[256] = { 0 };
+	char p_state[256] = { 0 };
+	int a_len = 0;
+	int p_len = 0;
+	uint32_t i;
+
+	static const char * const state[] = {
+		"ACTIVE",
+		"TIMEOUT",
+		"AGGREGATION",
+		"SYNCHRONIZATION",
+		"COLLECTING",
+		"DISTRIBUTING",
+		"DEFAULTED",
+		"EXPIRED"
+	};
+	static const char * const selection[] = {
+		"UNSELECTED",
+		"STANDBY",
+		"SELECTED"
+	};
+
+	for (i = 0; i < RTE_DIM(state); i++) {
+		if ((info->actor_state >> i) & 1)
+			a_len += snprintf(&a_state[a_len],
+						RTE_DIM(a_state) - a_len, "%s ",
+						state[i]);
+
+		if ((info->partner_state >> i) & 1)
+			p_len += snprintf(&p_state[p_len],
+						RTE_DIM(p_state) - p_len, "%s ",
+						state[i]);
+	}
+	printf("\tAggregator port id: %u\n", info->agg_port_id);
+	printf("\tselection: %s\n", selection[info->selected]);
+	printf("\tActor detail info:\n");
+	port_param_show(&info->actor);
+	printf("\t\tport state: %s\n", a_state);
+	printf("\tPartner detail info:\n");
+	port_param_show(&info->partner);
+	printf("\t\tport state: %s\n", p_state);
+	printf("\n");
+}
+
+static void lacp_conf_show(struct rte_eth_bond_8023ad_conf *conf)
+{
+	printf("\tfast period: %u ms\n", conf->fast_periodic_ms);
+	printf("\tslow period: %u ms\n", conf->slow_periodic_ms);
+	printf("\tshort timeout: %u ms\n", conf->short_timeout_ms);
+	printf("\tlong timeout: %u ms\n", conf->long_timeout_ms);
+	printf("\taggregate wait timeout: %u ms\n",
+			conf->aggregate_wait_timeout_ms);
+	printf("\ttx period: %u ms\n", conf->tx_period_ms);
+	printf("\trx marker period: %u ms\n", conf->rx_marker_period_ms);
+	printf("\tupdate timeout: %u ms\n", conf->update_timeout_ms);
+	switch (conf->agg_selection) {
+	case AGG_BANDWIDTH:
+		printf("\taggregation mode: bandwidth\n");
+		break;
+	case AGG_STABLE:
+		printf("\taggregation mode: stable\n");
+		break;
+	case AGG_COUNT:
+		printf("\taggregation mode: count\n");
+		break;
+	default:
+		printf("\taggregation mode: invalid\n");
+		break;
+	}
+
+	printf("\n");
+}
+
+static void cmd_show_bonding_lacp_info_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_show_bonding_lacp_info_result *res = parsed_result;
+	struct rte_eth_bond_8023ad_slave_info slave_info;
+	struct rte_eth_bond_8023ad_conf port_conf;
+	portid_t slaves[RTE_MAX_ETHPORTS];
+	portid_t port_id = res->port_id;
+	int num_active_slaves;
+	int bonding_mode;
+	int i;
+	int ret;
+
+	bonding_mode = rte_eth_bond_mode_get(port_id);
+	if (bonding_mode != BONDING_MODE_8023AD) {
+		fprintf(stderr, "\tBonding mode is not mode 4\n");
+		return;
+	}
+
+	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
+			RTE_MAX_ETHPORTS);
+	if (num_active_slaves < 0) {
+		fprintf(stderr, "\tFailed to get active slave list for port = %u\n",
+				port_id);
+		return;
+	}
+	if (num_active_slaves == 0)
+		fprintf(stderr, "\tIEEE802.3 port %u has no active slave\n",
+			port_id);
+
+	printf("\tIEEE802.3 port: %u\n", port_id);
+	ret = rte_eth_bond_8023ad_conf_get(port_id, &port_conf);
+	if (ret) {
+		fprintf(stderr, "\tGet bonded device %u info failed\n",
+			port_id);
+		return;
+	}
+	lacp_conf_show(&port_conf);
+
+	for (i = 0; i < num_active_slaves; i++) {
+		ret = rte_eth_bond_8023ad_slave_info(port_id, slaves[i],
+				&slave_info);
+		if (ret) {
+			fprintf(stderr, "\tGet slave device %u info failed\n",
+				slaves[i]);
+			return;
+		}
+		printf("\tSlave Port: %u\n", slaves[i]);
+		lacp_slave_info_show(&slave_info);
+	}
+}
+
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_show =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		show, "show");
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_lacp =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		bonding, "lacp");
+static cmdline_parse_token_string_t cmd_show_bonding_lacp_info_info =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		info, "info");
+static cmdline_parse_token_num_t cmd_show_bonding_lacp_info_port_id =
+TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_lacp_info_result,
+		port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_show_bonding_lacp_info = {
+		.f = cmd_show_bonding_lacp_info_parsed,
+		.help_str = "show bonding lacp info <port_id> : "
+			"Show bonding IEEE802.3 information for port_id",
+		.data = NULL,
+		.tokens = {
+			(void *)&cmd_show_bonding_lacp_info_show,
+			(void *)&cmd_show_bonding_lacp_info_bonding,
+			(void *)&cmd_show_bonding_lacp_info_lacp,
+			(void *)&cmd_show_bonding_lacp_info_info,
+			(void *)&cmd_show_bonding_lacp_info_port_id,
+			NULL
+		}
+};
+
+/* *** SHOW NIC BONDING CONFIGURATION *** */
+struct cmd_show_bonding_config_result {
+	cmdline_fixed_string_t show;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t config;
+	portid_t port_id;
+};
+
+static void cmd_show_bonding_config_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_show_bonding_config_result *res = parsed_result;
+	int bonding_mode, agg_mode;
+	portid_t slaves[RTE_MAX_ETHPORTS];
+	int num_slaves, num_active_slaves;
+	int primary_id;
+	int i;
+	portid_t port_id = res->port_id;
+
+	/* Display the bonding mode.*/
+	bonding_mode = rte_eth_bond_mode_get(port_id);
+	if (bonding_mode < 0) {
+		fprintf(stderr, "\tFailed to get bonding mode for port = %d\n",
+			port_id);
+		return;
+	}
+	printf("\tBonding mode: %d\n", bonding_mode);
+
+	if (bonding_mode == BONDING_MODE_BALANCE ||
+		bonding_mode == BONDING_MODE_8023AD) {
+		int balance_xmit_policy;
+
+		balance_xmit_policy = rte_eth_bond_xmit_policy_get(port_id);
+		if (balance_xmit_policy < 0) {
+			fprintf(stderr,
+				"\tFailed to get balance xmit policy for port = %d\n",
+				port_id);
+			return;
+		}
+		printf("\tBalance Xmit Policy: ");
+
+		switch (balance_xmit_policy) {
+		case BALANCE_XMIT_POLICY_LAYER2:
+			printf("BALANCE_XMIT_POLICY_LAYER2");
+			break;
+		case BALANCE_XMIT_POLICY_LAYER23:
+			printf("BALANCE_XMIT_POLICY_LAYER23");
+			break;
+		case BALANCE_XMIT_POLICY_LAYER34:
+			printf("BALANCE_XMIT_POLICY_LAYER34");
+			break;
+		}
+		printf("\n");
+	}
+
+	if (bonding_mode == BONDING_MODE_8023AD) {
+		agg_mode = rte_eth_bond_8023ad_agg_selection_get(port_id);
+		printf("\tIEEE802.3AD Aggregator Mode: ");
+		switch (agg_mode) {
+		case AGG_BANDWIDTH:
+			printf("bandwidth");
+			break;
+		case AGG_STABLE:
+			printf("stable");
+			break;
+		case AGG_COUNT:
+			printf("count");
+			break;
+		}
+		printf("\n");
+	}
+
+	num_slaves = rte_eth_bond_slaves_get(port_id, slaves, RTE_MAX_ETHPORTS);
+
+	if (num_slaves < 0) {
+		fprintf(stderr, "\tFailed to get slave list for port = %d\n",
+			port_id);
+		return;
+	}
+	if (num_slaves > 0) {
+		printf("\tSlaves (%d): [", num_slaves);
+		for (i = 0; i < num_slaves - 1; i++)
+			printf("%d ", slaves[i]);
+
+		printf("%d]\n", slaves[num_slaves - 1]);
+	} else {
+		printf("\tSlaves: []\n");
+	}
+
+	num_active_slaves = rte_eth_bond_active_slaves_get(port_id, slaves,
+			RTE_MAX_ETHPORTS);
+
+	if (num_active_slaves < 0) {
+		fprintf(stderr,
+			"\tFailed to get active slave list for port = %d\n",
+			port_id);
+		return;
+	}
+	if (num_active_slaves > 0) {
+		printf("\tActive Slaves (%d): [", num_active_slaves);
+		for (i = 0; i < num_active_slaves - 1; i++)
+			printf("%d ", slaves[i]);
+
+		printf("%d]\n", slaves[num_active_slaves - 1]);
+
+	} else {
+		printf("\tActive Slaves: []\n");
+	}
+
+	primary_id = rte_eth_bond_primary_get(port_id);
+	if (primary_id < 0) {
+		fprintf(stderr, "\tFailed to get primary slave for port = %d\n",
+			port_id);
+		return;
+	}
+	printf("\tPrimary: [%d]\n", primary_id);
+}
+
+static cmdline_parse_token_string_t cmd_showbonding_config_show =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		show, "show");
+static cmdline_parse_token_string_t cmd_showbonding_config_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_showbonding_config_config =
+TOKEN_STRING_INITIALIZER(struct cmd_show_bonding_config_result,
+		config, "config");
+static cmdline_parse_token_num_t cmd_showbonding_config_port =
+TOKEN_NUM_INITIALIZER(struct cmd_show_bonding_config_result,
+		port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_show_bonding_config = {
+		.f = cmd_show_bonding_config_parsed,
+		.help_str = "show bonding config <port_id>: "
+			"Show the bonding config for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_showbonding_config_show,
+				(void *)&cmd_showbonding_config_bonding,
+				(void *)&cmd_showbonding_config_config,
+				(void *)&cmd_showbonding_config_port,
+				NULL
+		}
+};
+
+/* *** SET BONDING PRIMARY *** */
+struct cmd_set_bonding_primary_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t primary;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_set_bonding_primary_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_primary_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* Set the primary slave for a bonded device. */
+	if (rte_eth_bond_primary_set(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr, "\t Failed to set primary slave for port = %d.\n",
+			master_port_id);
+		return;
+	}
+	init_port_config();
+}
+
+static cmdline_parse_token_string_t cmd_setbonding_primary_set =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		set, "set");
+static cmdline_parse_token_string_t cmd_setbonding_primary_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_setbonding_primary_primary =
+TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_primary_result,
+		primary, "primary");
+static cmdline_parse_token_num_t cmd_setbonding_primary_slave =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
+		slave_id, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_setbonding_primary_port =
+TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_primary_result,
+		port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_set_bonding_primary = {
+		.f = cmd_set_bonding_primary_parsed,
+		.help_str = "set bonding primary <slave_id> <port_id>: "
+			"Set the primary slave for port_id",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_setbonding_primary_set,
+				(void *)&cmd_setbonding_primary_bonding,
+				(void *)&cmd_setbonding_primary_primary,
+				(void *)&cmd_setbonding_primary_slave,
+				(void *)&cmd_setbonding_primary_port,
+				NULL
+		}
+};
+
+/* *** ADD SLAVE *** */
+struct cmd_add_bonding_slave_result {
+	cmdline_fixed_string_t add;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t slave;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_add_bonding_slave_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_add_bonding_slave_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* add the slave for a bonded device. */
+	if (rte_eth_bond_slave_add(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr,
+			"\t Failed to add slave %d to master port = %d.\n",
+			slave_port_id, master_port_id);
+		return;
+	}
+	init_port_config();
+	set_port_slave_flag(slave_port_id);
+}
+
+static cmdline_parse_token_string_t cmd_addbonding_slave_add =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		add, "add");
+static cmdline_parse_token_string_t cmd_addbonding_slave_bonding =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		bonding, "bonding");
+static cmdline_parse_token_string_t cmd_addbonding_slave_slave =
+TOKEN_STRING_INITIALIZER(struct cmd_add_bonding_slave_result,
+		slave, "slave");
+static cmdline_parse_token_num_t cmd_addbonding_slave_slaveid =
+TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
+		slave_id, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_addbonding_slave_port =
+TOKEN_NUM_INITIALIZER(struct cmd_add_bonding_slave_result,
+		port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_add_bonding_slave = {
+		.f = cmd_add_bonding_slave_parsed,
+		.help_str = "add bonding slave <slave_id> <port_id>: "
+			"Add a slave device to a bonded device",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_addbonding_slave_add,
+				(void *)&cmd_addbonding_slave_bonding,
+				(void *)&cmd_addbonding_slave_slave,
+				(void *)&cmd_addbonding_slave_slaveid,
+				(void *)&cmd_addbonding_slave_port,
+				NULL
+		}
+};
+
+/* *** REMOVE SLAVE *** */
+struct cmd_remove_bonding_slave_result {
+	cmdline_fixed_string_t remove;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t slave;
+	portid_t slave_id;
+	portid_t port_id;
+};
+
+static void cmd_remove_bonding_slave_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_remove_bonding_slave_result *res = parsed_result;
+	portid_t master_port_id = res->port_id;
+	portid_t slave_port_id = res->slave_id;
+
+	/* remove the slave from a bonded device. */
+	if (rte_eth_bond_slave_remove(master_port_id, slave_port_id) != 0) {
+		fprintf(stderr,
+			"\t Failed to remove slave %d from master port = %d.\n",
+			slave_port_id, master_port_id);
+		return;
+	}
+	init_port_config();
+	clear_port_slave_flag(slave_port_id);
+}
+
+static cmdline_parse_token_string_t cmd_removebonding_slave_remove =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				remove, "remove");
+static cmdline_parse_token_string_t cmd_removebonding_slave_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				bonding, "bonding");
+static cmdline_parse_token_string_t cmd_removebonding_slave_slave =
+		TOKEN_STRING_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				slave, "slave");
+static cmdline_parse_token_num_t cmd_removebonding_slave_slaveid =
+		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				slave_id, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_removebonding_slave_port =
+		TOKEN_NUM_INITIALIZER(struct cmd_remove_bonding_slave_result,
+				port_id, RTE_UINT16);
+
+static cmdline_parse_inst_t cmd_remove_bonding_slave = {
+		.f = cmd_remove_bonding_slave_parsed,
+		.help_str = "remove bonding slave <slave_id> <port_id>: "
+			"Remove a slave device from a bonded device",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_removebonding_slave_remove,
+				(void *)&cmd_removebonding_slave_bonding,
+				(void *)&cmd_removebonding_slave_slave,
+				(void *)&cmd_removebonding_slave_slaveid,
+				(void *)&cmd_removebonding_slave_port,
+				NULL
+		}
+};
+
+/* *** CREATE BONDED DEVICE *** */
+struct cmd_create_bonded_device_result {
+	cmdline_fixed_string_t create;
+	cmdline_fixed_string_t bonded;
+	cmdline_fixed_string_t device;
+	uint8_t mode;
+	uint8_t socket;
+};
+
+static int bond_dev_num;
+
+static void cmd_create_bonded_device_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_create_bonded_device_result *res = parsed_result;
+	char ethdev_name[RTE_ETH_NAME_MAX_LEN];
+	int port_id;
+	int ret;
+
+	if (test_done == 0) {
+		fprintf(stderr, "Please stop forwarding first\n");
+		return;
+	}
+
+	snprintf(ethdev_name, RTE_ETH_NAME_MAX_LEN, "net_bonding_testpmd_%d",
+			bond_dev_num++);
+
+	/* Create a new bonded device. */
+	port_id = rte_eth_bond_create(ethdev_name, res->mode, res->socket);
+	if (port_id < 0) {
+		fprintf(stderr, "\t Failed to create bonded device.\n");
+		return;
+	}
+	printf("Created new bonded device %s on (port %d).\n", ethdev_name,
+		port_id);
+
+	/* Update number of ports */
+	nb_ports = rte_eth_dev_count_avail();
+	reconfig(port_id, res->socket);
+	ret = rte_eth_promiscuous_enable(port_id);
+	if (ret != 0)
+		fprintf(stderr, "Failed to enable promiscuous mode for port %u: %s - ignore\n",
+			port_id, rte_strerror(-ret));
+
+	ports[port_id].need_setup = 0;
+	ports[port_id].port_status = RTE_PORT_STOPPED;
+}
+
+static cmdline_parse_token_string_t cmd_createbonded_device_create =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				create, "create");
+static cmdline_parse_token_string_t cmd_createbonded_device_bonded =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				bonded, "bonded");
+static cmdline_parse_token_string_t cmd_createbonded_device_device =
+		TOKEN_STRING_INITIALIZER(struct cmd_create_bonded_device_result,
+				device, "device");
+static cmdline_parse_token_num_t cmd_createbonded_device_mode =
+		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
+				mode, RTE_UINT8);
+static cmdline_parse_token_num_t cmd_createbonded_device_socket =
+		TOKEN_NUM_INITIALIZER(struct cmd_create_bonded_device_result,
+				socket, RTE_UINT8);
+
+static cmdline_parse_inst_t cmd_create_bonded_device = {
+		.f = cmd_create_bonded_device_parsed,
+		.help_str = "create bonded device <mode> <socket>: "
+			"Create a new bonded device with specific bonding mode and socket",
+		.data = NULL,
+		.tokens = {
+				(void *)&cmd_createbonded_device_create,
+				(void *)&cmd_createbonded_device_bonded,
+				(void *)&cmd_createbonded_device_device,
+				(void *)&cmd_createbonded_device_mode,
+				(void *)&cmd_createbonded_device_socket,
+				NULL
+		}
+};
+
+/* *** SET MAC ADDRESS IN BONDED DEVICE *** */
+struct cmd_set_bond_mac_addr_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mac_addr;
+	uint16_t port_num;
+	struct rte_ether_addr address;
+};
+
+static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bond_mac_addr_result *res = parsed_result;
+	int ret;
+
+	if (port_id_is_invalid(res->port_num, ENABLED_WARN))
+		return;
+
+	ret = rte_eth_bond_mac_address_set(res->port_num, &res->address);
+
+	/* check the return value and print it if is < 0 */
+	if (ret < 0)
+		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
+			strerror(-ret));
+}
+
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_set =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, set, "set");
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, bonding,
+				"bonding");
+static cmdline_parse_token_string_t cmd_set_bond_mac_addr_mac =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mac_addr_result, mac_addr,
+				"mac_addr");
+static cmdline_parse_token_num_t cmd_set_bond_mac_addr_portnum =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mac_addr_result,
+				port_num, RTE_UINT16);
+static cmdline_parse_token_etheraddr_t cmd_set_bond_mac_addr_addr =
+		TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_bond_mac_addr_result, address);
+
+static cmdline_parse_inst_t cmd_set_bond_mac_addr = {
+		.f = cmd_set_bond_mac_addr_parsed,
+		.data = NULL,
+		.help_str = "set bonding mac_addr <port_id> <mac_addr>",
+		.tokens = {
+				(void *)&cmd_set_bond_mac_addr_set,
+				(void *)&cmd_set_bond_mac_addr_bonding,
+				(void *)&cmd_set_bond_mac_addr_mac,
+				(void *)&cmd_set_bond_mac_addr_portnum,
+				(void *)&cmd_set_bond_mac_addr_addr,
+				NULL
+		}
+};
+
+/* *** SET LINK STATUS MONITORING POLLING PERIOD ON BONDED DEVICE *** */
+struct cmd_set_bond_mon_period_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t mon_period;
+	uint16_t port_num;
+	uint32_t period_ms;
+};
+
+static void cmd_set_bond_mon_period_parsed(void *parsed_result,
+		__rte_unused  struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bond_mon_period_result *res = parsed_result;
+	int ret;
+
+	ret = rte_eth_bond_link_monitoring_set(res->port_num, res->period_ms);
+
+	/* check the return value and print it if is < 0 */
+	if (ret < 0)
+		fprintf(stderr, "set_bond_mac_addr error: (%s)\n",
+			strerror(-ret));
+}
+
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_set =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				set, "set");
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_bonding =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				bonding, "bonding");
+static cmdline_parse_token_string_t cmd_set_bond_mon_period_mon_period =
+		TOKEN_STRING_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				mon_period,	"mon_period");
+static cmdline_parse_token_num_t cmd_set_bond_mon_period_portnum =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				port_num, RTE_UINT16);
+static cmdline_parse_token_num_t cmd_set_bond_mon_period_period_ms =
+		TOKEN_NUM_INITIALIZER(struct cmd_set_bond_mon_period_result,
+				period_ms, RTE_UINT32);
+
+static cmdline_parse_inst_t cmd_set_bond_mon_period = {
+		.f = cmd_set_bond_mon_period_parsed,
+		.data = NULL,
+		.help_str = "set bonding mon_period <port_id> <period_ms>",
+		.tokens = {
+				(void *)&cmd_set_bond_mon_period_set,
+				(void *)&cmd_set_bond_mon_period_bonding,
+				(void *)&cmd_set_bond_mon_period_mon_period,
+				(void *)&cmd_set_bond_mon_period_portnum,
+				(void *)&cmd_set_bond_mon_period_period_ms,
+				NULL
+		}
+};
+
+struct cmd_set_bonding_agg_mode_policy_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t bonding;
+	cmdline_fixed_string_t agg_mode;
+	uint16_t port_num;
+	cmdline_fixed_string_t policy;
+};
+
+static void
+cmd_set_bonding_agg_mode(void *parsed_result,
+		__rte_unused struct cmdline *cl,
+		__rte_unused void *data)
+{
+	struct cmd_set_bonding_agg_mode_policy_result *res = parsed_result;
+	uint8_t policy = AGG_BANDWIDTH;
+
+	if (!strcmp(res->policy, "bandwidth"))
+		policy = AGG_BANDWIDTH;
+	else if (!strcmp(res->policy, "stable"))
+		policy = AGG_STABLE;
+	else if (!strcmp(res->policy, "count"))
+		policy = AGG_COUNT;
+
+	rte_eth_bond_8023ad_agg_selection_set(res->port_num, policy);
+}
+
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				set, "set");
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_bonding =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				bonding, "bonding");
+
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_agg_mode =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				agg_mode, "agg_mode");
+
+static cmdline_parse_token_num_t cmd_set_bonding_agg_mode_portnum =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_agg_mode_policy_result,
+				port_num, RTE_UINT16);
+
+static cmdline_parse_token_string_t cmd_set_bonding_agg_mode_policy_string =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_balance_xmit_policy_result,
+		policy, "stable#bandwidth#count");
+
+static cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
+	.f = cmd_set_bonding_agg_mode,
+	.data = NULL,
+	.help_str = "set bonding mode IEEE802.3AD aggregator policy <port_id> <agg_name>",
+	.tokens = {
+			(void *)&cmd_set_bonding_agg_mode_set,
+			(void *)&cmd_set_bonding_agg_mode_bonding,
+			(void *)&cmd_set_bonding_agg_mode_agg_mode,
+			(void *)&cmd_set_bonding_agg_mode_portnum,
+			(void *)&cmd_set_bonding_agg_mode_policy_string,
+			NULL
+		}
+};
+
+static struct testpmd_cmdline_parser driver_parser = {
+	.ctx = (cmdline_parse_ctx_t[]) {
+		(cmdline_parse_inst_t *)&cmd_set_bonding_mode,
+		(cmdline_parse_inst_t *)&cmd_show_bonding_config,
+		(cmdline_parse_inst_t *)&cmd_show_bonding_lacp_info,
+		(cmdline_parse_inst_t *)&cmd_set_bonding_primary,
+		(cmdline_parse_inst_t *)&cmd_add_bonding_slave,
+		(cmdline_parse_inst_t *)&cmd_remove_bonding_slave,
+		(cmdline_parse_inst_t *)&cmd_create_bonded_device,
+		(cmdline_parse_inst_t *)&cmd_set_bond_mac_addr,
+		(cmdline_parse_inst_t *)&cmd_set_balance_xmit_policy,
+		(cmdline_parse_inst_t *)&cmd_set_bond_mon_period,
+		(cmdline_parse_inst_t *)&cmd_set_lacp_dedicated_queues,
+		(cmdline_parse_inst_t *)&cmd_set_bonding_agg_mode_policy,
+		NULL
+	},
+	.help = {
+		"set bonding mode (value) (port_id)\n"
+		"	Set the bonding mode on a bonded device.\n",
+
+		"show bonding config (port_id)\n"
+		"	Show the bonding config for port_id.\n",
+
+		"show bonding lacp info (port_id)\n"
+		"	Show the bonding lacp information for port_id.\n",
+
+		"set bonding primary (slave_id) (port_id)\n"
+		"	Set the primary slave for a bonded device.\n",
+
+		"add bonding slave (slave_id) (port_id)\n"
+		"	Add a slave device to a bonded device.\n",
+
+		"remove bonding slave (slave_id) (port_id)\n"
+		"	Remove a slave device from a bonded device.\n",
+
+		"create bonded device (mode) (socket)\n"
+		"	Create a new bonded device with specific bonding mode and socket.\n",
+
+		"set bonding mac_addr (port_id) (address)\n"
+		"	Set the MAC address of a bonded device.\n",
+
+		"set bonding balance_xmit_policy (port_id) (l2|l23|l34)\n"
+		"	Set the transmit balance policy for bonded device running in balance mode.\n",
+
+		"set bonding mon_period (port_id) (value)\n"
+		"	Set the bonding link status monitoring polling period in ms.\n",
+
+		"set bonding lacp dedicated_queues <port_id> (enable|disable)\n"
+		"	Enable/disable dedicated queues for LACP control traffic.\n",
+
+		"set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)\n"
+		"	Set Aggregation mode for IEEE802.3AD (mode 4)\n",
+
+		NULL
+	},
+};
+
+RTE_INIT(bonding_testpmd)
+{
+	testpmd_add_commands(&driver_parser);
+}
-- 
2.36.1


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

* [RFC PATCH v2 4/5] net/i40e: move testpmd commands
  2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
                     ` (2 preceding siblings ...)
  2022-05-18 19:46   ` [RFC PATCH v2 3/5] net/bonding: move testpmd commands David Marchand
@ 2022-05-18 19:46   ` David Marchand
  2022-05-18 19:46   ` [RFC PATCH v2 5/5] net/ixgbe: " David Marchand
  4 siblings, 0 replies; 18+ messages in thread
From: David Marchand @ 2022-05-18 19:46 UTC (permalink / raw)
  To: dev; +Cc: thomas, Xiaoyun Li, Aman Singh, Yuying Zhang, Beilei Xing

Move related specific testpmd commands into this driver directory.
While at it, fix checkpatch warnings.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since RFC v1:
- moved more i40e commands,
- fixed checkpatch warnings,

---
 app/test-pmd/cmdline.c          | 5422 ++++++++-----------------------
 app/test-pmd/config.c           |   43 -
 app/test-pmd/testpmd.h          |    2 -
 drivers/net/i40e/i40e_testpmd.c | 2718 ++++++++++++++++
 drivers/net/i40e/meson.build    |    2 +
 5 files changed, 4075 insertions(+), 4112 deletions(-)
 create mode 100644 drivers/net/i40e/i40e_testpmd.c

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 58bdf206d7..a009b2ec47 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -192,21 +192,12 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"read txd (port_id) (queue_id) (txd_id)\n"
 			"    Display a TX descriptor of a port TX queue.\n\n"
 
-			"ddp get list (port_id)\n"
-			"    Get ddp profile info list\n\n"
-
-			"ddp get info (profile_path)\n"
-			"    Get ddp profile information.\n\n"
-
 			"show vf stats (port_id) (vf_id)\n"
 			"    Display a VF's statistics.\n\n"
 
 			"clear vf stats (port_id) (vf_id)\n"
 			"    Reset a VF's statistics.\n\n"
 
-			"show port (port_id) pctype mapping\n"
-			"    Get flow ptype to pctype mapping on a port\n\n"
-
 			"show port meter stats (port_id) (meter_id) (clear)\n"
 			"    Get meter stats on a port\n\n"
 
@@ -362,9 +353,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set macsec sa (tx|rx) (port_id) (idx) (an) (pn) (key)\n"
 			"    Configure MACsec secure association (SA).\n\n"
 
-			"set vf broadcast (port_id) (vf_id) (on|off)\n"
-			"    Set VF broadcast for a VF from the PF.\n\n"
-
 			"vlan set stripq (on|off) (port_id,queue_id)\n"
 			"    Set the VLAN strip for a queue on a port.\n\n"
 
@@ -377,21 +365,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set vf vlan antispoof (port_id) (vf_id) (on|off)\n"
 			"    Set VLAN antispoof for a VF from the PF.\n\n"
 
-			"set vf vlan tag (port_id) (vf_id) (on|off)\n"
-			"    Set VLAN tag for a VF from the PF.\n\n"
-
-			"set vf tx max-bandwidth (port_id) (vf_id) (bandwidth)\n"
-			"    Set a VF's max bandwidth(Mbps).\n\n"
-
-			"set vf tc tx min-bandwidth (port_id) (vf_id) (bw1, bw2, ...)\n"
-			"    Set all TCs' min bandwidth(%%) on a VF.\n\n"
-
-			"set vf tc tx max-bandwidth (port_id) (vf_id) (tc_no) (bandwidth)\n"
-			"    Set a TC's max bandwidth(Mbps) on a VF.\n\n"
-
-			"set tx strict-link-priority (port_id) (tc_bitmap)\n"
-			"    Set some TCs' strict link priority mode on a physical port.\n\n"
-
 			"set tc tx min-bandwidth (port_id) (bw1, bw2, ...)\n"
 			"    Set all TCs' min bandwidth(%%) for all PF and VFs.\n\n"
 
@@ -520,12 +493,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set allmulti (port_id|all) (on|off)\n"
 			"    Set the allmulti mode on port_id, or all.\n\n"
 
-			"set vf promisc (port_id) (vf_id) (on|off)\n"
-			"    Set unicast promiscuous mode for a VF from the PF.\n\n"
-
-			"set vf allmulti (port_id) (vf_id) (on|off)\n"
-			"    Set multicast promiscuous mode for a VF from the PF.\n\n"
-
 			"set flow_ctrl rx (on|off) tx (on|off) (high_water)"
 			" (low_water) (pause_time) (send_xon) mac_ctrl_frame_fwd"
 			" (on|off) autoneg (on|off) (port_id)\n"
@@ -616,42 +583,9 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set link-down port (port_id)\n"
 			"	Set link down for a port.\n\n"
 
-			"ddp add (port_id) (profile_path[,backup_profile_path])\n"
-			"    Load a profile package on a port\n\n"
-
-			"ddp del (port_id) (backup_profile_path)\n"
-			"    Delete a profile package from a port\n\n"
-
-			"ptype mapping get (port_id) (valid_only)\n"
-			"    Get ptype mapping on a port\n\n"
-
-			"ptype mapping replace (port_id) (target) (mask) (pky_type)\n"
-			"    Replace target with the pkt_type in ptype mapping\n\n"
-
-			"ptype mapping reset (port_id)\n"
-			"    Reset ptype mapping on a port\n\n"
-
-			"ptype mapping update (port_id) (hw_ptype) (sw_ptype)\n"
-			"    Update a ptype mapping item on a port\n\n"
-
 			"set port (port_id) ptype_mask (ptype_mask)\n"
 			"    set packet types classification for a specific port\n\n"
 
-			"set port (port_id) queue-region region_id (value) "
-			"queue_start_index (value) queue_num (value)\n"
-			"    Set a queue region on a port\n\n"
-
-			"set port (port_id) queue-region region_id (value) "
-			"flowtype (value)\n"
-			"    Set a flowtype region index on a port\n\n"
-
-			"set port (port_id) queue-region UP (value) region_id (value)\n"
-			"    Set the mapping of User Priority to "
-			"queue region on a port\n\n"
-
-			"set port (port_id) queue-region flush (on|off)\n"
-			"    flush all queue region related configuration\n\n"
-
 			"show port meter cap (port_id)\n"
 			"    Show port meter capability information\n\n"
 
@@ -702,9 +636,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"set port meter stats mask (port_id) (mtr_id) (stats_mask)\n"
 			"    meter update stats\n\n"
 
-			"show port (port_id) queue-region\n"
-			"    show all queue region related configuration info\n\n"
-
 			"set port (port_id) fec_mode auto|off|rs|baser\n"
 			"    set fec mode for a specific port\n\n"
 
@@ -801,22 +732,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"port (port_id) (rxq|txq) (queue_id) setup\n"
 			"    Setup a rx/tx queue of port X.\n\n"
 
-			"port config (port_id) pctype mapping reset\n"
-			"    Reset flow type to pctype mapping on a port\n\n"
-
-			"port config (port_id) pctype mapping update"
-			" (pctype_id_0[,pctype_id_1]*) (flow_type_id)\n"
-			"    Update a flow type to pctype mapping item on a port\n\n"
-
-			"port config (port_id) pctype (pctype_id) hash_inset|"
-			"fdir_inset|fdir_flx_inset get|set|clear field\n"
-			" (field_idx)\n"
-			"    Configure RSS|FDIR|FDIR_FLX input set for some pctype\n\n"
-
-			"port config (port_id) pctype (pctype_id) hash_inset|"
-			"fdir_inset|fdir_flx_inset clear all"
-			"    Clear RSS|FDIR|FDIR_FLX input set completely for some pctype\n\n"
-
 			"port config (port_id) udp_tunnel_port add|rm vxlan|geneve|ecpri (udp_port)\n\n"
 			"    Add/remove UDP tunnel port for tunneling offload\n\n"
 
@@ -912,13 +827,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			"filters:\n"
 			"--------\n\n"
 
-#ifdef RTE_NET_I40E
-			"flow_director_filter (port_id) mode raw (add|del|update)"
-			" flow (flow_id) (drop|fwd) queue (queue_id)"
-			" fd_id (fd_id_value) packet (packet file name)\n"
-			"    Add/Del a raw type flow director filter.\n\n"
-#endif
-
 			"flow_director_mask (port_id) mode IP vlan (vlan_value)"
 			" src_mask (ipv4_src) (ipv6_src) (src_port)"
 			" dst_mask (ipv4_dst) (ipv6_dst) (dst_port)\n"
@@ -9090,450 +8998,6 @@ static cmdline_parse_inst_t cmd_dump_one = {
 	},
 };
 
-/* *** queue region set *** */
-struct cmd_queue_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-	cmdline_fixed_string_t queue_start_index;
-	uint8_t  queue_id;
-	cmdline_fixed_string_t queue_num;
-	uint8_t  queue_num_value;
-};
-
-static void
-cmd_queue_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_queue_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_SET;
-	region_conf.region_id = res->region_id;
-	region_conf.queue_num = res->queue_num_value;
-	region_conf.queue_start_index = res->queue_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-static cmdline_parse_token_string_t cmd_queue_region_set =
-TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-		set, "set");
-static cmdline_parse_token_string_t cmd_queue_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result, port, "port");
-static cmdline_parse_token_num_t cmd_queue_region_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_queue_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				 cmd, "queue-region");
-static cmdline_parse_token_string_t cmd_queue_region_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				region, "region_id");
-static cmdline_parse_token_num_t cmd_queue_region_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				region_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_queue_region_queue_start_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				queue_start_index, "queue_start_index");
-static cmdline_parse_token_num_t cmd_queue_region_queue_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				queue_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_queue_region_queue_num =
-	TOKEN_STRING_INITIALIZER(struct cmd_queue_region_result,
-				queue_num, "queue_num");
-static cmdline_parse_token_num_t cmd_queue_region_queue_num_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_queue_region_result,
-				queue_num_value, RTE_UINT8);
-
-static cmdline_parse_inst_t cmd_queue_region = {
-	.f = cmd_queue_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region region_id <value> "
-		"queue_start_index <value> queue_num <value>: Set a queue region",
-	.tokens = {
-		(void *)&cmd_queue_region_set,
-		(void *)&cmd_queue_region_port,
-		(void *)&cmd_queue_region_port_id,
-		(void *)&cmd_queue_region_cmd,
-		(void *)&cmd_queue_region_id,
-		(void *)&cmd_queue_region_index,
-		(void *)&cmd_queue_region_queue_start_index,
-		(void *)&cmd_queue_region_queue_id,
-		(void *)&cmd_queue_region_queue_num,
-		(void *)&cmd_queue_region_queue_num_value,
-		NULL,
-	},
-};
-
-/* *** queue region and flowtype set *** */
-struct cmd_region_flowtype_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-	cmdline_fixed_string_t flowtype;
-	uint8_t  flowtype_id;
-};
-
-static void
-cmd_region_flowtype_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_region_flowtype_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_FLOWTYPE_SET;
-	region_conf.region_id = res->region_id;
-	region_conf.hw_flowtype = res->flowtype_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-			op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "region flowtype config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-static cmdline_parse_token_string_t cmd_region_flowtype_set =
-TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				set, "set");
-static cmdline_parse_token_string_t cmd_region_flowtype_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				port, "port");
-static cmdline_parse_token_num_t cmd_region_flowtype_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_region_flowtype_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				cmd, "queue-region");
-static cmdline_parse_token_string_t cmd_region_flowtype_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				region, "region_id");
-static cmdline_parse_token_num_t cmd_region_flowtype_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				region_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_region_flowtype_flow_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_region_flowtype_result,
-				flowtype, "flowtype");
-static cmdline_parse_token_num_t cmd_region_flowtype_flow_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_region_flowtype_result,
-				flowtype_id, RTE_UINT8);
-static cmdline_parse_inst_t cmd_region_flowtype = {
-	.f = cmd_region_flowtype_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region region_id <value> "
-		"flowtype <value>: Set a flowtype region index",
-	.tokens = {
-		(void *)&cmd_region_flowtype_set,
-		(void *)&cmd_region_flowtype_port,
-		(void *)&cmd_region_flowtype_port_index,
-		(void *)&cmd_region_flowtype_cmd,
-		(void *)&cmd_region_flowtype_index,
-		(void *)&cmd_region_flowtype_id,
-		(void *)&cmd_region_flowtype_flow_index,
-		(void *)&cmd_region_flowtype_flow_id,
-		NULL,
-	},
-};
-
-/* *** User Priority (UP) to queue region (region_id) set *** */
-struct cmd_user_priority_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t user_priority;
-	uint8_t  user_priority_id;
-	cmdline_fixed_string_t region;
-	uint8_t  region_id;
-};
-
-static void
-cmd_user_priority_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_user_priority_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_USER_PRIORITY_SET;
-	region_conf.user_priority = res->user_priority_id;
-	region_conf.region_id = res->region_id;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "user_priority region config error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-static cmdline_parse_token_string_t cmd_user_priority_region_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				set, "set");
-static cmdline_parse_token_string_t cmd_user_priority_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				port, "port");
-static cmdline_parse_token_num_t cmd_user_priority_region_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_user_priority_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				cmd, "queue-region");
-static cmdline_parse_token_string_t cmd_user_priority_region_UP =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				user_priority, "UP");
-static cmdline_parse_token_num_t cmd_user_priority_region_UP_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				user_priority_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_user_priority_region_region =
-	TOKEN_STRING_INITIALIZER(struct cmd_user_priority_region_result,
-				region, "region_id");
-static cmdline_parse_token_num_t cmd_user_priority_region_region_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_user_priority_region_result,
-				region_id, RTE_UINT8);
-
-static cmdline_parse_inst_t cmd_user_priority_region = {
-	.f = cmd_user_priority_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region UP <value> "
-		"region_id <value>: Set the mapping of User Priority (UP) "
-		"to queue region (region_id) ",
-	.tokens = {
-		(void *)&cmd_user_priority_region_set,
-		(void *)&cmd_user_priority_region_port,
-		(void *)&cmd_user_priority_region_port_index,
-		(void *)&cmd_user_priority_region_cmd,
-		(void *)&cmd_user_priority_region_UP,
-		(void *)&cmd_user_priority_region_UP_id,
-		(void *)&cmd_user_priority_region_region,
-		(void *)&cmd_user_priority_region_region_id,
-		NULL,
-	},
-};
-
-/* *** flush all queue region related configuration *** */
-struct cmd_flush_queue_region_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-	cmdline_fixed_string_t flush;
-	cmdline_fixed_string_t what;
-};
-
-static void
-cmd_flush_queue_region_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_flush_queue_region_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_region_conf region_conf;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&region_conf, 0, sizeof(region_conf));
-
-	if (strcmp(res->what, "on") == 0)
-		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_ON;
-	else
-		op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_ALL_FLUSH_OFF;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-				op_type, &region_conf);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config flush error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-static cmdline_parse_token_string_t cmd_flush_queue_region_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				set, "set");
-static cmdline_parse_token_string_t cmd_flush_queue_region_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				port, "port");
-static cmdline_parse_token_num_t cmd_flush_queue_region_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_flush_queue_region_result,
-				port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_flush_queue_region_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				cmd, "queue-region");
-static cmdline_parse_token_string_t cmd_flush_queue_region_flush =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				flush, "flush");
-static cmdline_parse_token_string_t cmd_flush_queue_region_what =
-	TOKEN_STRING_INITIALIZER(struct cmd_flush_queue_region_result,
-				what, "on#off");
-
-static cmdline_parse_inst_t cmd_flush_queue_region = {
-	.f = cmd_flush_queue_region_parsed,
-	.data = NULL,
-	.help_str = "set port <port_id> queue-region flush on|off"
-		": flush all queue region related configuration",
-	.tokens = {
-		(void *)&cmd_flush_queue_region_set,
-		(void *)&cmd_flush_queue_region_port,
-		(void *)&cmd_flush_queue_region_port_index,
-		(void *)&cmd_flush_queue_region_cmd,
-		(void *)&cmd_flush_queue_region_flush,
-		(void *)&cmd_flush_queue_region_what,
-		NULL,
-	},
-};
-
-/* *** get all queue region related configuration info *** */
-struct cmd_show_queue_region_info {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t cmd;
-};
-
-static void
-cmd_show_queue_region_info_parsed(void *parsed_result,
-			__rte_unused struct cmdline *cl,
-			__rte_unused void *data)
-{
-	struct cmd_show_queue_region_info *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_queue_regions rte_pmd_regions;
-	enum rte_pmd_i40e_queue_region_op op_type;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	memset(&rte_pmd_regions, 0, sizeof(rte_pmd_regions));
-
-	op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_INFO_GET;
-
-	ret = rte_pmd_i40e_rss_queue_region_conf(res->port_id,
-					op_type, &rte_pmd_regions);
-
-	port_queue_region_info_display(res->port_id, &rte_pmd_regions);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented or supported\n");
-		break;
-	default:
-		fprintf(stderr, "queue region config info show error: (%s)\n",
-			strerror(-ret));
-	}
-}
-
-static cmdline_parse_token_string_t cmd_show_queue_region_info_get =
-TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				show, "show");
-static cmdline_parse_token_string_t cmd_show_queue_region_info_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				port, "port");
-static cmdline_parse_token_num_t cmd_show_queue_region_info_port_index =
-	TOKEN_NUM_INITIALIZER(struct cmd_show_queue_region_info,
-				port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_show_queue_region_info_cmd =
-	TOKEN_STRING_INITIALIZER(struct cmd_show_queue_region_info,
-				cmd, "queue-region");
-
-static cmdline_parse_inst_t cmd_show_queue_region_info_all = {
-	.f = cmd_show_queue_region_info_parsed,
-	.data = NULL,
-	.help_str = "show port <port_id> queue-region"
-		": show all queue region related configuration info",
-	.tokens = {
-		(void *)&cmd_show_queue_region_info_get,
-		(void *)&cmd_show_queue_region_info_port,
-		(void *)&cmd_show_queue_region_info_port_index,
-		(void *)&cmd_show_queue_region_info_cmd,
-		NULL,
-	},
-};
-
 /* *** Filters Control *** */
 
 #define IPV4_ADDR_TO_UINT(ip_addr, ip) \
@@ -9558,197 +9022,9 @@ do { \
 	} \
 } while (0)
 
-#ifdef RTE_NET_I40E
-
-static uint16_t
-str2flowtype(char *string)
-{
-	uint8_t i = 0;
-	static const struct {
-		char str[32];
-		uint16_t type;
-	} flowtype_str[] = {
-		{"raw", RTE_ETH_FLOW_RAW},
-		{"ipv4", RTE_ETH_FLOW_IPV4},
-		{"ipv4-frag", RTE_ETH_FLOW_FRAG_IPV4},
-		{"ipv4-tcp", RTE_ETH_FLOW_NONFRAG_IPV4_TCP},
-		{"ipv4-udp", RTE_ETH_FLOW_NONFRAG_IPV4_UDP},
-		{"ipv4-sctp", RTE_ETH_FLOW_NONFRAG_IPV4_SCTP},
-		{"ipv4-other", RTE_ETH_FLOW_NONFRAG_IPV4_OTHER},
-		{"ipv6", RTE_ETH_FLOW_IPV6},
-		{"ipv6-frag", RTE_ETH_FLOW_FRAG_IPV6},
-		{"ipv6-tcp", RTE_ETH_FLOW_NONFRAG_IPV6_TCP},
-		{"ipv6-udp", RTE_ETH_FLOW_NONFRAG_IPV6_UDP},
-		{"ipv6-sctp", RTE_ETH_FLOW_NONFRAG_IPV6_SCTP},
-		{"ipv6-other", RTE_ETH_FLOW_NONFRAG_IPV6_OTHER},
-		{"l2_payload", RTE_ETH_FLOW_L2_PAYLOAD},
-		{"ipv6-ex", RTE_ETH_FLOW_IPV6_EX},
-		{"ipv6-tcp-ex", RTE_ETH_FLOW_IPV6_TCP_EX},
-		{"ipv6-udp-ex", RTE_ETH_FLOW_IPV6_UDP_EX},
-		{"gtpu", RTE_ETH_FLOW_GTPU},
-	};
-
-	for (i = 0; i < RTE_DIM(flowtype_str); i++) {
-		if (!strcmp(flowtype_str[i].str, string))
-			return flowtype_str[i].type;
-	}
-
-	if (isdigit(string[0]) && atoi(string) > 0 && atoi(string) < 64)
-		return (uint16_t)atoi(string);
-
-	return RTE_ETH_FLOW_UNKNOWN;
-}
-
-/* *** deal with flow director filter *** */
-struct cmd_flow_director_result {
-	cmdline_fixed_string_t flow_director_filter;
-	portid_t port_id;
-	cmdline_fixed_string_t mode;
-	cmdline_fixed_string_t mode_value;
-	cmdline_fixed_string_t ops;
-	cmdline_fixed_string_t flow;
-	cmdline_fixed_string_t flow_type;
-	cmdline_fixed_string_t drop;
-	cmdline_fixed_string_t queue;
-	uint16_t  queue_id;
-	cmdline_fixed_string_t fd_id;
-	uint32_t  fd_id_value;
-	cmdline_fixed_string_t packet;
-	char filepath[];
-};
-
-static void
-cmd_flow_director_filter_parsed(void *parsed_result,
-			  __rte_unused struct cmdline *cl,
-			  __rte_unused void *data)
-{
-	struct cmd_flow_director_result *res = parsed_result;
-	int ret = 0;
-	struct rte_pmd_i40e_flow_type_mapping
-			mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
-	struct rte_pmd_i40e_pkt_template_conf conf;
-	uint16_t flow_type = str2flowtype(res->flow_type);
-	uint16_t i, port = res->port_id;
-	uint8_t add;
-
-	memset(&conf, 0, sizeof(conf));
-
-	if (flow_type == RTE_ETH_FLOW_UNKNOWN) {
-		fprintf(stderr, "Invalid flow type specified.\n");
-		return;
-	}
-	ret = rte_pmd_i40e_flow_type_mapping_get(res->port_id,
-						 mapping);
-	if (ret)
-		return;
-	if (mapping[flow_type].pctype == 0ULL) {
-		fprintf(stderr, "Invalid flow type specified.\n");
-		return;
-	}
-	for (i = 0; i < RTE_PMD_I40E_PCTYPE_MAX; i++) {
-		if (mapping[flow_type].pctype & (1ULL << i)) {
-			conf.input.pctype = i;
-			break;
-		}
-	}
-
-	conf.input.packet = open_file(res->filepath,
-				&conf.input.length);
-	if (!conf.input.packet)
-		return;
-	if (!strcmp(res->drop, "drop"))
-		conf.action.behavior =
-			RTE_PMD_I40E_PKT_TEMPLATE_REJECT;
-	else
-		conf.action.behavior =
-			RTE_PMD_I40E_PKT_TEMPLATE_ACCEPT;
-	conf.action.report_status =
-			RTE_PMD_I40E_PKT_TEMPLATE_REPORT_ID;
-	conf.action.rx_queue = res->queue_id;
-	conf.soft_id = res->fd_id_value;
-	add  = strcmp(res->ops, "del") ? 1 : 0;
-	ret = rte_pmd_i40e_flow_add_del_packet_template(port,
-							&conf,
-							add);
-	if (ret < 0)
-		fprintf(stderr, "flow director config error: (%s)\n",
-			strerror(-ret));
-	close_file(conf.input.packet);
-}
-
-static cmdline_parse_token_string_t cmd_flow_director_filter =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 flow_director_filter, "flow_director_filter");
-static cmdline_parse_token_num_t cmd_flow_director_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_flow_director_ops =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 ops, "add#del#update");
-static cmdline_parse_token_string_t cmd_flow_director_flow =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 flow, "flow");
-static cmdline_parse_token_string_t cmd_flow_director_flow_type =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-		flow_type, NULL);
-static cmdline_parse_token_string_t cmd_flow_director_drop =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 drop, "drop#fwd");
-static cmdline_parse_token_string_t cmd_flow_director_queue =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 queue, "queue");
-static cmdline_parse_token_num_t cmd_flow_director_queue_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      queue_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_flow_director_fd_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 fd_id, "fd_id");
-static cmdline_parse_token_num_t cmd_flow_director_fd_id_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_flow_director_result,
-			      fd_id_value, RTE_UINT32);
-
-static cmdline_parse_token_string_t cmd_flow_director_mode =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 mode, "mode");
-static cmdline_parse_token_string_t cmd_flow_director_mode_raw =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 mode_value, "raw");
-static cmdline_parse_token_string_t cmd_flow_director_packet =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 packet, "packet");
-static cmdline_parse_token_string_t cmd_flow_director_filepath =
-	TOKEN_STRING_INITIALIZER(struct cmd_flow_director_result,
-				 filepath, NULL);
-
-static cmdline_parse_inst_t cmd_add_del_raw_flow_director = {
-	.f = cmd_flow_director_filter_parsed,
-	.data = NULL,
-	.help_str = "flow_director_filter ... : Add or delete a raw flow "
-		"director entry on NIC",
-	.tokens = {
-		(void *)&cmd_flow_director_filter,
-		(void *)&cmd_flow_director_port_id,
-		(void *)&cmd_flow_director_mode,
-		(void *)&cmd_flow_director_mode_raw,
-		(void *)&cmd_flow_director_ops,
-		(void *)&cmd_flow_director_flow,
-		(void *)&cmd_flow_director_flow_type,
-		(void *)&cmd_flow_director_drop,
-		(void *)&cmd_flow_director_queue,
-		(void *)&cmd_flow_director_queue_id,
-		(void *)&cmd_flow_director_fd_id,
-		(void *)&cmd_flow_director_fd_id_value,
-		(void *)&cmd_flow_director_packet,
-		(void *)&cmd_flow_director_filepath,
-		NULL,
-	},
-};
-
-#endif /* RTE_NET_I40E */
-
-/* *** deal with flow director mask *** */
-struct cmd_flow_director_mask_result {
-	cmdline_fixed_string_t flow_director_mask;
+/* *** deal with flow director mask *** */
+struct cmd_flow_director_mask_result {
+	cmdline_fixed_string_t flow_director_mask;
 	portid_t port_id;
 	cmdline_fixed_string_t mode;
 	cmdline_fixed_string_t mode_value;
@@ -11355,249 +10631,121 @@ static cmdline_parse_inst_t cmd_set_macsec_sa = {
 	},
 };
 
-/* VF unicast promiscuous mode configuration */
-
-/* Common result structure for VF unicast promiscuous mode */
-struct cmd_vf_promisc_result {
+/* Common definition of VF and TC TX bandwidth configuration */
+struct cmd_vf_tc_bw_result {
 	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t promisc;
+	cmdline_fixed_string_t tc;
+	cmdline_fixed_string_t tx;
+	cmdline_fixed_string_t min_bw;
 	portid_t port_id;
-	uint32_t vf_id;
-	cmdline_fixed_string_t on_off;
+	cmdline_fixed_string_t bw_list;
 };
 
-/* Common CLI fields for VF unicast promiscuous mode enable disable */
-static cmdline_parse_token_string_t cmd_vf_promisc_set =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_set =
 	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_promisc_result,
+		(struct cmd_vf_tc_bw_result,
 		 set, "set");
-static cmdline_parse_token_string_t cmd_vf_promisc_vf =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tc =
 	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_promisc_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_vf_promisc_promisc =
+		(struct cmd_vf_tc_bw_result,
+		 tc, "tc");
+static cmdline_parse_token_string_t cmd_vf_tc_bw_tx =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_vf_tc_bw_result,
+		 tx, "tx");
+static cmdline_parse_token_string_t cmd_vf_tc_bw_min_bw =
 	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_promisc_result,
-		 promisc, "promisc");
-static cmdline_parse_token_num_t cmd_vf_promisc_port_id =
+		(struct cmd_vf_tc_bw_result,
+		 min_bw, "min-bandwidth");
+static cmdline_parse_token_num_t cmd_vf_tc_bw_port_id =
 	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_promisc_result,
+		(struct cmd_vf_tc_bw_result,
 		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_vf_promisc_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_promisc_result,
-		 vf_id, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_vf_promisc_on_off =
+static cmdline_parse_token_string_t cmd_vf_tc_bw_bw_list =
 	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_promisc_result,
-		 on_off, "on#off");
+		(struct cmd_vf_tc_bw_result,
+		 bw_list, NULL);
 
-static void
-cmd_set_vf_promisc_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
+static int
+vf_tc_min_bw_parse_bw_list(uint8_t *bw_list,
+			   uint8_t *tc_num,
+			   char *str)
 {
-	struct cmd_vf_promisc_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	__rte_unused int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_unicast_promisc(res->port_id,
-						  res->vf_id, is_on);
-#endif
+	uint32_t size;
+	const char *p, *p0 = str;
+	char s[256];
+	char *end;
+	char *str_fld[16];
+	uint16_t i;
+	int ret;
 
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d\n", res->vf_id);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	p = strchr(p0, '(');
+	if (p == NULL) {
+		fprintf(stderr,
+			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
+		return -1;
 	}
-}
-
-static cmdline_parse_inst_t cmd_set_vf_promisc = {
-	.f = cmd_set_vf_promisc_parsed,
-	.data = NULL,
-	.help_str = "set vf promisc <port_id> <vf_id> on|off: "
-		"Set unicast promiscuous mode for a VF from the PF",
-	.tokens = {
-		(void *)&cmd_vf_promisc_set,
-		(void *)&cmd_vf_promisc_vf,
-		(void *)&cmd_vf_promisc_promisc,
-		(void *)&cmd_vf_promisc_port_id,
-		(void *)&cmd_vf_promisc_vf_id,
-		(void *)&cmd_vf_promisc_on_off,
-		NULL,
-	},
-};
-
-/* VF multicast promiscuous mode configuration */
-
-/* Common result structure for VF multicast promiscuous mode */
-struct cmd_vf_allmulti_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t allmulti;
-	portid_t port_id;
-	uint32_t vf_id;
-	cmdline_fixed_string_t on_off;
-};
+	p++;
+	p0 = strchr(p, ')');
+	if (p0 == NULL) {
+		fprintf(stderr,
+			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
+		return -1;
+	}
+	size = p0 - p;
+	if (size >= sizeof(s)) {
+		fprintf(stderr,
+			"The string size exceeds the internal buffer size\n");
+		return -1;
+	}
+	snprintf(s, sizeof(s), "%.*s", size, p);
+	ret = rte_strsplit(s, sizeof(s), str_fld, 16, ',');
+	if (ret <= 0) {
+		fprintf(stderr, "Failed to get the bandwidth list.\n");
+		return -1;
+	}
+	*tc_num = ret;
+	for (i = 0; i < ret; i++)
+		bw_list[i] = (uint8_t)strtoul(str_fld[i], &end, 0);
 
-/* Common CLI fields for VF multicast promiscuous mode enable disable */
-static cmdline_parse_token_string_t cmd_vf_allmulti_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 set, "set");
-static cmdline_parse_token_string_t cmd_vf_allmulti_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_vf_allmulti_allmulti =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 allmulti, "allmulti");
-static cmdline_parse_token_num_t cmd_vf_allmulti_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_vf_allmulti_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 vf_id, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_vf_allmulti_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_allmulti_result,
-		 on_off, "on#off");
+	return 0;
+}
 
 static void
-cmd_set_vf_allmulti_parsed(
+cmd_tc_min_bw_parsed(
 	void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_vf_allmulti_result *res = parsed_result;
+	struct cmd_vf_tc_bw_result *res = parsed_result;
+	struct rte_port *port;
+	uint8_t tc_num;
+	uint8_t bw[16];
 	int ret = -ENOTSUP;
 
-	__rte_unused int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
-
 	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
 		return;
 
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_multicast_promisc(res->port_id,
-						    res->vf_id, is_on);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d\n", res->vf_id);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	port = &ports[res->port_id];
+	/** Check if the port is not started **/
+	if (port->port_status != RTE_PORT_STOPPED) {
+		fprintf(stderr, "Please stop port %d first\n", res->port_id);
+		return;
 	}
-}
-
-static cmdline_parse_inst_t cmd_set_vf_allmulti = {
-	.f = cmd_set_vf_allmulti_parsed,
-	.data = NULL,
-	.help_str = "set vf allmulti <port_id> <vf_id> on|off: "
-		"Set multicast promiscuous mode for a VF from the PF",
-	.tokens = {
-		(void *)&cmd_vf_allmulti_set,
-		(void *)&cmd_vf_allmulti_vf,
-		(void *)&cmd_vf_allmulti_allmulti,
-		(void *)&cmd_vf_allmulti_port_id,
-		(void *)&cmd_vf_allmulti_vf_id,
-		(void *)&cmd_vf_allmulti_on_off,
-		NULL,
-	},
-};
-
-/* vf broadcast mode configuration */
-
-/* Common result structure for vf broadcast */
-struct cmd_set_vf_broadcast_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t broadcast;
-	portid_t port_id;
-	uint16_t vf_id;
-	cmdline_fixed_string_t on_off;
-};
-
-/* Common CLI fields for vf broadcast enable disable */
-static cmdline_parse_token_string_t cmd_set_vf_broadcast_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 set, "set");
-static cmdline_parse_token_string_t cmd_set_vf_broadcast_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_set_vf_broadcast_broadcast =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 broadcast, "broadcast");
-static cmdline_parse_token_num_t cmd_set_vf_broadcast_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_set_vf_broadcast_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 vf_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_vf_broadcast_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_broadcast_result,
-		 on_off, "on#off");
-
-static void
-cmd_set_vf_broadcast_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_vf_broadcast_result *res = parsed_result;
-	int ret = -ENOTSUP;
 
-	__rte_unused int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+	ret = vf_tc_min_bw_parse_bw_list(bw, &tc_num, res->bw_list);
+	if (ret)
 		return;
 
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_broadcast(res->port_id,
-					    res->vf_id, is_on);
+#ifdef RTE_NET_IXGBE
+	ret = rte_pmd_ixgbe_set_tc_bw_alloc(res->port_id, tc_num, bw);
 #endif
 
 	switch (ret) {
 	case 0:
 		break;
 	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d or is_on %d\n",
-			res->vf_id, is_on);
+		fprintf(stderr, "invalid bandwidth\n");
 		break;
 	case -ENODEV:
 		fprintf(stderr, "invalid port_id %d\n", res->port_id);
@@ -11610,3200 +10758,1434 @@ cmd_set_vf_broadcast_parsed(
 	}
 }
 
-static cmdline_parse_inst_t cmd_set_vf_broadcast = {
-	.f = cmd_set_vf_broadcast_parsed,
+static cmdline_parse_inst_t cmd_tc_min_bw = {
+	.f = cmd_tc_min_bw_parsed,
 	.data = NULL,
-	.help_str = "set vf broadcast <port_id> <vf_id> on|off",
+	.help_str = "set tc tx min-bandwidth <port_id> <bw1, bw2, ...>",
 	.tokens = {
-		(void *)&cmd_set_vf_broadcast_set,
-		(void *)&cmd_set_vf_broadcast_vf,
-		(void *)&cmd_set_vf_broadcast_broadcast,
-		(void *)&cmd_set_vf_broadcast_port_id,
-		(void *)&cmd_set_vf_broadcast_vf_id,
-		(void *)&cmd_set_vf_broadcast_on_off,
+		(void *)&cmd_vf_tc_bw_set,
+		(void *)&cmd_vf_tc_bw_tc,
+		(void *)&cmd_vf_tc_bw_tx,
+		(void *)&cmd_vf_tc_bw_min_bw,
+		(void *)&cmd_vf_tc_bw_port_id,
+		(void *)&cmd_vf_tc_bw_bw_list,
 		NULL,
 	},
 };
 
-/* vf vlan tag configuration */
-
-/* Common result structure for vf vlan tag */
-struct cmd_set_vf_vlan_tag_result {
+/** Set VXLAN encapsulation details */
+struct cmd_set_vxlan_result {
 	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t vlan;
-	cmdline_fixed_string_t tag;
-	portid_t port_id;
-	uint16_t vf_id;
-	cmdline_fixed_string_t on_off;
-};
-
-/* Common CLI fields for vf vlan tag enable disable */
-static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 set, "set");
-static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_vlan =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 vlan, "vlan");
-static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_tag =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 tag, "tag");
-static cmdline_parse_token_num_t cmd_set_vf_vlan_tag_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_set_vf_vlan_tag_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 vf_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_vf_vlan_tag_on_off =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_set_vf_vlan_tag_result,
-		 on_off, "on#off");
-
-static void
-cmd_set_vf_vlan_tag_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_vf_vlan_tag_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	__rte_unused int is_on = (strcmp(res->on_off, "on") == 0) ? 1 : 0;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_vlan_tag(res->port_id,
-					   res->vf_id, is_on);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d or is_on %d\n",
-			res->vf_id, is_on);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_set_vf_vlan_tag = {
-	.f = cmd_set_vf_vlan_tag_parsed,
-	.data = NULL,
-	.help_str = "set vf vlan tag <port_id> <vf_id> on|off",
-	.tokens = {
-		(void *)&cmd_set_vf_vlan_tag_set,
-		(void *)&cmd_set_vf_vlan_tag_vf,
-		(void *)&cmd_set_vf_vlan_tag_vlan,
-		(void *)&cmd_set_vf_vlan_tag_tag,
-		(void *)&cmd_set_vf_vlan_tag_port_id,
-		(void *)&cmd_set_vf_vlan_tag_vf_id,
-		(void *)&cmd_set_vf_vlan_tag_on_off,
-		NULL,
-	},
-};
-
-/* Common definition of VF and TC TX bandwidth configuration */
-struct cmd_vf_tc_bw_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t tc;
-	cmdline_fixed_string_t tx;
-	cmdline_fixed_string_t min_bw;
-	cmdline_fixed_string_t max_bw;
-	cmdline_fixed_string_t strict_link_prio;
-	portid_t port_id;
-	uint16_t vf_id;
-	uint8_t tc_no;
-	uint32_t bw;
-	cmdline_fixed_string_t bw_list;
-	uint8_t tc_map;
-};
-
-static cmdline_parse_token_string_t cmd_vf_tc_bw_set =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 set, "set");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_tc =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 tc, "tc");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_tx =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 tx, "tx");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_strict_link_prio =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 strict_link_prio, "strict-link-priority");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_min_bw =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 min_bw, "min-bandwidth");
-static cmdline_parse_token_string_t cmd_vf_tc_bw_max_bw =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 max_bw, "max-bandwidth");
-static cmdline_parse_token_num_t cmd_vf_tc_bw_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_vf_tc_bw_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 vf_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_vf_tc_bw_tc_no =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 tc_no, RTE_UINT8);
-static cmdline_parse_token_num_t cmd_vf_tc_bw_bw =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 bw, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_vf_tc_bw_bw_list =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 bw_list, NULL);
-static cmdline_parse_token_num_t cmd_vf_tc_bw_tc_map =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_vf_tc_bw_result,
-		 tc_map, RTE_UINT8);
-
-/* VF max bandwidth setting */
-static void
-cmd_vf_max_bw_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_max_bw(res->port_id,
-					 res->vf_id, res->bw);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d or bandwidth %d\n",
-			res->vf_id, res->bw);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_vf_max_bw = {
-	.f = cmd_vf_max_bw_parsed,
-	.data = NULL,
-	.help_str = "set vf tx max-bandwidth <port_id> <vf_id> <bandwidth>",
-	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_vf,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_max_bw,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_vf_id,
-		(void *)&cmd_vf_tc_bw_bw,
-		NULL,
-	},
-};
-
-static int
-vf_tc_min_bw_parse_bw_list(uint8_t *bw_list,
-			   uint8_t *tc_num,
-			   char *str)
-{
-	uint32_t size;
-	const char *p, *p0 = str;
-	char s[256];
-	char *end;
-	char *str_fld[16];
-	uint16_t i;
-	int ret;
-
-	p = strchr(p0, '(');
-	if (p == NULL) {
-		fprintf(stderr,
-			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
-		return -1;
-	}
-	p++;
-	p0 = strchr(p, ')');
-	if (p0 == NULL) {
-		fprintf(stderr,
-			"The bandwidth-list should be '(bw1, bw2, ...)'\n");
-		return -1;
-	}
-	size = p0 - p;
-	if (size >= sizeof(s)) {
-		fprintf(stderr,
-			"The string size exceeds the internal buffer size\n");
-		return -1;
-	}
-	snprintf(s, sizeof(s), "%.*s", size, p);
-	ret = rte_strsplit(s, sizeof(s), str_fld, 16, ',');
-	if (ret <= 0) {
-		fprintf(stderr, "Failed to get the bandwidth list.\n");
-		return -1;
-	}
-	*tc_num = ret;
-	for (i = 0; i < ret; i++)
-		bw_list[i] = (uint8_t)strtoul(str_fld[i], &end, 0);
-
-	return 0;
-}
-
-/* TC min bandwidth setting */
-static void
-cmd_vf_tc_min_bw_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	uint8_t tc_num;
-	uint8_t bw[16];
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-	ret = vf_tc_min_bw_parse_bw_list(bw, &tc_num, res->bw_list);
-	if (ret)
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_tc_bw_alloc(res->port_id, res->vf_id,
-					      tc_num, bw);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d or bandwidth\n", res->vf_id);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_vf_tc_min_bw = {
-	.f = cmd_vf_tc_min_bw_parsed,
-	.data = NULL,
-	.help_str = "set vf tc tx min-bandwidth <port_id> <vf_id>"
-		    " <bw1, bw2, ...>",
-	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_vf,
-		(void *)&cmd_vf_tc_bw_tc,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_min_bw,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_vf_id,
-		(void *)&cmd_vf_tc_bw_bw_list,
-		NULL,
-	},
-};
-
-static void
-cmd_tc_min_bw_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	struct rte_port *port;
-	uint8_t tc_num;
-	uint8_t bw[16];
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-	port = &ports[res->port_id];
-	/** Check if the port is not started **/
-	if (port->port_status != RTE_PORT_STOPPED) {
-		fprintf(stderr, "Please stop port %d first\n", res->port_id);
-		return;
-	}
-
-	ret = vf_tc_min_bw_parse_bw_list(bw, &tc_num, res->bw_list);
-	if (ret)
-		return;
-
-#ifdef RTE_NET_IXGBE
-	ret = rte_pmd_ixgbe_set_tc_bw_alloc(res->port_id, tc_num, bw);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid bandwidth\n");
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_tc_min_bw = {
-	.f = cmd_tc_min_bw_parsed,
-	.data = NULL,
-	.help_str = "set tc tx min-bandwidth <port_id> <bw1, bw2, ...>",
-	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_tc,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_min_bw,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_bw_list,
-		NULL,
-	},
-};
-
-/* TC max bandwidth setting */
-static void
-cmd_vf_tc_max_bw_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_vf_tc_max_bw(res->port_id, res->vf_id,
-					    res->tc_no, res->bw);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr,
-			"invalid vf_id %d, tc_no %d or bandwidth %d\n",
-			res->vf_id, res->tc_no, res->bw);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_vf_tc_max_bw = {
-	.f = cmd_vf_tc_max_bw_parsed,
-	.data = NULL,
-	.help_str = "set vf tc tx max-bandwidth <port_id> <vf_id> <tc_no>"
-		    " <bandwidth>",
-	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_vf,
-		(void *)&cmd_vf_tc_bw_tc,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_max_bw,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_vf_id,
-		(void *)&cmd_vf_tc_bw_tc_no,
-		(void *)&cmd_vf_tc_bw_bw,
-		NULL,
-	},
-};
-
-/** Set VXLAN encapsulation details */
-struct cmd_set_vxlan_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t vxlan;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-	uint32_t vni;
-	uint16_t udp_src;
-	uint16_t udp_dst;
-	cmdline_ipaddr_t ip_src;
-	cmdline_ipaddr_t ip_dst;
-	uint16_t tci;
-	uint8_t tos;
-	uint8_t ttl;
-	struct rte_ether_addr eth_src;
-	struct rte_ether_addr eth_dst;
-};
-
-static cmdline_parse_token_string_t cmd_set_vxlan_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, set, "set");
-static cmdline_parse_token_string_t cmd_set_vxlan_vxlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, "vxlan");
-static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
-				 "vxlan-tos-ttl");
-static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
-				 "vxlan-with-vlan");
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "ip-version");
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, ip_version,
-				 "ipv4#ipv6");
-static cmdline_parse_token_string_t cmd_set_vxlan_vni =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "vni");
-static cmdline_parse_token_num_t cmd_set_vxlan_vni_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, vni, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_vxlan_udp_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "udp-src");
-static cmdline_parse_token_num_t cmd_set_vxlan_udp_src_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_src, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_vxlan_udp_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "udp-dst");
-static cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_dst, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "ip-tos");
-static cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tos, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "ip-ttl");
-static cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, ttl, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "ip-src");
-static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_src_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_src);
-static cmdline_parse_token_string_t cmd_set_vxlan_ip_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "ip-dst");
-static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_dst_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_dst);
-static cmdline_parse_token_string_t cmd_set_vxlan_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "vlan-tci");
-static cmdline_parse_token_num_t cmd_set_vxlan_vlan_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tci, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_vxlan_eth_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "eth-src");
-static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_src_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_src);
-static cmdline_parse_token_string_t cmd_set_vxlan_eth_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
-				 "eth-dst");
-static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_dst_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_dst);
-
-static void cmd_set_vxlan_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_vxlan_result *res = parsed_result;
-	union {
-		uint32_t vxlan_id;
-		uint8_t vni[4];
-	} id = {
-		.vxlan_id = rte_cpu_to_be_32(res->vni) & RTE_BE32(0x00ffffff),
-	};
-
-	vxlan_encap_conf.select_tos_ttl = 0;
-	if (strcmp(res->vxlan, "vxlan") == 0)
-		vxlan_encap_conf.select_vlan = 0;
-	else if (strcmp(res->vxlan, "vxlan-with-vlan") == 0)
-		vxlan_encap_conf.select_vlan = 1;
-	else if (strcmp(res->vxlan, "vxlan-tos-ttl") == 0) {
-		vxlan_encap_conf.select_vlan = 0;
-		vxlan_encap_conf.select_tos_ttl = 1;
-	}
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		vxlan_encap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		vxlan_encap_conf.select_ipv4 = 0;
-	else
-		return;
-	rte_memcpy(vxlan_encap_conf.vni, &id.vni[1], 3);
-	vxlan_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
-	vxlan_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
-	vxlan_encap_conf.ip_tos = res->tos;
-	vxlan_encap_conf.ip_ttl = res->ttl;
-	if (vxlan_encap_conf.select_ipv4) {
-		IPV4_ADDR_TO_UINT(res->ip_src, vxlan_encap_conf.ipv4_src);
-		IPV4_ADDR_TO_UINT(res->ip_dst, vxlan_encap_conf.ipv4_dst);
-	} else {
-		IPV6_ADDR_TO_ARRAY(res->ip_src, vxlan_encap_conf.ipv6_src);
-		IPV6_ADDR_TO_ARRAY(res->ip_dst, vxlan_encap_conf.ipv6_dst);
-	}
-	if (vxlan_encap_conf.select_vlan)
-		vxlan_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(vxlan_encap_conf.eth_src, res->eth_src.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(vxlan_encap_conf.eth_dst, res->eth_dst.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-}
-
-static cmdline_parse_inst_t cmd_set_vxlan = {
-	.f = cmd_set_vxlan_parsed,
-	.data = NULL,
-	.help_str = "set vxlan ip-version ipv4|ipv6 vni <vni> udp-src"
-		" <udp-src> udp-dst <udp-dst> ip-src <ip-src> ip-dst <ip-dst>"
-		" eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_vxlan_set,
-		(void *)&cmd_set_vxlan_vxlan,
-		(void *)&cmd_set_vxlan_ip_version,
-		(void *)&cmd_set_vxlan_ip_version_value,
-		(void *)&cmd_set_vxlan_vni,
-		(void *)&cmd_set_vxlan_vni_value,
-		(void *)&cmd_set_vxlan_udp_src,
-		(void *)&cmd_set_vxlan_udp_src_value,
-		(void *)&cmd_set_vxlan_udp_dst,
-		(void *)&cmd_set_vxlan_udp_dst_value,
-		(void *)&cmd_set_vxlan_ip_src,
-		(void *)&cmd_set_vxlan_ip_src_value,
-		(void *)&cmd_set_vxlan_ip_dst,
-		(void *)&cmd_set_vxlan_ip_dst_value,
-		(void *)&cmd_set_vxlan_eth_src,
-		(void *)&cmd_set_vxlan_eth_src_value,
-		(void *)&cmd_set_vxlan_eth_dst,
-		(void *)&cmd_set_vxlan_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_vxlan_tos_ttl = {
-	.f = cmd_set_vxlan_parsed,
-	.data = NULL,
-	.help_str = "set vxlan-tos-ttl ip-version ipv4|ipv6 vni <vni> udp-src"
-		" <udp-src> udp-dst <udp-dst> ip-tos <ip-tos> ip-ttl <ip-ttl>"
-		" ip-src <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
-		" eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_vxlan_set,
-		(void *)&cmd_set_vxlan_vxlan_tos_ttl,
-		(void *)&cmd_set_vxlan_ip_version,
-		(void *)&cmd_set_vxlan_ip_version_value,
-		(void *)&cmd_set_vxlan_vni,
-		(void *)&cmd_set_vxlan_vni_value,
-		(void *)&cmd_set_vxlan_udp_src,
-		(void *)&cmd_set_vxlan_udp_src_value,
-		(void *)&cmd_set_vxlan_udp_dst,
-		(void *)&cmd_set_vxlan_udp_dst_value,
-		(void *)&cmd_set_vxlan_ip_tos,
-		(void *)&cmd_set_vxlan_ip_tos_value,
-		(void *)&cmd_set_vxlan_ip_ttl,
-		(void *)&cmd_set_vxlan_ip_ttl_value,
-		(void *)&cmd_set_vxlan_ip_src,
-		(void *)&cmd_set_vxlan_ip_src_value,
-		(void *)&cmd_set_vxlan_ip_dst,
-		(void *)&cmd_set_vxlan_ip_dst_value,
-		(void *)&cmd_set_vxlan_eth_src,
-		(void *)&cmd_set_vxlan_eth_src_value,
-		(void *)&cmd_set_vxlan_eth_dst,
-		(void *)&cmd_set_vxlan_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_vxlan_with_vlan = {
-	.f = cmd_set_vxlan_parsed,
-	.data = NULL,
-	.help_str = "set vxlan-with-vlan ip-version ipv4|ipv6 vni <vni>"
-		" udp-src <udp-src> udp-dst <udp-dst> ip-src <ip-src> ip-dst"
-		" <ip-dst> vlan-tci <vlan-tci> eth-src <eth-src> eth-dst"
-		" <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_vxlan_set,
-		(void *)&cmd_set_vxlan_vxlan_with_vlan,
-		(void *)&cmd_set_vxlan_ip_version,
-		(void *)&cmd_set_vxlan_ip_version_value,
-		(void *)&cmd_set_vxlan_vni,
-		(void *)&cmd_set_vxlan_vni_value,
-		(void *)&cmd_set_vxlan_udp_src,
-		(void *)&cmd_set_vxlan_udp_src_value,
-		(void *)&cmd_set_vxlan_udp_dst,
-		(void *)&cmd_set_vxlan_udp_dst_value,
-		(void *)&cmd_set_vxlan_ip_src,
-		(void *)&cmd_set_vxlan_ip_src_value,
-		(void *)&cmd_set_vxlan_ip_dst,
-		(void *)&cmd_set_vxlan_ip_dst_value,
-		(void *)&cmd_set_vxlan_vlan,
-		(void *)&cmd_set_vxlan_vlan_value,
-		(void *)&cmd_set_vxlan_eth_src,
-		(void *)&cmd_set_vxlan_eth_src_value,
-		(void *)&cmd_set_vxlan_eth_dst,
-		(void *)&cmd_set_vxlan_eth_dst_value,
-		NULL,
-	},
-};
-
-/** Set NVGRE encapsulation details */
-struct cmd_set_nvgre_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t nvgre;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t tni;
-	cmdline_ipaddr_t ip_src;
-	cmdline_ipaddr_t ip_dst;
-	uint16_t tci;
-	struct rte_ether_addr eth_src;
-	struct rte_ether_addr eth_dst;
-};
-
-static cmdline_parse_token_string_t cmd_set_nvgre_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, set, "set");
-static cmdline_parse_token_string_t cmd_set_nvgre_nvgre =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre, "nvgre");
-static cmdline_parse_token_string_t cmd_set_nvgre_nvgre_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre,
-				 "nvgre-with-vlan");
-static cmdline_parse_token_string_t cmd_set_nvgre_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "ip-version");
-static cmdline_parse_token_string_t cmd_set_nvgre_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, ip_version,
-				 "ipv4#ipv6");
-static cmdline_parse_token_string_t cmd_set_nvgre_tni =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "tni");
-static cmdline_parse_token_num_t cmd_set_nvgre_tni_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tni, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_nvgre_ip_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "ip-src");
-static cmdline_parse_token_num_t cmd_set_nvgre_ip_src_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_src);
-static cmdline_parse_token_string_t cmd_set_nvgre_ip_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "ip-dst");
-static cmdline_parse_token_ipaddr_t cmd_set_nvgre_ip_dst_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_dst);
-static cmdline_parse_token_string_t cmd_set_nvgre_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "vlan-tci");
-static cmdline_parse_token_num_t cmd_set_nvgre_vlan_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tci, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_nvgre_eth_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "eth-src");
-static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_src_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_src);
-static cmdline_parse_token_string_t cmd_set_nvgre_eth_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
-				 "eth-dst");
-static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_dst_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_dst);
-
-static void cmd_set_nvgre_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_nvgre_result *res = parsed_result;
-	union {
-		uint32_t nvgre_tni;
-		uint8_t tni[4];
-	} id = {
-		.nvgre_tni = rte_cpu_to_be_32(res->tni) & RTE_BE32(0x00ffffff),
-	};
-
-	if (strcmp(res->nvgre, "nvgre") == 0)
-		nvgre_encap_conf.select_vlan = 0;
-	else if (strcmp(res->nvgre, "nvgre-with-vlan") == 0)
-		nvgre_encap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		nvgre_encap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		nvgre_encap_conf.select_ipv4 = 0;
-	else
-		return;
-	rte_memcpy(nvgre_encap_conf.tni, &id.tni[1], 3);
-	if (nvgre_encap_conf.select_ipv4) {
-		IPV4_ADDR_TO_UINT(res->ip_src, nvgre_encap_conf.ipv4_src);
-		IPV4_ADDR_TO_UINT(res->ip_dst, nvgre_encap_conf.ipv4_dst);
-	} else {
-		IPV6_ADDR_TO_ARRAY(res->ip_src, nvgre_encap_conf.ipv6_src);
-		IPV6_ADDR_TO_ARRAY(res->ip_dst, nvgre_encap_conf.ipv6_dst);
-	}
-	if (nvgre_encap_conf.select_vlan)
-		nvgre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(nvgre_encap_conf.eth_src, res->eth_src.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(nvgre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-}
-
-static cmdline_parse_inst_t cmd_set_nvgre = {
-	.f = cmd_set_nvgre_parsed,
-	.data = NULL,
-	.help_str = "set nvgre ip-version <ipv4|ipv6> tni <tni> ip-src"
-		" <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
-		" eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_nvgre_set,
-		(void *)&cmd_set_nvgre_nvgre,
-		(void *)&cmd_set_nvgre_ip_version,
-		(void *)&cmd_set_nvgre_ip_version_value,
-		(void *)&cmd_set_nvgre_tni,
-		(void *)&cmd_set_nvgre_tni_value,
-		(void *)&cmd_set_nvgre_ip_src,
-		(void *)&cmd_set_nvgre_ip_src_value,
-		(void *)&cmd_set_nvgre_ip_dst,
-		(void *)&cmd_set_nvgre_ip_dst_value,
-		(void *)&cmd_set_nvgre_eth_src,
-		(void *)&cmd_set_nvgre_eth_src_value,
-		(void *)&cmd_set_nvgre_eth_dst,
-		(void *)&cmd_set_nvgre_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_nvgre_with_vlan = {
-	.f = cmd_set_nvgre_parsed,
-	.data = NULL,
-	.help_str = "set nvgre-with-vlan ip-version <ipv4|ipv6> tni <tni>"
-		" ip-src <ip-src> ip-dst <ip-dst> vlan-tci <vlan-tci>"
-		" eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_nvgre_set,
-		(void *)&cmd_set_nvgre_nvgre_with_vlan,
-		(void *)&cmd_set_nvgre_ip_version,
-		(void *)&cmd_set_nvgre_ip_version_value,
-		(void *)&cmd_set_nvgre_tni,
-		(void *)&cmd_set_nvgre_tni_value,
-		(void *)&cmd_set_nvgre_ip_src,
-		(void *)&cmd_set_nvgre_ip_src_value,
-		(void *)&cmd_set_nvgre_ip_dst,
-		(void *)&cmd_set_nvgre_ip_dst_value,
-		(void *)&cmd_set_nvgre_vlan,
-		(void *)&cmd_set_nvgre_vlan_value,
-		(void *)&cmd_set_nvgre_eth_src,
-		(void *)&cmd_set_nvgre_eth_src_value,
-		(void *)&cmd_set_nvgre_eth_dst,
-		(void *)&cmd_set_nvgre_eth_dst_value,
-		NULL,
-	},
-};
-
-/** Set L2 encapsulation details */
-struct cmd_set_l2_encap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t l2_encap;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-	uint16_t tci;
-	struct rte_ether_addr eth_src;
-	struct rte_ether_addr eth_dst;
-};
-
-static cmdline_parse_token_string_t cmd_set_l2_encap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, set, "set");
-static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap, "l2_encap");
-static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap,
-				 "l2_encap-with-vlan");
-static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
-				 "ip-version");
-static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, ip_version,
-				 "ipv4#ipv6");
-static cmdline_parse_token_string_t cmd_set_l2_encap_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
-				 "vlan-tci");
-static cmdline_parse_token_num_t cmd_set_l2_encap_vlan_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_l2_encap_result, tci, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_l2_encap_eth_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
-				 "eth-src");
-static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_src_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_src);
-static cmdline_parse_token_string_t cmd_set_l2_encap_eth_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
-				 "eth-dst");
-static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_dst_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_dst);
-
-static void cmd_set_l2_encap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_l2_encap_result *res = parsed_result;
-
-	if (strcmp(res->l2_encap, "l2_encap") == 0)
-		l2_encap_conf.select_vlan = 0;
-	else if (strcmp(res->l2_encap, "l2_encap-with-vlan") == 0)
-		l2_encap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		l2_encap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		l2_encap_conf.select_ipv4 = 0;
-	else
-		return;
-	if (l2_encap_conf.select_vlan)
-		l2_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(l2_encap_conf.eth_src, res->eth_src.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(l2_encap_conf.eth_dst, res->eth_dst.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-}
-
-static cmdline_parse_inst_t cmd_set_l2_encap = {
-	.f = cmd_set_l2_encap_parsed,
-	.data = NULL,
-	.help_str = "set l2_encap ip-version ipv4|ipv6"
-		" eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_l2_encap_set,
-		(void *)&cmd_set_l2_encap_l2_encap,
-		(void *)&cmd_set_l2_encap_ip_version,
-		(void *)&cmd_set_l2_encap_ip_version_value,
-		(void *)&cmd_set_l2_encap_eth_src,
-		(void *)&cmd_set_l2_encap_eth_src_value,
-		(void *)&cmd_set_l2_encap_eth_dst,
-		(void *)&cmd_set_l2_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_l2_encap_with_vlan = {
-	.f = cmd_set_l2_encap_parsed,
-	.data = NULL,
-	.help_str = "set l2_encap-with-vlan ip-version ipv4|ipv6"
-		" vlan-tci <vlan-tci> eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_l2_encap_set,
-		(void *)&cmd_set_l2_encap_l2_encap_with_vlan,
-		(void *)&cmd_set_l2_encap_ip_version,
-		(void *)&cmd_set_l2_encap_ip_version_value,
-		(void *)&cmd_set_l2_encap_vlan,
-		(void *)&cmd_set_l2_encap_vlan_value,
-		(void *)&cmd_set_l2_encap_eth_src,
-		(void *)&cmd_set_l2_encap_eth_src_value,
-		(void *)&cmd_set_l2_encap_eth_dst,
-		(void *)&cmd_set_l2_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-/** Set L2 decapsulation details */
-struct cmd_set_l2_decap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t l2_decap;
-	cmdline_fixed_string_t pos_token;
-	uint32_t vlan_present:1;
-};
-
-static cmdline_parse_token_string_t cmd_set_l2_decap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, set, "set");
-static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
-				 "l2_decap");
-static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
-				 "l2_decap-with-vlan");
-
-static void cmd_set_l2_decap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_l2_decap_result *res = parsed_result;
-
-	if (strcmp(res->l2_decap, "l2_decap") == 0)
-		l2_decap_conf.select_vlan = 0;
-	else if (strcmp(res->l2_decap, "l2_decap-with-vlan") == 0)
-		l2_decap_conf.select_vlan = 1;
-}
-
-static cmdline_parse_inst_t cmd_set_l2_decap = {
-	.f = cmd_set_l2_decap_parsed,
-	.data = NULL,
-	.help_str = "set l2_decap",
-	.tokens = {
-		(void *)&cmd_set_l2_decap_set,
-		(void *)&cmd_set_l2_decap_l2_decap,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_l2_decap_with_vlan = {
-	.f = cmd_set_l2_decap_parsed,
-	.data = NULL,
-	.help_str = "set l2_decap-with-vlan",
-	.tokens = {
-		(void *)&cmd_set_l2_decap_set,
-		(void *)&cmd_set_l2_decap_l2_decap_with_vlan,
-		NULL,
-	},
-};
-
-/** Set MPLSoGRE encapsulation details */
-struct cmd_set_mplsogre_encap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t mplsogre;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-	uint32_t label;
-	cmdline_ipaddr_t ip_src;
-	cmdline_ipaddr_t ip_dst;
-	uint16_t tci;
-	struct rte_ether_addr eth_src;
-	struct rte_ether_addr eth_dst;
-};
-
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, set,
-				 "set");
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, mplsogre,
-				 "mplsogre_encap");
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 mplsogre, "mplsogre_encap-with-vlan");
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "ip-version");
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 ip_version, "ipv4#ipv6");
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_label =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "label");
-static cmdline_parse_token_num_t cmd_set_mplsogre_encap_label_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, label,
-			      RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "ip-src");
-static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_src_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_src);
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "ip-dst");
-static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_dst_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_dst);
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "vlan-tci");
-static cmdline_parse_token_num_t cmd_set_mplsogre_encap_vlan_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, tci,
-			      RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "eth-src");
-static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_src_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				    eth_src);
-static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				 pos_token, "eth-dst");
-static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_dst_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
-				    eth_dst);
-
-static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_mplsogre_encap_result *res = parsed_result;
-	union {
-		uint32_t mplsogre_label;
-		uint8_t label[4];
-	} id = {
-		.mplsogre_label = rte_cpu_to_be_32(res->label<<12),
-	};
-
-	if (strcmp(res->mplsogre, "mplsogre_encap") == 0)
-		mplsogre_encap_conf.select_vlan = 0;
-	else if (strcmp(res->mplsogre, "mplsogre_encap-with-vlan") == 0)
-		mplsogre_encap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		mplsogre_encap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		mplsogre_encap_conf.select_ipv4 = 0;
-	else
-		return;
-	rte_memcpy(mplsogre_encap_conf.label, &id.label, 3);
-	if (mplsogre_encap_conf.select_ipv4) {
-		IPV4_ADDR_TO_UINT(res->ip_src, mplsogre_encap_conf.ipv4_src);
-		IPV4_ADDR_TO_UINT(res->ip_dst, mplsogre_encap_conf.ipv4_dst);
-	} else {
-		IPV6_ADDR_TO_ARRAY(res->ip_src, mplsogre_encap_conf.ipv6_src);
-		IPV6_ADDR_TO_ARRAY(res->ip_dst, mplsogre_encap_conf.ipv6_dst);
-	}
-	if (mplsogre_encap_conf.select_vlan)
-		mplsogre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(mplsogre_encap_conf.eth_src, res->eth_src.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(mplsogre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-}
-
-static cmdline_parse_inst_t cmd_set_mplsogre_encap = {
-	.f = cmd_set_mplsogre_encap_parsed,
-	.data = NULL,
-	.help_str = "set mplsogre_encap ip-version ipv4|ipv6 label <label>"
-		" ip-src <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
-		" eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_mplsogre_encap_set,
-		(void *)&cmd_set_mplsogre_encap_mplsogre_encap,
-		(void *)&cmd_set_mplsogre_encap_ip_version,
-		(void *)&cmd_set_mplsogre_encap_ip_version_value,
-		(void *)&cmd_set_mplsogre_encap_label,
-		(void *)&cmd_set_mplsogre_encap_label_value,
-		(void *)&cmd_set_mplsogre_encap_ip_src,
-		(void *)&cmd_set_mplsogre_encap_ip_src_value,
-		(void *)&cmd_set_mplsogre_encap_ip_dst,
-		(void *)&cmd_set_mplsogre_encap_ip_dst_value,
-		(void *)&cmd_set_mplsogre_encap_eth_src,
-		(void *)&cmd_set_mplsogre_encap_eth_src_value,
-		(void *)&cmd_set_mplsogre_encap_eth_dst,
-		(void *)&cmd_set_mplsogre_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_mplsogre_encap_with_vlan = {
-	.f = cmd_set_mplsogre_encap_parsed,
-	.data = NULL,
-	.help_str = "set mplsogre_encap-with-vlan ip-version ipv4|ipv6"
-		" label <label> ip-src <ip-src> ip-dst <ip-dst>"
-		" vlan-tci <vlan-tci> eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_mplsogre_encap_set,
-		(void *)&cmd_set_mplsogre_encap_mplsogre_encap_with_vlan,
-		(void *)&cmd_set_mplsogre_encap_ip_version,
-		(void *)&cmd_set_mplsogre_encap_ip_version_value,
-		(void *)&cmd_set_mplsogre_encap_label,
-		(void *)&cmd_set_mplsogre_encap_label_value,
-		(void *)&cmd_set_mplsogre_encap_ip_src,
-		(void *)&cmd_set_mplsogre_encap_ip_src_value,
-		(void *)&cmd_set_mplsogre_encap_ip_dst,
-		(void *)&cmd_set_mplsogre_encap_ip_dst_value,
-		(void *)&cmd_set_mplsogre_encap_vlan,
-		(void *)&cmd_set_mplsogre_encap_vlan_value,
-		(void *)&cmd_set_mplsogre_encap_eth_src,
-		(void *)&cmd_set_mplsogre_encap_eth_src_value,
-		(void *)&cmd_set_mplsogre_encap_eth_dst,
-		(void *)&cmd_set_mplsogre_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-/** Set MPLSoGRE decapsulation details */
-struct cmd_set_mplsogre_decap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t mplsogre;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-};
-
-static cmdline_parse_token_string_t cmd_set_mplsogre_decap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, set,
-				 "set");
-static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, mplsogre,
-				 "mplsogre_decap");
-static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
-				 mplsogre, "mplsogre_decap-with-vlan");
-static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
-				 pos_token, "ip-version");
-static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
-				 ip_version, "ipv4#ipv6");
-
-static void cmd_set_mplsogre_decap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_mplsogre_decap_result *res = parsed_result;
-
-	if (strcmp(res->mplsogre, "mplsogre_decap") == 0)
-		mplsogre_decap_conf.select_vlan = 0;
-	else if (strcmp(res->mplsogre, "mplsogre_decap-with-vlan") == 0)
-		mplsogre_decap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		mplsogre_decap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		mplsogre_decap_conf.select_ipv4 = 0;
-}
-
-static cmdline_parse_inst_t cmd_set_mplsogre_decap = {
-	.f = cmd_set_mplsogre_decap_parsed,
-	.data = NULL,
-	.help_str = "set mplsogre_decap ip-version ipv4|ipv6",
-	.tokens = {
-		(void *)&cmd_set_mplsogre_decap_set,
-		(void *)&cmd_set_mplsogre_decap_mplsogre_decap,
-		(void *)&cmd_set_mplsogre_decap_ip_version,
-		(void *)&cmd_set_mplsogre_decap_ip_version_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_mplsogre_decap_with_vlan = {
-	.f = cmd_set_mplsogre_decap_parsed,
-	.data = NULL,
-	.help_str = "set mplsogre_decap-with-vlan ip-version ipv4|ipv6",
-	.tokens = {
-		(void *)&cmd_set_mplsogre_decap_set,
-		(void *)&cmd_set_mplsogre_decap_mplsogre_decap_with_vlan,
-		(void *)&cmd_set_mplsogre_decap_ip_version,
-		(void *)&cmd_set_mplsogre_decap_ip_version_value,
-		NULL,
-	},
-};
-
-/** Set MPLSoUDP encapsulation details */
-struct cmd_set_mplsoudp_encap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t mplsoudp;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-	uint32_t label;
-	uint16_t udp_src;
-	uint16_t udp_dst;
-	cmdline_ipaddr_t ip_src;
-	cmdline_ipaddr_t ip_dst;
-	uint16_t tci;
-	struct rte_ether_addr eth_src;
-	struct rte_ether_addr eth_dst;
-};
-
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, set,
-				 "set");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, mplsoudp,
-				 "mplsoudp_encap");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 mplsoudp, "mplsoudp_encap-with-vlan");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "ip-version");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 ip_version, "ipv4#ipv6");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_label =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "label");
-static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_label_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, label,
-			      RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "udp-src");
-static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_src_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_src,
-			      RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "udp-dst");
-static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_dst_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_dst,
-			      RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "ip-src");
-static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_src_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_src);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "ip-dst");
-static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_dst_value =
-	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_dst);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "vlan-tci");
-static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_vlan_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, tci,
-			      RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_src =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "eth-src");
-static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_src_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				    eth_src);
-static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_dst =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				 pos_token, "eth-dst");
-static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_dst_value =
-	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
-				    eth_dst);
-
-static void cmd_set_mplsoudp_encap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_mplsoudp_encap_result *res = parsed_result;
-	union {
-		uint32_t mplsoudp_label;
-		uint8_t label[4];
-	} id = {
-		.mplsoudp_label = rte_cpu_to_be_32(res->label<<12),
-	};
-
-	if (strcmp(res->mplsoudp, "mplsoudp_encap") == 0)
-		mplsoudp_encap_conf.select_vlan = 0;
-	else if (strcmp(res->mplsoudp, "mplsoudp_encap-with-vlan") == 0)
-		mplsoudp_encap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		mplsoudp_encap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		mplsoudp_encap_conf.select_ipv4 = 0;
-	else
-		return;
-	rte_memcpy(mplsoudp_encap_conf.label, &id.label, 3);
-	mplsoudp_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
-	mplsoudp_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
-	if (mplsoudp_encap_conf.select_ipv4) {
-		IPV4_ADDR_TO_UINT(res->ip_src, mplsoudp_encap_conf.ipv4_src);
-		IPV4_ADDR_TO_UINT(res->ip_dst, mplsoudp_encap_conf.ipv4_dst);
-	} else {
-		IPV6_ADDR_TO_ARRAY(res->ip_src, mplsoudp_encap_conf.ipv6_src);
-		IPV6_ADDR_TO_ARRAY(res->ip_dst, mplsoudp_encap_conf.ipv6_dst);
-	}
-	if (mplsoudp_encap_conf.select_vlan)
-		mplsoudp_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
-	rte_memcpy(mplsoudp_encap_conf.eth_src, res->eth_src.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-	rte_memcpy(mplsoudp_encap_conf.eth_dst, res->eth_dst.addr_bytes,
-		   RTE_ETHER_ADDR_LEN);
-}
-
-static cmdline_parse_inst_t cmd_set_mplsoudp_encap = {
-	.f = cmd_set_mplsoudp_encap_parsed,
-	.data = NULL,
-	.help_str = "set mplsoudp_encap ip-version ipv4|ipv6 label <label>"
-		" udp-src <udp-src> udp-dst <udp-dst> ip-src <ip-src>"
-		" ip-dst <ip-dst> eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_mplsoudp_encap_set,
-		(void *)&cmd_set_mplsoudp_encap_mplsoudp_encap,
-		(void *)&cmd_set_mplsoudp_encap_ip_version,
-		(void *)&cmd_set_mplsoudp_encap_ip_version_value,
-		(void *)&cmd_set_mplsoudp_encap_label,
-		(void *)&cmd_set_mplsoudp_encap_label_value,
-		(void *)&cmd_set_mplsoudp_encap_udp_src,
-		(void *)&cmd_set_mplsoudp_encap_udp_src_value,
-		(void *)&cmd_set_mplsoudp_encap_udp_dst,
-		(void *)&cmd_set_mplsoudp_encap_udp_dst_value,
-		(void *)&cmd_set_mplsoudp_encap_ip_src,
-		(void *)&cmd_set_mplsoudp_encap_ip_src_value,
-		(void *)&cmd_set_mplsoudp_encap_ip_dst,
-		(void *)&cmd_set_mplsoudp_encap_ip_dst_value,
-		(void *)&cmd_set_mplsoudp_encap_eth_src,
-		(void *)&cmd_set_mplsoudp_encap_eth_src_value,
-		(void *)&cmd_set_mplsoudp_encap_eth_dst,
-		(void *)&cmd_set_mplsoudp_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_mplsoudp_encap_with_vlan = {
-	.f = cmd_set_mplsoudp_encap_parsed,
-	.data = NULL,
-	.help_str = "set mplsoudp_encap-with-vlan ip-version ipv4|ipv6"
-		" label <label> udp-src <udp-src> udp-dst <udp-dst>"
-		" ip-src <ip-src> ip-dst <ip-dst> vlan-tci <vlan-tci>"
-		" eth-src <eth-src> eth-dst <eth-dst>",
-	.tokens = {
-		(void *)&cmd_set_mplsoudp_encap_set,
-		(void *)&cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan,
-		(void *)&cmd_set_mplsoudp_encap_ip_version,
-		(void *)&cmd_set_mplsoudp_encap_ip_version_value,
-		(void *)&cmd_set_mplsoudp_encap_label,
-		(void *)&cmd_set_mplsoudp_encap_label_value,
-		(void *)&cmd_set_mplsoudp_encap_udp_src,
-		(void *)&cmd_set_mplsoudp_encap_udp_src_value,
-		(void *)&cmd_set_mplsoudp_encap_udp_dst,
-		(void *)&cmd_set_mplsoudp_encap_udp_dst_value,
-		(void *)&cmd_set_mplsoudp_encap_ip_src,
-		(void *)&cmd_set_mplsoudp_encap_ip_src_value,
-		(void *)&cmd_set_mplsoudp_encap_ip_dst,
-		(void *)&cmd_set_mplsoudp_encap_ip_dst_value,
-		(void *)&cmd_set_mplsoudp_encap_vlan,
-		(void *)&cmd_set_mplsoudp_encap_vlan_value,
-		(void *)&cmd_set_mplsoudp_encap_eth_src,
-		(void *)&cmd_set_mplsoudp_encap_eth_src_value,
-		(void *)&cmd_set_mplsoudp_encap_eth_dst,
-		(void *)&cmd_set_mplsoudp_encap_eth_dst_value,
-		NULL,
-	},
-};
-
-/** Set MPLSoUDP decapsulation details */
-struct cmd_set_mplsoudp_decap_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t mplsoudp;
-	cmdline_fixed_string_t pos_token;
-	cmdline_fixed_string_t ip_version;
-	uint32_t vlan_present:1;
-};
-
-static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, set,
-				 "set");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, mplsoudp,
-				 "mplsoudp_decap");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
-				 mplsoudp, "mplsoudp_decap-with-vlan");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
-				 pos_token, "ip-version");
-static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
-				 ip_version, "ipv4#ipv6");
-
-static void cmd_set_mplsoudp_decap_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_mplsoudp_decap_result *res = parsed_result;
-
-	if (strcmp(res->mplsoudp, "mplsoudp_decap") == 0)
-		mplsoudp_decap_conf.select_vlan = 0;
-	else if (strcmp(res->mplsoudp, "mplsoudp_decap-with-vlan") == 0)
-		mplsoudp_decap_conf.select_vlan = 1;
-	if (strcmp(res->ip_version, "ipv4") == 0)
-		mplsoudp_decap_conf.select_ipv4 = 1;
-	else if (strcmp(res->ip_version, "ipv6") == 0)
-		mplsoudp_decap_conf.select_ipv4 = 0;
-}
-
-static cmdline_parse_inst_t cmd_set_mplsoudp_decap = {
-	.f = cmd_set_mplsoudp_decap_parsed,
-	.data = NULL,
-	.help_str = "set mplsoudp_decap ip-version ipv4|ipv6",
-	.tokens = {
-		(void *)&cmd_set_mplsoudp_decap_set,
-		(void *)&cmd_set_mplsoudp_decap_mplsoudp_decap,
-		(void *)&cmd_set_mplsoudp_decap_ip_version,
-		(void *)&cmd_set_mplsoudp_decap_ip_version_value,
-		NULL,
-	},
-};
-
-static cmdline_parse_inst_t cmd_set_mplsoudp_decap_with_vlan = {
-	.f = cmd_set_mplsoudp_decap_parsed,
-	.data = NULL,
-	.help_str = "set mplsoudp_decap-with-vlan ip-version ipv4|ipv6",
-	.tokens = {
-		(void *)&cmd_set_mplsoudp_decap_set,
-		(void *)&cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan,
-		(void *)&cmd_set_mplsoudp_decap_ip_version,
-		(void *)&cmd_set_mplsoudp_decap_ip_version_value,
-		NULL,
-	},
-};
-
-/** Set connection tracking object common details */
-struct cmd_set_conntrack_common_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t conntrack;
-	cmdline_fixed_string_t common;
-	cmdline_fixed_string_t peer;
-	cmdline_fixed_string_t is_orig;
-	cmdline_fixed_string_t enable;
-	cmdline_fixed_string_t live;
-	cmdline_fixed_string_t sack;
-	cmdline_fixed_string_t cack;
-	cmdline_fixed_string_t last_dir;
-	cmdline_fixed_string_t liberal;
-	cmdline_fixed_string_t state;
-	cmdline_fixed_string_t max_ack_win;
-	cmdline_fixed_string_t retrans;
-	cmdline_fixed_string_t last_win;
-	cmdline_fixed_string_t last_seq;
-	cmdline_fixed_string_t last_ack;
-	cmdline_fixed_string_t last_end;
-	cmdline_fixed_string_t last_index;
-	uint8_t stat;
-	uint8_t factor;
-	uint16_t peer_port;
-	uint32_t is_original;
-	uint32_t en;
-	uint32_t is_live;
-	uint32_t s_ack;
-	uint32_t c_ack;
-	uint32_t ld;
-	uint32_t lb;
-	uint8_t re_num;
-	uint8_t li;
-	uint16_t lw;
-	uint32_t ls;
-	uint32_t la;
-	uint32_t le;
-};
-
-static cmdline_parse_token_string_t cmd_set_conntrack_set =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 set, "set");
-static cmdline_parse_token_string_t cmd_set_conntrack_conntrack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 conntrack, "conntrack");
-static cmdline_parse_token_string_t cmd_set_conntrack_common_com =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 common, "com");
-static cmdline_parse_token_string_t cmd_set_conntrack_common_peer =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 peer, "peer");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_peer_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      peer_port, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_is_orig =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 is_orig, "is_orig");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_is_orig_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      is_original, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_enable =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 enable, "enable");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_enable_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      en, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_live =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 live, "live");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_live_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      is_live, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_sack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 sack, "sack");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_sack_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      s_ack, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_cack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 cack, "cack");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_cack_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      c_ack, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_dir =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_dir, "last_dir");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_dir_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      ld, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_liberal =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 liberal, "liberal");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_liberal_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      lb, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_state =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 state, "state");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_state_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      stat, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_max_ackwin =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 max_ack_win, "max_ack_win");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_max_ackwin_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      factor, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_retrans =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 retrans, "r_lim");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_retrans_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      re_num, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_win =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_win, "last_win");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_win_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      lw, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_seq =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_seq, "last_seq");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_seq_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      ls, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_ack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_ack, "last_ack");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_ack_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      la, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_end =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_end, "last_end");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_end_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      le, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_common_last_index =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
-				 last_index, "last_index");
-static cmdline_parse_token_num_t cmd_set_conntrack_common_last_index_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
-			      li, RTE_UINT8);
-
-static void cmd_set_conntrack_common_parsed(void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_set_conntrack_common_result *res = parsed_result;
-
-	/* No need to swap to big endian. */
-	conntrack_context.peer_port = res->peer_port;
-	conntrack_context.is_original_dir = res->is_original;
-	conntrack_context.enable = res->en;
-	conntrack_context.live_connection = res->is_live;
-	conntrack_context.selective_ack = res->s_ack;
-	conntrack_context.challenge_ack_passed = res->c_ack;
-	conntrack_context.last_direction = res->ld;
-	conntrack_context.liberal_mode = res->lb;
-	conntrack_context.state = (enum rte_flow_conntrack_state)res->stat;
-	conntrack_context.max_ack_window = res->factor;
-	conntrack_context.retransmission_limit = res->re_num;
-	conntrack_context.last_window = res->lw;
-	conntrack_context.last_index =
-		(enum rte_flow_conntrack_tcp_last_index)res->li;
-	conntrack_context.last_seq = res->ls;
-	conntrack_context.last_ack = res->la;
-	conntrack_context.last_end = res->le;
-}
-
-static cmdline_parse_inst_t cmd_set_conntrack_common = {
-	.f = cmd_set_conntrack_common_parsed,
-	.data = NULL,
-	.help_str = "set conntrack com peer <port_id> is_orig <dir> enable <en>"
-		" live <ack_seen> sack <en> cack <passed> last_dir <dir>"
-		" liberal <en> state <s> max_ack_win <factor> r_lim <num>"
-		" last_win <win> last_seq <seq> last_ack <ack> last_end <end>"
-		" last_index <flag>",
-	.tokens = {
-		(void *)&cmd_set_conntrack_set,
-		(void *)&cmd_set_conntrack_conntrack,
-		(void *)&cmd_set_conntrack_common_com,
-		(void *)&cmd_set_conntrack_common_peer,
-		(void *)&cmd_set_conntrack_common_peer_value,
-		(void *)&cmd_set_conntrack_common_is_orig,
-		(void *)&cmd_set_conntrack_common_is_orig_value,
-		(void *)&cmd_set_conntrack_common_enable,
-		(void *)&cmd_set_conntrack_common_enable_value,
-		(void *)&cmd_set_conntrack_common_live,
-		(void *)&cmd_set_conntrack_common_live_value,
-		(void *)&cmd_set_conntrack_common_sack,
-		(void *)&cmd_set_conntrack_common_sack_value,
-		(void *)&cmd_set_conntrack_common_cack,
-		(void *)&cmd_set_conntrack_common_cack_value,
-		(void *)&cmd_set_conntrack_common_last_dir,
-		(void *)&cmd_set_conntrack_common_last_dir_value,
-		(void *)&cmd_set_conntrack_common_liberal,
-		(void *)&cmd_set_conntrack_common_liberal_value,
-		(void *)&cmd_set_conntrack_common_state,
-		(void *)&cmd_set_conntrack_common_state_value,
-		(void *)&cmd_set_conntrack_common_max_ackwin,
-		(void *)&cmd_set_conntrack_common_max_ackwin_value,
-		(void *)&cmd_set_conntrack_common_retrans,
-		(void *)&cmd_set_conntrack_common_retrans_value,
-		(void *)&cmd_set_conntrack_common_last_win,
-		(void *)&cmd_set_conntrack_common_last_win_value,
-		(void *)&cmd_set_conntrack_common_last_seq,
-		(void *)&cmd_set_conntrack_common_last_seq_value,
-		(void *)&cmd_set_conntrack_common_last_ack,
-		(void *)&cmd_set_conntrack_common_last_ack_value,
-		(void *)&cmd_set_conntrack_common_last_end,
-		(void *)&cmd_set_conntrack_common_last_end_value,
-		(void *)&cmd_set_conntrack_common_last_index,
-		(void *)&cmd_set_conntrack_common_last_index_value,
-		NULL,
-	},
-};
-
-/** Set connection tracking object both directions' details */
-struct cmd_set_conntrack_dir_result {
-	cmdline_fixed_string_t set;
-	cmdline_fixed_string_t conntrack;
-	cmdline_fixed_string_t dir;
-	cmdline_fixed_string_t scale;
-	cmdline_fixed_string_t fin;
-	cmdline_fixed_string_t ack_seen;
-	cmdline_fixed_string_t unack;
-	cmdline_fixed_string_t sent_end;
-	cmdline_fixed_string_t reply_end;
-	cmdline_fixed_string_t max_win;
-	cmdline_fixed_string_t max_ack;
-	uint32_t factor;
-	uint32_t f;
-	uint32_t as;
-	uint32_t un;
-	uint32_t se;
-	uint32_t re;
-	uint32_t mw;
-	uint32_t ma;
+	cmdline_fixed_string_t vxlan;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
+	uint32_t vni;
+	uint16_t udp_src;
+	uint16_t udp_dst;
+	cmdline_ipaddr_t ip_src;
+	cmdline_ipaddr_t ip_dst;
+	uint16_t tci;
+	uint8_t tos;
+	uint8_t ttl;
+	struct rte_ether_addr eth_src;
+	struct rte_ether_addr eth_dst;
 };
 
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_dir =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 dir, "orig#rply");
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_scale =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 scale, "scale");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_scale_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      factor, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_fin =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 fin, "fin");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_fin_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      f, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_ack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 ack_seen, "acked");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_ack_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      as, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_unack_data =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 unack, "unack_data");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_unack_data_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      un, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_sent_end =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 sent_end, "sent_end");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_sent_end_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      se, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_reply_end =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 reply_end, "reply_end");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_reply_end_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      re, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_max_win =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 max_win, "max_win");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_max_win_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      mw, RTE_UINT32);
-static cmdline_parse_token_string_t cmd_set_conntrack_dir_max_ack =
-	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_dir_result,
-				 max_ack, "max_ack");
-static cmdline_parse_token_num_t cmd_set_conntrack_dir_max_ack_value =
-	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_dir_result,
-			      ma, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_vxlan_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, set, "set");
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan, "vxlan");
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_tos_ttl =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
+				 "vxlan-tos-ttl");
+static cmdline_parse_token_string_t cmd_set_vxlan_vxlan_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, vxlan,
+				 "vxlan-with-vlan");
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "ip-version");
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, ip_version,
+				 "ipv4#ipv6");
+static cmdline_parse_token_string_t cmd_set_vxlan_vni =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "vni");
+static cmdline_parse_token_num_t cmd_set_vxlan_vni_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, vni, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_vxlan_udp_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "udp-src");
+static cmdline_parse_token_num_t cmd_set_vxlan_udp_src_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_src, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_vxlan_udp_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "udp-dst");
+static cmdline_parse_token_num_t cmd_set_vxlan_udp_dst_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, udp_dst, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_tos =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "ip-tos");
+static cmdline_parse_token_num_t cmd_set_vxlan_ip_tos_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tos, RTE_UINT8);
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_ttl =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "ip-ttl");
+static cmdline_parse_token_num_t cmd_set_vxlan_ip_ttl_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, ttl, RTE_UINT8);
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "ip-src");
+static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_src_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_src);
+static cmdline_parse_token_string_t cmd_set_vxlan_ip_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "ip-dst");
+static cmdline_parse_token_ipaddr_t cmd_set_vxlan_ip_dst_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_vxlan_result, ip_dst);
+static cmdline_parse_token_string_t cmd_set_vxlan_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "vlan-tci");
+static cmdline_parse_token_num_t cmd_set_vxlan_vlan_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_vxlan_result, tci, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_vxlan_eth_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "eth-src");
+static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_src_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_src);
+static cmdline_parse_token_string_t cmd_set_vxlan_eth_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_vxlan_result, pos_token,
+				 "eth-dst");
+static cmdline_parse_token_etheraddr_t cmd_set_vxlan_eth_dst_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vxlan_result, eth_dst);
 
-static void cmd_set_conntrack_dir_parsed(void *parsed_result,
+static void cmd_set_vxlan_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
-{
-	struct cmd_set_conntrack_dir_result *res = parsed_result;
-	struct rte_flow_tcp_dir_param *dir = NULL;
+{
+	struct cmd_set_vxlan_result *res = parsed_result;
+	union {
+		uint32_t vxlan_id;
+		uint8_t vni[4];
+	} id = {
+		.vxlan_id = rte_cpu_to_be_32(res->vni) & RTE_BE32(0x00ffffff),
+	};
 
-	if (strcmp(res->dir, "orig") == 0)
-		dir = &conntrack_context.original_dir;
-	else if (strcmp(res->dir, "rply") == 0)
-		dir = &conntrack_context.reply_dir;
+	vxlan_encap_conf.select_tos_ttl = 0;
+	if (strcmp(res->vxlan, "vxlan") == 0)
+		vxlan_encap_conf.select_vlan = 0;
+	else if (strcmp(res->vxlan, "vxlan-with-vlan") == 0)
+		vxlan_encap_conf.select_vlan = 1;
+	else if (strcmp(res->vxlan, "vxlan-tos-ttl") == 0) {
+		vxlan_encap_conf.select_vlan = 0;
+		vxlan_encap_conf.select_tos_ttl = 1;
+	}
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		vxlan_encap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		vxlan_encap_conf.select_ipv4 = 0;
 	else
 		return;
-	dir->scale = res->factor;
-	dir->close_initiated = res->f;
-	dir->last_ack_seen = res->as;
-	dir->data_unacked = res->un;
-	dir->sent_end = res->se;
-	dir->reply_end = res->re;
-	dir->max_ack = res->ma;
-	dir->max_win = res->mw;
+	rte_memcpy(vxlan_encap_conf.vni, &id.vni[1], 3);
+	vxlan_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
+	vxlan_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
+	vxlan_encap_conf.ip_tos = res->tos;
+	vxlan_encap_conf.ip_ttl = res->ttl;
+	if (vxlan_encap_conf.select_ipv4) {
+		IPV4_ADDR_TO_UINT(res->ip_src, vxlan_encap_conf.ipv4_src);
+		IPV4_ADDR_TO_UINT(res->ip_dst, vxlan_encap_conf.ipv4_dst);
+	} else {
+		IPV6_ADDR_TO_ARRAY(res->ip_src, vxlan_encap_conf.ipv6_src);
+		IPV6_ADDR_TO_ARRAY(res->ip_dst, vxlan_encap_conf.ipv6_dst);
+	}
+	if (vxlan_encap_conf.select_vlan)
+		vxlan_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
+	rte_memcpy(vxlan_encap_conf.eth_src, res->eth_src.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
+	rte_memcpy(vxlan_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
 }
 
-static cmdline_parse_inst_t cmd_set_conntrack_dir = {
-	.f = cmd_set_conntrack_dir_parsed,
+static cmdline_parse_inst_t cmd_set_vxlan = {
+	.f = cmd_set_vxlan_parsed,
 	.data = NULL,
-	.help_str = "set conntrack orig|rply scale <factor> fin <sent>"
-		    " acked <seen> unack_data <unack> sent_end <sent>"
-		    " reply_end <reply> max_win <win> max_ack <ack>",
+	.help_str = "set vxlan ip-version ipv4|ipv6 vni <vni> udp-src"
+		" <udp-src> udp-dst <udp-dst> ip-src <ip-src> ip-dst <ip-dst>"
+		" eth-src <eth-src> eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_set_conntrack_set,
-		(void *)&cmd_set_conntrack_conntrack,
-		(void *)&cmd_set_conntrack_dir_dir,
-		(void *)&cmd_set_conntrack_dir_scale,
-		(void *)&cmd_set_conntrack_dir_scale_value,
-		(void *)&cmd_set_conntrack_dir_fin,
-		(void *)&cmd_set_conntrack_dir_fin_value,
-		(void *)&cmd_set_conntrack_dir_ack,
-		(void *)&cmd_set_conntrack_dir_ack_value,
-		(void *)&cmd_set_conntrack_dir_unack_data,
-		(void *)&cmd_set_conntrack_dir_unack_data_value,
-		(void *)&cmd_set_conntrack_dir_sent_end,
-		(void *)&cmd_set_conntrack_dir_sent_end_value,
-		(void *)&cmd_set_conntrack_dir_reply_end,
-		(void *)&cmd_set_conntrack_dir_reply_end_value,
-		(void *)&cmd_set_conntrack_dir_max_win,
-		(void *)&cmd_set_conntrack_dir_max_win_value,
-		(void *)&cmd_set_conntrack_dir_max_ack,
-		(void *)&cmd_set_conntrack_dir_max_ack_value,
+		(void *)&cmd_set_vxlan_set,
+		(void *)&cmd_set_vxlan_vxlan,
+		(void *)&cmd_set_vxlan_ip_version,
+		(void *)&cmd_set_vxlan_ip_version_value,
+		(void *)&cmd_set_vxlan_vni,
+		(void *)&cmd_set_vxlan_vni_value,
+		(void *)&cmd_set_vxlan_udp_src,
+		(void *)&cmd_set_vxlan_udp_src_value,
+		(void *)&cmd_set_vxlan_udp_dst,
+		(void *)&cmd_set_vxlan_udp_dst_value,
+		(void *)&cmd_set_vxlan_ip_src,
+		(void *)&cmd_set_vxlan_ip_src_value,
+		(void *)&cmd_set_vxlan_ip_dst,
+		(void *)&cmd_set_vxlan_ip_dst_value,
+		(void *)&cmd_set_vxlan_eth_src,
+		(void *)&cmd_set_vxlan_eth_src_value,
+		(void *)&cmd_set_vxlan_eth_dst,
+		(void *)&cmd_set_vxlan_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Strict link priority scheduling mode setting */
-static void
-cmd_strict_link_prio_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_vf_tc_bw_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_set_tc_strict_prio(res->port_id, res->tc_map);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid tc_bitmap 0x%x\n", res->tc_map);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-}
-
-static cmdline_parse_inst_t cmd_strict_link_prio = {
-	.f = cmd_strict_link_prio_parsed,
+static cmdline_parse_inst_t cmd_set_vxlan_tos_ttl = {
+	.f = cmd_set_vxlan_parsed,
 	.data = NULL,
-	.help_str = "set tx strict-link-priority <port_id> <tc_bitmap>",
+	.help_str = "set vxlan-tos-ttl ip-version ipv4|ipv6 vni <vni> udp-src"
+		" <udp-src> udp-dst <udp-dst> ip-tos <ip-tos> ip-ttl <ip-ttl>"
+		" ip-src <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
+		" eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_vf_tc_bw_set,
-		(void *)&cmd_vf_tc_bw_tx,
-		(void *)&cmd_vf_tc_bw_strict_link_prio,
-		(void *)&cmd_vf_tc_bw_port_id,
-		(void *)&cmd_vf_tc_bw_tc_map,
+		(void *)&cmd_set_vxlan_set,
+		(void *)&cmd_set_vxlan_vxlan_tos_ttl,
+		(void *)&cmd_set_vxlan_ip_version,
+		(void *)&cmd_set_vxlan_ip_version_value,
+		(void *)&cmd_set_vxlan_vni,
+		(void *)&cmd_set_vxlan_vni_value,
+		(void *)&cmd_set_vxlan_udp_src,
+		(void *)&cmd_set_vxlan_udp_src_value,
+		(void *)&cmd_set_vxlan_udp_dst,
+		(void *)&cmd_set_vxlan_udp_dst_value,
+		(void *)&cmd_set_vxlan_ip_tos,
+		(void *)&cmd_set_vxlan_ip_tos_value,
+		(void *)&cmd_set_vxlan_ip_ttl,
+		(void *)&cmd_set_vxlan_ip_ttl_value,
+		(void *)&cmd_set_vxlan_ip_src,
+		(void *)&cmd_set_vxlan_ip_src_value,
+		(void *)&cmd_set_vxlan_ip_dst,
+		(void *)&cmd_set_vxlan_ip_dst_value,
+		(void *)&cmd_set_vxlan_eth_src,
+		(void *)&cmd_set_vxlan_eth_src_value,
+		(void *)&cmd_set_vxlan_eth_dst,
+		(void *)&cmd_set_vxlan_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Load dynamic device personalization*/
-struct cmd_ddp_add_result {
-	cmdline_fixed_string_t ddp;
-	cmdline_fixed_string_t add;
-	portid_t port_id;
-	char filepath[];
+static cmdline_parse_inst_t cmd_set_vxlan_with_vlan = {
+	.f = cmd_set_vxlan_parsed,
+	.data = NULL,
+	.help_str = "set vxlan-with-vlan ip-version ipv4|ipv6 vni <vni>"
+		" udp-src <udp-src> udp-dst <udp-dst> ip-src <ip-src> ip-dst"
+		" <ip-dst> vlan-tci <vlan-tci> eth-src <eth-src> eth-dst"
+		" <eth-dst>",
+	.tokens = {
+		(void *)&cmd_set_vxlan_set,
+		(void *)&cmd_set_vxlan_vxlan_with_vlan,
+		(void *)&cmd_set_vxlan_ip_version,
+		(void *)&cmd_set_vxlan_ip_version_value,
+		(void *)&cmd_set_vxlan_vni,
+		(void *)&cmd_set_vxlan_vni_value,
+		(void *)&cmd_set_vxlan_udp_src,
+		(void *)&cmd_set_vxlan_udp_src_value,
+		(void *)&cmd_set_vxlan_udp_dst,
+		(void *)&cmd_set_vxlan_udp_dst_value,
+		(void *)&cmd_set_vxlan_ip_src,
+		(void *)&cmd_set_vxlan_ip_src_value,
+		(void *)&cmd_set_vxlan_ip_dst,
+		(void *)&cmd_set_vxlan_ip_dst_value,
+		(void *)&cmd_set_vxlan_vlan,
+		(void *)&cmd_set_vxlan_vlan_value,
+		(void *)&cmd_set_vxlan_eth_src,
+		(void *)&cmd_set_vxlan_eth_src_value,
+		(void *)&cmd_set_vxlan_eth_dst,
+		(void *)&cmd_set_vxlan_eth_dst_value,
+		NULL,
+	},
 };
 
-static cmdline_parse_token_string_t cmd_ddp_add_ddp =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, ddp, "ddp");
-static cmdline_parse_token_string_t cmd_ddp_add_add =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, add, "add");
-static cmdline_parse_token_num_t cmd_ddp_add_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_ddp_add_result, port_id,
-		RTE_UINT16);
-static cmdline_parse_token_string_t cmd_ddp_add_filepath =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_add_result, filepath, NULL);
-
-static void
-cmd_ddp_add_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_ddp_add_result *res = parsed_result;
-	uint8_t *buff;
-	uint32_t size;
-	char *filepath;
-	char *file_fld[2];
-	int file_num;
-	int ret = -ENOTSUP;
+/** Set NVGRE encapsulation details */
+struct cmd_set_nvgre_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t nvgre;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t tni;
+	cmdline_ipaddr_t ip_src;
+	cmdline_ipaddr_t ip_dst;
+	uint16_t tci;
+	struct rte_ether_addr eth_src;
+	struct rte_ether_addr eth_dst;
+};
 
-	if (!all_ports_stopped()) {
-		fprintf(stderr, "Please stop all ports first\n");
-		return;
-	}
+static cmdline_parse_token_string_t cmd_set_nvgre_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, set, "set");
+static cmdline_parse_token_string_t cmd_set_nvgre_nvgre =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre, "nvgre");
+static cmdline_parse_token_string_t cmd_set_nvgre_nvgre_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, nvgre,
+				 "nvgre-with-vlan");
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "ip-version");
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, ip_version,
+				 "ipv4#ipv6");
+static cmdline_parse_token_string_t cmd_set_nvgre_tni =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "tni");
+static cmdline_parse_token_num_t cmd_set_nvgre_tni_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tni, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "ip-src");
+static cmdline_parse_token_num_t cmd_set_nvgre_ip_src_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_src);
+static cmdline_parse_token_string_t cmd_set_nvgre_ip_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "ip-dst");
+static cmdline_parse_token_ipaddr_t cmd_set_nvgre_ip_dst_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_nvgre_result, ip_dst);
+static cmdline_parse_token_string_t cmd_set_nvgre_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "vlan-tci");
+static cmdline_parse_token_num_t cmd_set_nvgre_vlan_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_nvgre_result, tci, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_nvgre_eth_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "eth-src");
+static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_src_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_src);
+static cmdline_parse_token_string_t cmd_set_nvgre_eth_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_nvgre_result, pos_token,
+				 "eth-dst");
+static cmdline_parse_token_etheraddr_t cmd_set_nvgre_eth_dst_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_nvgre_result, eth_dst);
 
-	filepath = strdup(res->filepath);
-	if (filepath == NULL) {
-		fprintf(stderr, "Failed to allocate memory\n");
-		return;
-	}
-	file_num = rte_strsplit(filepath, strlen(filepath), file_fld, 2, ',');
+static void cmd_set_nvgre_parsed(void *parsed_result,
+	__rte_unused struct cmdline *cl,
+	__rte_unused void *data)
+{
+	struct cmd_set_nvgre_result *res = parsed_result;
+	union {
+		uint32_t nvgre_tni;
+		uint8_t tni[4];
+	} id = {
+		.nvgre_tni = rte_cpu_to_be_32(res->tni) & RTE_BE32(0x00ffffff),
+	};
 
-	buff = open_file(file_fld[0], &size);
-	if (!buff) {
-		free((void *)filepath);
+	if (strcmp(res->nvgre, "nvgre") == 0)
+		nvgre_encap_conf.select_vlan = 0;
+	else if (strcmp(res->nvgre, "nvgre-with-vlan") == 0)
+		nvgre_encap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		nvgre_encap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		nvgre_encap_conf.select_ipv4 = 0;
+	else
 		return;
+	rte_memcpy(nvgre_encap_conf.tni, &id.tni[1], 3);
+	if (nvgre_encap_conf.select_ipv4) {
+		IPV4_ADDR_TO_UINT(res->ip_src, nvgre_encap_conf.ipv4_src);
+		IPV4_ADDR_TO_UINT(res->ip_dst, nvgre_encap_conf.ipv4_dst);
+	} else {
+		IPV6_ADDR_TO_ARRAY(res->ip_src, nvgre_encap_conf.ipv6_src);
+		IPV6_ADDR_TO_ARRAY(res->ip_dst, nvgre_encap_conf.ipv6_dst);
 	}
-
-#ifdef RTE_NET_I40E
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_i40e_process_ddp_package(res->port_id,
-					       buff, size,
-					       RTE_PMD_I40E_PKG_OP_WR_ADD);
-#endif
-
-	if (ret == -EEXIST)
-		fprintf(stderr, "Profile has already existed.\n");
-	else if (ret < 0)
-		fprintf(stderr, "Failed to load profile.\n");
-	else if (file_num == 2)
-		save_file(file_fld[1], buff, size);
-
-	close_file(buff);
-	free((void *)filepath);
+	if (nvgre_encap_conf.select_vlan)
+		nvgre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
+	rte_memcpy(nvgre_encap_conf.eth_src, res->eth_src.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
+	rte_memcpy(nvgre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
 }
 
-static cmdline_parse_inst_t cmd_ddp_add = {
-	.f = cmd_ddp_add_parsed,
+static cmdline_parse_inst_t cmd_set_nvgre = {
+	.f = cmd_set_nvgre_parsed,
 	.data = NULL,
-	.help_str = "ddp add <port_id> <profile_path[,backup_profile_path]>",
+	.help_str = "set nvgre ip-version <ipv4|ipv6> tni <tni> ip-src"
+		" <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
+		" eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_ddp_add_ddp,
-		(void *)&cmd_ddp_add_add,
-		(void *)&cmd_ddp_add_port_id,
-		(void *)&cmd_ddp_add_filepath,
+		(void *)&cmd_set_nvgre_set,
+		(void *)&cmd_set_nvgre_nvgre,
+		(void *)&cmd_set_nvgre_ip_version,
+		(void *)&cmd_set_nvgre_ip_version_value,
+		(void *)&cmd_set_nvgre_tni,
+		(void *)&cmd_set_nvgre_tni_value,
+		(void *)&cmd_set_nvgre_ip_src,
+		(void *)&cmd_set_nvgre_ip_src_value,
+		(void *)&cmd_set_nvgre_ip_dst,
+		(void *)&cmd_set_nvgre_ip_dst_value,
+		(void *)&cmd_set_nvgre_eth_src,
+		(void *)&cmd_set_nvgre_eth_src_value,
+		(void *)&cmd_set_nvgre_eth_dst,
+		(void *)&cmd_set_nvgre_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Delete dynamic device personalization*/
-struct cmd_ddp_del_result {
-	cmdline_fixed_string_t ddp;
-	cmdline_fixed_string_t del;
-	portid_t port_id;
-	char filepath[];
-};
-
-static cmdline_parse_token_string_t cmd_ddp_del_ddp =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, ddp, "ddp");
-static cmdline_parse_token_string_t cmd_ddp_del_del =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, del, "del");
-static cmdline_parse_token_num_t cmd_ddp_del_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_ddp_del_result, port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_ddp_del_filepath =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_del_result, filepath, NULL);
-
-static void
-cmd_ddp_del_parsed(
-	void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-	struct cmd_ddp_del_result *res = parsed_result;
-	uint8_t *buff;
-	uint32_t size;
-	int ret = -ENOTSUP;
-
-	if (!all_ports_stopped()) {
-		fprintf(stderr, "Please stop all ports first\n");
-		return;
-	}
-
-	buff = open_file(res->filepath, &size);
-	if (!buff)
-		return;
-
-#ifdef RTE_NET_I40E
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_i40e_process_ddp_package(res->port_id,
-					       buff, size,
-					       RTE_PMD_I40E_PKG_OP_WR_DEL);
-#endif
-
-	if (ret == -EACCES)
-		fprintf(stderr, "Profile does not exist.\n");
-	else if (ret < 0)
-		fprintf(stderr, "Failed to delete profile.\n");
-
-	close_file(buff);
-}
-
-static cmdline_parse_inst_t cmd_ddp_del = {
-	.f = cmd_ddp_del_parsed,
+static cmdline_parse_inst_t cmd_set_nvgre_with_vlan = {
+	.f = cmd_set_nvgre_parsed,
 	.data = NULL,
-	.help_str = "ddp del <port_id> <backup_profile_path>",
+	.help_str = "set nvgre-with-vlan ip-version <ipv4|ipv6> tni <tni>"
+		" ip-src <ip-src> ip-dst <ip-dst> vlan-tci <vlan-tci>"
+		" eth-src <eth-src> eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_ddp_del_ddp,
-		(void *)&cmd_ddp_del_del,
-		(void *)&cmd_ddp_del_port_id,
-		(void *)&cmd_ddp_del_filepath,
+		(void *)&cmd_set_nvgre_set,
+		(void *)&cmd_set_nvgre_nvgre_with_vlan,
+		(void *)&cmd_set_nvgre_ip_version,
+		(void *)&cmd_set_nvgre_ip_version_value,
+		(void *)&cmd_set_nvgre_tni,
+		(void *)&cmd_set_nvgre_tni_value,
+		(void *)&cmd_set_nvgre_ip_src,
+		(void *)&cmd_set_nvgre_ip_src_value,
+		(void *)&cmd_set_nvgre_ip_dst,
+		(void *)&cmd_set_nvgre_ip_dst_value,
+		(void *)&cmd_set_nvgre_vlan,
+		(void *)&cmd_set_nvgre_vlan_value,
+		(void *)&cmd_set_nvgre_eth_src,
+		(void *)&cmd_set_nvgre_eth_src_value,
+		(void *)&cmd_set_nvgre_eth_dst,
+		(void *)&cmd_set_nvgre_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Get dynamic device personalization profile info */
-struct cmd_ddp_info_result {
-	cmdline_fixed_string_t ddp;
-	cmdline_fixed_string_t get;
-	cmdline_fixed_string_t info;
-	char filepath[];
+/** Set L2 encapsulation details */
+struct cmd_set_l2_encap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t l2_encap;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
+	uint16_t tci;
+	struct rte_ether_addr eth_src;
+	struct rte_ether_addr eth_dst;
 };
 
-static cmdline_parse_token_string_t cmd_ddp_info_ddp =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, ddp, "ddp");
-static cmdline_parse_token_string_t cmd_ddp_info_get =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, get, "get");
-static cmdline_parse_token_string_t cmd_ddp_info_info =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, info, "info");
-static cmdline_parse_token_string_t cmd_ddp_info_filepath =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_info_result, filepath, NULL);
+static cmdline_parse_token_string_t cmd_set_l2_encap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, set, "set");
+static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap, "l2_encap");
+static cmdline_parse_token_string_t cmd_set_l2_encap_l2_encap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, l2_encap,
+				 "l2_encap-with-vlan");
+static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
+				 "ip-version");
+static cmdline_parse_token_string_t cmd_set_l2_encap_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, ip_version,
+				 "ipv4#ipv6");
+static cmdline_parse_token_string_t cmd_set_l2_encap_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
+				 "vlan-tci");
+static cmdline_parse_token_num_t cmd_set_l2_encap_vlan_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_l2_encap_result, tci, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_l2_encap_eth_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
+				 "eth-src");
+static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_src_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_src);
+static cmdline_parse_token_string_t cmd_set_l2_encap_eth_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_encap_result, pos_token,
+				 "eth-dst");
+static cmdline_parse_token_etheraddr_t cmd_set_l2_encap_eth_dst_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_l2_encap_result, eth_dst);
 
-static void
-cmd_ddp_info_parsed(
-	void *parsed_result,
+static void cmd_set_l2_encap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_ddp_info_result *res = parsed_result;
-	uint8_t *pkg;
-	uint32_t pkg_size;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	uint32_t i, j, n;
-	uint8_t *buff;
-	uint32_t buff_size = 0;
-	struct rte_pmd_i40e_profile_info info;
-	uint32_t dev_num = 0;
-	struct rte_pmd_i40e_ddp_device_id *devs;
-	uint32_t proto_num = 0;
-	struct rte_pmd_i40e_proto_info *proto = NULL;
-	uint32_t pctype_num = 0;
-	struct rte_pmd_i40e_ptype_info *pctype;
-	uint32_t ptype_num = 0;
-	struct rte_pmd_i40e_ptype_info *ptype;
-	uint8_t proto_id;
-
-#endif
+	struct cmd_set_l2_encap_result *res = parsed_result;
 
-	pkg = open_file(res->filepath, &pkg_size);
-	if (!pkg)
+	if (strcmp(res->l2_encap, "l2_encap") == 0)
+		l2_encap_conf.select_vlan = 0;
+	else if (strcmp(res->l2_encap, "l2_encap-with-vlan") == 0)
+		l2_encap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		l2_encap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		l2_encap_conf.select_ipv4 = 0;
+	else
 		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-				(uint8_t *)&info, sizeof(info),
-				RTE_PMD_I40E_PKG_INFO_GLOBAL_HEADER);
-	if (!ret) {
-		printf("Global Track id:       0x%x\n", info.track_id);
-		printf("Global Version:        %d.%d.%d.%d\n",
-			info.version.major,
-			info.version.minor,
-			info.version.update,
-			info.version.draft);
-		printf("Global Package name:   %s\n\n", info.name);
-	}
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-				(uint8_t *)&info, sizeof(info),
-				RTE_PMD_I40E_PKG_INFO_HEADER);
-	if (!ret) {
-		printf("i40e Profile Track id: 0x%x\n", info.track_id);
-		printf("i40e Profile Version:  %d.%d.%d.%d\n",
-			info.version.major,
-			info.version.minor,
-			info.version.update,
-			info.version.draft);
-		printf("i40e Profile name:     %s\n\n", info.name);
-	}
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-				(uint8_t *)&buff_size, sizeof(buff_size),
-				RTE_PMD_I40E_PKG_INFO_GLOBAL_NOTES_SIZE);
-	if (!ret && buff_size) {
-		buff = (uint8_t *)malloc(buff_size);
-		if (buff) {
-			ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-						buff, buff_size,
-						RTE_PMD_I40E_PKG_INFO_GLOBAL_NOTES);
-			if (!ret)
-				printf("Package Notes:\n%s\n\n", buff);
-			free(buff);
-		}
-	}
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-				(uint8_t *)&dev_num, sizeof(dev_num),
-				RTE_PMD_I40E_PKG_INFO_DEVID_NUM);
-	if (!ret && dev_num) {
-		buff_size = dev_num * sizeof(struct rte_pmd_i40e_ddp_device_id);
-		devs = (struct rte_pmd_i40e_ddp_device_id *)malloc(buff_size);
-		if (devs) {
-			ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-						(uint8_t *)devs, buff_size,
-						RTE_PMD_I40E_PKG_INFO_DEVID_LIST);
-			if (!ret) {
-				printf("List of supported devices:\n");
-				for (i = 0; i < dev_num; i++) {
-					printf("  %04X:%04X %04X:%04X\n",
-						devs[i].vendor_dev_id >> 16,
-						devs[i].vendor_dev_id & 0xFFFF,
-						devs[i].sub_vendor_dev_id >> 16,
-						devs[i].sub_vendor_dev_id & 0xFFFF);
-				}
-				printf("\n");
-			}
-			free(devs);
-		}
-	}
-
-	/* get information about protocols and packet types */
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-		(uint8_t *)&proto_num, sizeof(proto_num),
-		RTE_PMD_I40E_PKG_INFO_PROTOCOL_NUM);
-	if (ret || !proto_num)
-		goto no_print_return;
-
-	buff_size = proto_num * sizeof(struct rte_pmd_i40e_proto_info);
-	proto = (struct rte_pmd_i40e_proto_info *)malloc(buff_size);
-	if (!proto)
-		goto no_print_return;
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size, (uint8_t *)proto,
-					buff_size,
-					RTE_PMD_I40E_PKG_INFO_PROTOCOL_LIST);
-	if (!ret) {
-		printf("List of used protocols:\n");
-		for (i = 0; i < proto_num; i++)
-			printf("  %2u: %s\n", proto[i].proto_id,
-			       proto[i].name);
-		printf("\n");
-	}
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size,
-		(uint8_t *)&pctype_num, sizeof(pctype_num),
-		RTE_PMD_I40E_PKG_INFO_PCTYPE_NUM);
-	if (ret || !pctype_num)
-		goto no_print_pctypes;
-
-	buff_size = pctype_num * sizeof(struct rte_pmd_i40e_ptype_info);
-	pctype = (struct rte_pmd_i40e_ptype_info *)malloc(buff_size);
-	if (!pctype)
-		goto no_print_pctypes;
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size, (uint8_t *)pctype,
-					buff_size,
-					RTE_PMD_I40E_PKG_INFO_PCTYPE_LIST);
-	if (ret) {
-		free(pctype);
-		goto no_print_pctypes;
-	}
-
-	printf("List of defined packet classification types:\n");
-	for (i = 0; i < pctype_num; i++) {
-		printf("  %2u:", pctype[i].ptype_id);
-		for (j = 0; j < RTE_PMD_I40E_PROTO_NUM; j++) {
-			proto_id = pctype[i].protocols[j];
-			if (proto_id != RTE_PMD_I40E_PROTO_UNUSED) {
-				for (n = 0; n < proto_num; n++) {
-					if (proto[n].proto_id == proto_id) {
-						printf(" %s", proto[n].name);
-						break;
-					}
-				}
-			}
-		}
-		printf("\n");
-	}
-	printf("\n");
-	free(pctype);
-
-no_print_pctypes:
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size, (uint8_t *)&ptype_num,
-					sizeof(ptype_num),
-					RTE_PMD_I40E_PKG_INFO_PTYPE_NUM);
-	if (ret || !ptype_num)
-		goto no_print_return;
-
-	buff_size = ptype_num * sizeof(struct rte_pmd_i40e_ptype_info);
-	ptype = (struct rte_pmd_i40e_ptype_info *)malloc(buff_size);
-	if (!ptype)
-		goto no_print_return;
-
-	ret = rte_pmd_i40e_get_ddp_info(pkg, pkg_size, (uint8_t *)ptype,
-					buff_size,
-					RTE_PMD_I40E_PKG_INFO_PTYPE_LIST);
-	if (ret) {
-		free(ptype);
-		goto no_print_return;
-	}
-	printf("List of defined packet types:\n");
-	for (i = 0; i < ptype_num; i++) {
-		printf("  %2u:", ptype[i].ptype_id);
-		for (j = 0; j < RTE_PMD_I40E_PROTO_NUM; j++) {
-			proto_id = ptype[i].protocols[j];
-			if (proto_id != RTE_PMD_I40E_PROTO_UNUSED) {
-				for (n = 0; n < proto_num; n++) {
-					if (proto[n].proto_id == proto_id) {
-						printf(" %s", proto[n].name);
-						break;
-					}
-				}
-			}
-		}
-		printf("\n");
-	}
-	free(ptype);
-	printf("\n");
-
-	ret = 0;
-no_print_return:
-	free(proto);
-#endif
-	if (ret == -ENOTSUP)
-		fprintf(stderr, "Function not supported in PMD\n");
-	close_file(pkg);
+	if (l2_encap_conf.select_vlan)
+		l2_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
+	rte_memcpy(l2_encap_conf.eth_src, res->eth_src.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
+	rte_memcpy(l2_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
 }
 
-static cmdline_parse_inst_t cmd_ddp_get_info = {
-	.f = cmd_ddp_info_parsed,
+static cmdline_parse_inst_t cmd_set_l2_encap = {
+	.f = cmd_set_l2_encap_parsed,
 	.data = NULL,
-	.help_str = "ddp get info <profile_path>",
+	.help_str = "set l2_encap ip-version ipv4|ipv6"
+		" eth-src <eth-src> eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_ddp_info_ddp,
-		(void *)&cmd_ddp_info_get,
-		(void *)&cmd_ddp_info_info,
-		(void *)&cmd_ddp_info_filepath,
+		(void *)&cmd_set_l2_encap_set,
+		(void *)&cmd_set_l2_encap_l2_encap,
+		(void *)&cmd_set_l2_encap_ip_version,
+		(void *)&cmd_set_l2_encap_ip_version_value,
+		(void *)&cmd_set_l2_encap_eth_src,
+		(void *)&cmd_set_l2_encap_eth_src_value,
+		(void *)&cmd_set_l2_encap_eth_dst,
+		(void *)&cmd_set_l2_encap_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Get dynamic device personalization profile info list*/
-#define PROFILE_INFO_SIZE 48
-#define MAX_PROFILE_NUM 16
-
-struct cmd_ddp_get_list_result {
-	cmdline_fixed_string_t ddp;
-	cmdline_fixed_string_t get;
-	cmdline_fixed_string_t list;
-	portid_t port_id;
-};
-
-static cmdline_parse_token_string_t cmd_ddp_get_list_ddp =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, ddp, "ddp");
-static cmdline_parse_token_string_t cmd_ddp_get_list_get =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, get, "get");
-static cmdline_parse_token_string_t cmd_ddp_get_list_list =
-	TOKEN_STRING_INITIALIZER(struct cmd_ddp_get_list_result, list, "list");
-static cmdline_parse_token_num_t cmd_ddp_get_list_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_ddp_get_list_result, port_id,
-		RTE_UINT16);
-
-static void
-cmd_ddp_get_list_parsed(
-	__rte_unused void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-#ifdef RTE_NET_I40E
-	struct cmd_ddp_get_list_result *res = parsed_result;
-	struct rte_pmd_i40e_profile_list *p_list;
-	struct rte_pmd_i40e_profile_info *p_info;
-	uint32_t p_num;
-	uint32_t size;
-	uint32_t i;
-#endif
-	int ret = -ENOTSUP;
-
-#ifdef RTE_NET_I40E
-	size = PROFILE_INFO_SIZE * MAX_PROFILE_NUM + 4;
-	p_list = (struct rte_pmd_i40e_profile_list *)malloc(size);
-	if (!p_list) {
-		fprintf(stderr, "%s: Failed to malloc buffer\n", __func__);
-		return;
-	}
-
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_i40e_get_ddp_list(res->port_id,
-						(uint8_t *)p_list, size);
-
-	if (!ret) {
-		p_num = p_list->p_count;
-		printf("Profile number is: %d\n\n", p_num);
-
-		for (i = 0; i < p_num; i++) {
-			p_info = &p_list->p_info[i];
-			printf("Profile %d:\n", i);
-			printf("Track id:     0x%x\n", p_info->track_id);
-			printf("Version:      %d.%d.%d.%d\n",
-			       p_info->version.major,
-			       p_info->version.minor,
-			       p_info->version.update,
-			       p_info->version.draft);
-			printf("Profile name: %s\n\n", p_info->name);
-		}
-	}
-
-	free(p_list);
-#endif
-
-	if (ret < 0)
-		fprintf(stderr, "Failed to get ddp list\n");
-}
-
-static cmdline_parse_inst_t cmd_ddp_get_list = {
-	.f = cmd_ddp_get_list_parsed,
+static cmdline_parse_inst_t cmd_set_l2_encap_with_vlan = {
+	.f = cmd_set_l2_encap_parsed,
 	.data = NULL,
-	.help_str = "ddp get list <port_id>",
+	.help_str = "set l2_encap-with-vlan ip-version ipv4|ipv6"
+		" vlan-tci <vlan-tci> eth-src <eth-src> eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_ddp_get_list_ddp,
-		(void *)&cmd_ddp_get_list_get,
-		(void *)&cmd_ddp_get_list_list,
-		(void *)&cmd_ddp_get_list_port_id,
+		(void *)&cmd_set_l2_encap_set,
+		(void *)&cmd_set_l2_encap_l2_encap_with_vlan,
+		(void *)&cmd_set_l2_encap_ip_version,
+		(void *)&cmd_set_l2_encap_ip_version_value,
+		(void *)&cmd_set_l2_encap_vlan,
+		(void *)&cmd_set_l2_encap_vlan_value,
+		(void *)&cmd_set_l2_encap_eth_src,
+		(void *)&cmd_set_l2_encap_eth_src_value,
+		(void *)&cmd_set_l2_encap_eth_dst,
+		(void *)&cmd_set_l2_encap_eth_dst_value,
 		NULL,
 	},
 };
 
-/* Configure input set */
-struct cmd_cfg_input_set_result {
-	cmdline_fixed_string_t port;
-	cmdline_fixed_string_t cfg;
-	portid_t port_id;
-	cmdline_fixed_string_t pctype;
-	uint8_t pctype_id;
-	cmdline_fixed_string_t inset_type;
-	cmdline_fixed_string_t opt;
-	cmdline_fixed_string_t field;
-	uint8_t field_idx;
+/** Set L2 decapsulation details */
+struct cmd_set_l2_decap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t l2_decap;
+	cmdline_fixed_string_t pos_token;
+	uint32_t vlan_present:1;
 };
 
-static void
-cmd_cfg_input_set_parsed(
-	__rte_unused void *parsed_result,
+static cmdline_parse_token_string_t cmd_set_l2_decap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, set, "set");
+static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
+				 "l2_decap");
+static cmdline_parse_token_string_t cmd_set_l2_decap_l2_decap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_l2_decap_result, l2_decap,
+				 "l2_decap-with-vlan");
+
+static void cmd_set_l2_decap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-#ifdef RTE_NET_I40E
-	struct cmd_cfg_input_set_result *res = parsed_result;
-	enum rte_pmd_i40e_inset_type inset_type = INSET_NONE;
-	struct rte_pmd_i40e_inset inset;
-#endif
-	int ret = -ENOTSUP;
-
-	if (!all_ports_stopped()) {
-		fprintf(stderr, "Please stop all ports first\n");
-		return;
-	}
-
-#ifdef RTE_NET_I40E
-	if (!strcmp(res->inset_type, "hash_inset"))
-		inset_type = INSET_HASH;
-	else if (!strcmp(res->inset_type, "fdir_inset"))
-		inset_type = INSET_FDIR;
-	else if (!strcmp(res->inset_type, "fdir_flx_inset"))
-		inset_type = INSET_FDIR_FLX;
-	ret = rte_pmd_i40e_inset_get(res->port_id, res->pctype_id,
-				     &inset, inset_type);
-	if (ret) {
-		fprintf(stderr, "Failed to get input set.\n");
-		return;
-	}
-
-	if (!strcmp(res->opt, "get")) {
-		ret = rte_pmd_i40e_inset_field_get(inset.inset,
-						   res->field_idx);
-		if (ret)
-			printf("Field index %d is enabled.\n", res->field_idx);
-		else
-			printf("Field index %d is disabled.\n", res->field_idx);
-		return;
-	} else if (!strcmp(res->opt, "set"))
-		ret = rte_pmd_i40e_inset_field_set(&inset.inset,
-						   res->field_idx);
-	else if (!strcmp(res->opt, "clear"))
-		ret = rte_pmd_i40e_inset_field_clear(&inset.inset,
-						     res->field_idx);
-	if (ret) {
-		fprintf(stderr, "Failed to configure input set field.\n");
-		return;
-	}
-
-	ret = rte_pmd_i40e_inset_set(res->port_id, res->pctype_id,
-				     &inset, inset_type);
-	if (ret) {
-		fprintf(stderr, "Failed to set input set.\n");
-		return;
-	}
-#endif
+	struct cmd_set_l2_decap_result *res = parsed_result;
 
-	if (ret == -ENOTSUP)
-		fprintf(stderr, "Function not supported\n");
+	if (strcmp(res->l2_decap, "l2_decap") == 0)
+		l2_decap_conf.select_vlan = 0;
+	else if (strcmp(res->l2_decap, "l2_decap-with-vlan") == 0)
+		l2_decap_conf.select_vlan = 1;
 }
 
-static cmdline_parse_token_string_t cmd_cfg_input_set_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 port, "port");
-static cmdline_parse_token_string_t cmd_cfg_input_set_cfg =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 cfg, "config");
-static cmdline_parse_token_num_t cmd_cfg_input_set_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
-			      port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_cfg_input_set_pctype =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 pctype, "pctype");
-static cmdline_parse_token_num_t cmd_cfg_input_set_pctype_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
-			      pctype_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_cfg_input_set_inset_type =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 inset_type,
-				 "hash_inset#fdir_inset#fdir_flx_inset");
-static cmdline_parse_token_string_t cmd_cfg_input_set_opt =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 opt, "get#set#clear");
-static cmdline_parse_token_string_t cmd_cfg_input_set_field =
-	TOKEN_STRING_INITIALIZER(struct cmd_cfg_input_set_result,
-				 field, "field");
-static cmdline_parse_token_num_t cmd_cfg_input_set_field_idx =
-	TOKEN_NUM_INITIALIZER(struct cmd_cfg_input_set_result,
-			      field_idx, RTE_UINT8);
-
-static cmdline_parse_inst_t cmd_cfg_input_set = {
-	.f = cmd_cfg_input_set_parsed,
+static cmdline_parse_inst_t cmd_set_l2_decap = {
+	.f = cmd_set_l2_decap_parsed,
 	.data = NULL,
-	.help_str = "port config <port_id> pctype <pctype_id> hash_inset|"
-		    "fdir_inset|fdir_flx_inset get|set|clear field <field_idx>",
+	.help_str = "set l2_decap",
 	.tokens = {
-		(void *)&cmd_cfg_input_set_port,
-		(void *)&cmd_cfg_input_set_cfg,
-		(void *)&cmd_cfg_input_set_port_id,
-		(void *)&cmd_cfg_input_set_pctype,
-		(void *)&cmd_cfg_input_set_pctype_id,
-		(void *)&cmd_cfg_input_set_inset_type,
-		(void *)&cmd_cfg_input_set_opt,
-		(void *)&cmd_cfg_input_set_field,
-		(void *)&cmd_cfg_input_set_field_idx,
+		(void *)&cmd_set_l2_decap_set,
+		(void *)&cmd_set_l2_decap_l2_decap,
 		NULL,
 	},
 };
 
-/* Clear input set */
-struct cmd_clear_input_set_result {
-	cmdline_fixed_string_t port;
-	cmdline_fixed_string_t cfg;
-	portid_t port_id;
-	cmdline_fixed_string_t pctype;
-	uint8_t pctype_id;
-	cmdline_fixed_string_t inset_type;
-	cmdline_fixed_string_t clear;
-	cmdline_fixed_string_t all;
-};
-
-static void
-cmd_clear_input_set_parsed(
-	__rte_unused void *parsed_result,
-	__rte_unused struct cmdline *cl,
-	__rte_unused void *data)
-{
-#ifdef RTE_NET_I40E
-	struct cmd_clear_input_set_result *res = parsed_result;
-	enum rte_pmd_i40e_inset_type inset_type = INSET_NONE;
-	struct rte_pmd_i40e_inset inset;
-#endif
-	int ret = -ENOTSUP;
-
-	if (!all_ports_stopped()) {
-		fprintf(stderr, "Please stop all ports first\n");
-		return;
-	}
-
-#ifdef RTE_NET_I40E
-	if (!strcmp(res->inset_type, "hash_inset"))
-		inset_type = INSET_HASH;
-	else if (!strcmp(res->inset_type, "fdir_inset"))
-		inset_type = INSET_FDIR;
-	else if (!strcmp(res->inset_type, "fdir_flx_inset"))
-		inset_type = INSET_FDIR_FLX;
-
-	memset(&inset, 0, sizeof(inset));
-
-	ret = rte_pmd_i40e_inset_set(res->port_id, res->pctype_id,
-				     &inset, inset_type);
-	if (ret) {
-		fprintf(stderr, "Failed to clear input set.\n");
-		return;
-	}
-
-#endif
-
-	if (ret == -ENOTSUP)
-		fprintf(stderr, "Function not supported\n");
-}
-
-static cmdline_parse_token_string_t cmd_clear_input_set_port =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 port, "port");
-static cmdline_parse_token_string_t cmd_clear_input_set_cfg =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 cfg, "config");
-static cmdline_parse_token_num_t cmd_clear_input_set_port_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_clear_input_set_result,
-			      port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_clear_input_set_pctype =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 pctype, "pctype");
-static cmdline_parse_token_num_t cmd_clear_input_set_pctype_id =
-	TOKEN_NUM_INITIALIZER(struct cmd_clear_input_set_result,
-			      pctype_id, RTE_UINT8);
-static cmdline_parse_token_string_t cmd_clear_input_set_inset_type =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 inset_type,
-				 "hash_inset#fdir_inset#fdir_flx_inset");
-static cmdline_parse_token_string_t cmd_clear_input_set_clear =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 clear, "clear");
-static cmdline_parse_token_string_t cmd_clear_input_set_all =
-	TOKEN_STRING_INITIALIZER(struct cmd_clear_input_set_result,
-				 all, "all");
-
-static cmdline_parse_inst_t cmd_clear_input_set = {
-	.f = cmd_clear_input_set_parsed,
+static cmdline_parse_inst_t cmd_set_l2_decap_with_vlan = {
+	.f = cmd_set_l2_decap_parsed,
 	.data = NULL,
-	.help_str = "port config <port_id> pctype <pctype_id> hash_inset|"
-		    "fdir_inset|fdir_flx_inset clear all",
+	.help_str = "set l2_decap-with-vlan",
 	.tokens = {
-		(void *)&cmd_clear_input_set_port,
-		(void *)&cmd_clear_input_set_cfg,
-		(void *)&cmd_clear_input_set_port_id,
-		(void *)&cmd_clear_input_set_pctype,
-		(void *)&cmd_clear_input_set_pctype_id,
-		(void *)&cmd_clear_input_set_inset_type,
-		(void *)&cmd_clear_input_set_clear,
-		(void *)&cmd_clear_input_set_all,
+		(void *)&cmd_set_l2_decap_set,
+		(void *)&cmd_set_l2_decap_l2_decap_with_vlan,
 		NULL,
 	},
 };
 
-/* show vf stats */
-
-/* Common result structure for show vf stats */
-struct cmd_show_vf_stats_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t stats;
-	portid_t port_id;
-	uint16_t vf_id;
+/** Set MPLSoGRE encapsulation details */
+struct cmd_set_mplsogre_encap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t mplsogre;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
+	uint32_t label;
+	cmdline_ipaddr_t ip_src;
+	cmdline_ipaddr_t ip_dst;
+	uint16_t tci;
+	struct rte_ether_addr eth_src;
+	struct rte_ether_addr eth_dst;
 };
 
-/* Common CLI fields show vf stats*/
-static cmdline_parse_token_string_t cmd_show_vf_stats_show =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_show_vf_stats_result,
-		 show, "show");
-static cmdline_parse_token_string_t cmd_show_vf_stats_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_show_vf_stats_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_show_vf_stats_stats =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_show_vf_stats_result,
-		 stats, "stats");
-static cmdline_parse_token_num_t cmd_show_vf_stats_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_show_vf_stats_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_show_vf_stats_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_show_vf_stats_result,
-		 vf_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, set,
+				 "set");
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result, mplsogre,
+				 "mplsogre_encap");
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_mplsogre_encap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 mplsogre, "mplsogre_encap-with-vlan");
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "ip-version");
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 ip_version, "ipv4#ipv6");
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_label =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "label");
+static cmdline_parse_token_num_t cmd_set_mplsogre_encap_label_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, label,
+			      RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "ip-src");
+static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_src_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_src);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_ip_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "ip-dst");
+static cmdline_parse_token_ipaddr_t cmd_set_mplsogre_encap_ip_dst_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result, ip_dst);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "vlan-tci");
+static cmdline_parse_token_num_t cmd_set_mplsogre_encap_vlan_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsogre_encap_result, tci,
+			      RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "eth-src");
+static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_src_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				    eth_src);
+static cmdline_parse_token_string_t cmd_set_mplsogre_encap_eth_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				 pos_token, "eth-dst");
+static cmdline_parse_token_etheraddr_t cmd_set_mplsogre_encap_eth_dst_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsogre_encap_result,
+				    eth_dst);
 
-static void
-cmd_show_vf_stats_parsed(
-	void *parsed_result,
+static void cmd_set_mplsogre_encap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_show_vf_stats_result *res = parsed_result;
-	struct rte_eth_stats stats;
-	int ret = -ENOTSUP;
-	static const char *nic_stats_border = "########################";
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-	memset(&stats, 0, sizeof(stats));
-
-#ifdef RTE_NET_I40E
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_i40e_get_vf_stats(res->port_id,
-						res->vf_id,
-						&stats);
-#endif
-#ifdef RTE_NET_BNXT
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_bnxt_get_vf_stats(res->port_id,
-						res->vf_id,
-						&stats);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d\n", res->vf_id);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
-
-	printf("\n  %s NIC statistics for port %-2d vf %-2d %s\n",
-		nic_stats_border, res->port_id, res->vf_id, nic_stats_border);
-
-	printf("  RX-packets: %-10"PRIu64" RX-missed: %-10"PRIu64" RX-bytes:  "
-	       "%-"PRIu64"\n",
-	       stats.ipackets, stats.imissed, stats.ibytes);
-	printf("  RX-errors: %-"PRIu64"\n", stats.ierrors);
-	printf("  RX-nombuf:  %-10"PRIu64"\n",
-	       stats.rx_nombuf);
-	printf("  TX-packets: %-10"PRIu64" TX-errors: %-10"PRIu64" TX-bytes:  "
-	       "%-"PRIu64"\n",
-	       stats.opackets, stats.oerrors, stats.obytes);
+	struct cmd_set_mplsogre_encap_result *res = parsed_result;
+	union {
+		uint32_t mplsogre_label;
+		uint8_t label[4];
+	} id = {
+		.mplsogre_label = rte_cpu_to_be_32(res->label<<12),
+	};
 
-	printf("  %s############################%s\n",
-			       nic_stats_border, nic_stats_border);
+	if (strcmp(res->mplsogre, "mplsogre_encap") == 0)
+		mplsogre_encap_conf.select_vlan = 0;
+	else if (strcmp(res->mplsogre, "mplsogre_encap-with-vlan") == 0)
+		mplsogre_encap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		mplsogre_encap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		mplsogre_encap_conf.select_ipv4 = 0;
+	else
+		return;
+	rte_memcpy(mplsogre_encap_conf.label, &id.label, 3);
+	if (mplsogre_encap_conf.select_ipv4) {
+		IPV4_ADDR_TO_UINT(res->ip_src, mplsogre_encap_conf.ipv4_src);
+		IPV4_ADDR_TO_UINT(res->ip_dst, mplsogre_encap_conf.ipv4_dst);
+	} else {
+		IPV6_ADDR_TO_ARRAY(res->ip_src, mplsogre_encap_conf.ipv6_src);
+		IPV6_ADDR_TO_ARRAY(res->ip_dst, mplsogre_encap_conf.ipv6_dst);
+	}
+	if (mplsogre_encap_conf.select_vlan)
+		mplsogre_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
+	rte_memcpy(mplsogre_encap_conf.eth_src, res->eth_src.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
+	rte_memcpy(mplsogre_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
 }
 
-static cmdline_parse_inst_t cmd_show_vf_stats = {
-	.f = cmd_show_vf_stats_parsed,
+static cmdline_parse_inst_t cmd_set_mplsogre_encap = {
+	.f = cmd_set_mplsogre_encap_parsed,
 	.data = NULL,
-	.help_str = "show vf stats <port_id> <vf_id>",
+	.help_str = "set mplsogre_encap ip-version ipv4|ipv6 label <label>"
+		" ip-src <ip-src> ip-dst <ip-dst> eth-src <eth-src>"
+		" eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_show_vf_stats_show,
-		(void *)&cmd_show_vf_stats_vf,
-		(void *)&cmd_show_vf_stats_stats,
-		(void *)&cmd_show_vf_stats_port_id,
-		(void *)&cmd_show_vf_stats_vf_id,
+		(void *)&cmd_set_mplsogre_encap_set,
+		(void *)&cmd_set_mplsogre_encap_mplsogre_encap,
+		(void *)&cmd_set_mplsogre_encap_ip_version,
+		(void *)&cmd_set_mplsogre_encap_ip_version_value,
+		(void *)&cmd_set_mplsogre_encap_label,
+		(void *)&cmd_set_mplsogre_encap_label_value,
+		(void *)&cmd_set_mplsogre_encap_ip_src,
+		(void *)&cmd_set_mplsogre_encap_ip_src_value,
+		(void *)&cmd_set_mplsogre_encap_ip_dst,
+		(void *)&cmd_set_mplsogre_encap_ip_dst_value,
+		(void *)&cmd_set_mplsogre_encap_eth_src,
+		(void *)&cmd_set_mplsogre_encap_eth_src_value,
+		(void *)&cmd_set_mplsogre_encap_eth_dst,
+		(void *)&cmd_set_mplsogre_encap_eth_dst_value,
 		NULL,
 	},
 };
 
-/* clear vf stats */
+static cmdline_parse_inst_t cmd_set_mplsogre_encap_with_vlan = {
+	.f = cmd_set_mplsogre_encap_parsed,
+	.data = NULL,
+	.help_str = "set mplsogre_encap-with-vlan ip-version ipv4|ipv6"
+		" label <label> ip-src <ip-src> ip-dst <ip-dst>"
+		" vlan-tci <vlan-tci> eth-src <eth-src> eth-dst <eth-dst>",
+	.tokens = {
+		(void *)&cmd_set_mplsogre_encap_set,
+		(void *)&cmd_set_mplsogre_encap_mplsogre_encap_with_vlan,
+		(void *)&cmd_set_mplsogre_encap_ip_version,
+		(void *)&cmd_set_mplsogre_encap_ip_version_value,
+		(void *)&cmd_set_mplsogre_encap_label,
+		(void *)&cmd_set_mplsogre_encap_label_value,
+		(void *)&cmd_set_mplsogre_encap_ip_src,
+		(void *)&cmd_set_mplsogre_encap_ip_src_value,
+		(void *)&cmd_set_mplsogre_encap_ip_dst,
+		(void *)&cmd_set_mplsogre_encap_ip_dst_value,
+		(void *)&cmd_set_mplsogre_encap_vlan,
+		(void *)&cmd_set_mplsogre_encap_vlan_value,
+		(void *)&cmd_set_mplsogre_encap_eth_src,
+		(void *)&cmd_set_mplsogre_encap_eth_src_value,
+		(void *)&cmd_set_mplsogre_encap_eth_dst,
+		(void *)&cmd_set_mplsogre_encap_eth_dst_value,
+		NULL,
+	},
+};
 
-/* Common result structure for clear vf stats */
-struct cmd_clear_vf_stats_result {
-	cmdline_fixed_string_t clear;
-	cmdline_fixed_string_t vf;
-	cmdline_fixed_string_t stats;
-	portid_t port_id;
-	uint16_t vf_id;
+/** Set MPLSoGRE decapsulation details */
+struct cmd_set_mplsogre_decap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t mplsogre;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
 };
 
-/* Common CLI fields clear vf stats*/
-static cmdline_parse_token_string_t cmd_clear_vf_stats_clear =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_clear_vf_stats_result,
-		 clear, "clear");
-static cmdline_parse_token_string_t cmd_clear_vf_stats_vf =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_clear_vf_stats_result,
-		 vf, "vf");
-static cmdline_parse_token_string_t cmd_clear_vf_stats_stats =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_clear_vf_stats_result,
-		 stats, "stats");
-static cmdline_parse_token_num_t cmd_clear_vf_stats_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_clear_vf_stats_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_num_t cmd_clear_vf_stats_vf_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_clear_vf_stats_result,
-		 vf_id, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, set,
+				 "set");
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result, mplsogre,
+				 "mplsogre_decap");
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_mplsogre_decap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
+				 mplsogre, "mplsogre_decap-with-vlan");
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
+				 pos_token, "ip-version");
+static cmdline_parse_token_string_t cmd_set_mplsogre_decap_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsogre_decap_result,
+				 ip_version, "ipv4#ipv6");
 
-static void
-cmd_clear_vf_stats_parsed(
-	void *parsed_result,
+static void cmd_set_mplsogre_decap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_clear_vf_stats_result *res = parsed_result;
-	int ret = -ENOTSUP;
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_i40e_reset_vf_stats(res->port_id,
-						  res->vf_id);
-#endif
-#ifdef RTE_NET_BNXT
-	if (ret == -ENOTSUP)
-		ret = rte_pmd_bnxt_reset_vf_stats(res->port_id,
-						  res->vf_id);
-#endif
+	struct cmd_set_mplsogre_decap_result *res = parsed_result;
 
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid vf_id %d\n", res->vf_id);
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
+	if (strcmp(res->mplsogre, "mplsogre_decap") == 0)
+		mplsogre_decap_conf.select_vlan = 0;
+	else if (strcmp(res->mplsogre, "mplsogre_decap-with-vlan") == 0)
+		mplsogre_decap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		mplsogre_decap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		mplsogre_decap_conf.select_ipv4 = 0;
 }
 
-static cmdline_parse_inst_t cmd_clear_vf_stats = {
-	.f = cmd_clear_vf_stats_parsed,
+static cmdline_parse_inst_t cmd_set_mplsogre_decap = {
+	.f = cmd_set_mplsogre_decap_parsed,
 	.data = NULL,
-	.help_str = "clear vf stats <port_id> <vf_id>",
+	.help_str = "set mplsogre_decap ip-version ipv4|ipv6",
 	.tokens = {
-		(void *)&cmd_clear_vf_stats_clear,
-		(void *)&cmd_clear_vf_stats_vf,
-		(void *)&cmd_clear_vf_stats_stats,
-		(void *)&cmd_clear_vf_stats_port_id,
-		(void *)&cmd_clear_vf_stats_vf_id,
+		(void *)&cmd_set_mplsogre_decap_set,
+		(void *)&cmd_set_mplsogre_decap_mplsogre_decap,
+		(void *)&cmd_set_mplsogre_decap_ip_version,
+		(void *)&cmd_set_mplsogre_decap_ip_version_value,
 		NULL,
 	},
 };
 
-/* port config pctype mapping reset */
+static cmdline_parse_inst_t cmd_set_mplsogre_decap_with_vlan = {
+	.f = cmd_set_mplsogre_decap_parsed,
+	.data = NULL,
+	.help_str = "set mplsogre_decap-with-vlan ip-version ipv4|ipv6",
+	.tokens = {
+		(void *)&cmd_set_mplsogre_decap_set,
+		(void *)&cmd_set_mplsogre_decap_mplsogre_decap_with_vlan,
+		(void *)&cmd_set_mplsogre_decap_ip_version,
+		(void *)&cmd_set_mplsogre_decap_ip_version_value,
+		NULL,
+	},
+};
 
-/* Common result structure for port config pctype mapping reset */
-struct cmd_pctype_mapping_reset_result {
-	cmdline_fixed_string_t port;
-	cmdline_fixed_string_t config;
-	portid_t port_id;
-	cmdline_fixed_string_t pctype;
-	cmdline_fixed_string_t mapping;
-	cmdline_fixed_string_t reset;
+/** Set MPLSoUDP encapsulation details */
+struct cmd_set_mplsoudp_encap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t mplsoudp;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
+	uint32_t label;
+	uint16_t udp_src;
+	uint16_t udp_dst;
+	cmdline_ipaddr_t ip_src;
+	cmdline_ipaddr_t ip_dst;
+	uint16_t tci;
+	struct rte_ether_addr eth_src;
+	struct rte_ether_addr eth_dst;
 };
 
-/* Common CLI fields for port config pctype mapping reset*/
-static cmdline_parse_token_string_t cmd_pctype_mapping_reset_port =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 port, "port");
-static cmdline_parse_token_string_t cmd_pctype_mapping_reset_config =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 config, "config");
-static cmdline_parse_token_num_t cmd_pctype_mapping_reset_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_pctype_mapping_reset_pctype =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 pctype, "pctype");
-static cmdline_parse_token_string_t cmd_pctype_mapping_reset_mapping =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 mapping, "mapping");
-static cmdline_parse_token_string_t cmd_pctype_mapping_reset_reset =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_reset_result,
-		 reset, "reset");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, set,
+				 "set");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result, mplsoudp,
+				 "mplsoudp_encap");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 mplsoudp, "mplsoudp_encap-with-vlan");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "ip-version");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 ip_version, "ipv4#ipv6");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_label =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "label");
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_label_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, label,
+			      RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "udp-src");
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_src_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_src,
+			      RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_udp_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "udp-dst");
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_udp_dst_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, udp_dst,
+			      RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "ip-src");
+static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_src_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_src);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_ip_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "ip-dst");
+static cmdline_parse_token_ipaddr_t cmd_set_mplsoudp_encap_ip_dst_value =
+	TOKEN_IPADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result, ip_dst);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "vlan-tci");
+static cmdline_parse_token_num_t cmd_set_mplsoudp_encap_vlan_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_mplsoudp_encap_result, tci,
+			      RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_src =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "eth-src");
+static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_src_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				    eth_src);
+static cmdline_parse_token_string_t cmd_set_mplsoudp_encap_eth_dst =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				 pos_token, "eth-dst");
+static cmdline_parse_token_etheraddr_t cmd_set_mplsoudp_encap_eth_dst_value =
+	TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_mplsoudp_encap_result,
+				    eth_dst);
 
-static void
-cmd_pctype_mapping_reset_parsed(
-	void *parsed_result,
+static void cmd_set_mplsoudp_encap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_pctype_mapping_reset_result *res = parsed_result;
-	int ret = -ENOTSUP;
+	struct cmd_set_mplsoudp_encap_result *res = parsed_result;
+	union {
+		uint32_t mplsoudp_label;
+		uint8_t label[4];
+	} id = {
+		.mplsoudp_label = rte_cpu_to_be_32(res->label<<12),
+	};
 
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+	if (strcmp(res->mplsoudp, "mplsoudp_encap") == 0)
+		mplsoudp_encap_conf.select_vlan = 0;
+	else if (strcmp(res->mplsoudp, "mplsoudp_encap-with-vlan") == 0)
+		mplsoudp_encap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		mplsoudp_encap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		mplsoudp_encap_conf.select_ipv4 = 0;
+	else
 		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_flow_type_mapping_reset(res->port_id);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
+	rte_memcpy(mplsoudp_encap_conf.label, &id.label, 3);
+	mplsoudp_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src);
+	mplsoudp_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst);
+	if (mplsoudp_encap_conf.select_ipv4) {
+		IPV4_ADDR_TO_UINT(res->ip_src, mplsoudp_encap_conf.ipv4_src);
+		IPV4_ADDR_TO_UINT(res->ip_dst, mplsoudp_encap_conf.ipv4_dst);
+	} else {
+		IPV6_ADDR_TO_ARRAY(res->ip_src, mplsoudp_encap_conf.ipv6_src);
+		IPV6_ADDR_TO_ARRAY(res->ip_dst, mplsoudp_encap_conf.ipv6_dst);
 	}
+	if (mplsoudp_encap_conf.select_vlan)
+		mplsoudp_encap_conf.vlan_tci = rte_cpu_to_be_16(res->tci);
+	rte_memcpy(mplsoudp_encap_conf.eth_src, res->eth_src.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
+	rte_memcpy(mplsoudp_encap_conf.eth_dst, res->eth_dst.addr_bytes,
+		   RTE_ETHER_ADDR_LEN);
 }
 
-static cmdline_parse_inst_t cmd_pctype_mapping_reset = {
-	.f = cmd_pctype_mapping_reset_parsed,
+static cmdline_parse_inst_t cmd_set_mplsoudp_encap = {
+	.f = cmd_set_mplsoudp_encap_parsed,
 	.data = NULL,
-	.help_str = "port config <port_id> pctype mapping reset",
+	.help_str = "set mplsoudp_encap ip-version ipv4|ipv6 label <label>"
+		" udp-src <udp-src> udp-dst <udp-dst> ip-src <ip-src>"
+		" ip-dst <ip-dst> eth-src <eth-src> eth-dst <eth-dst>",
 	.tokens = {
-		(void *)&cmd_pctype_mapping_reset_port,
-		(void *)&cmd_pctype_mapping_reset_config,
-		(void *)&cmd_pctype_mapping_reset_port_id,
-		(void *)&cmd_pctype_mapping_reset_pctype,
-		(void *)&cmd_pctype_mapping_reset_mapping,
-		(void *)&cmd_pctype_mapping_reset_reset,
+		(void *)&cmd_set_mplsoudp_encap_set,
+		(void *)&cmd_set_mplsoudp_encap_mplsoudp_encap,
+		(void *)&cmd_set_mplsoudp_encap_ip_version,
+		(void *)&cmd_set_mplsoudp_encap_ip_version_value,
+		(void *)&cmd_set_mplsoudp_encap_label,
+		(void *)&cmd_set_mplsoudp_encap_label_value,
+		(void *)&cmd_set_mplsoudp_encap_udp_src,
+		(void *)&cmd_set_mplsoudp_encap_udp_src_value,
+		(void *)&cmd_set_mplsoudp_encap_udp_dst,
+		(void *)&cmd_set_mplsoudp_encap_udp_dst_value,
+		(void *)&cmd_set_mplsoudp_encap_ip_src,
+		(void *)&cmd_set_mplsoudp_encap_ip_src_value,
+		(void *)&cmd_set_mplsoudp_encap_ip_dst,
+		(void *)&cmd_set_mplsoudp_encap_ip_dst_value,
+		(void *)&cmd_set_mplsoudp_encap_eth_src,
+		(void *)&cmd_set_mplsoudp_encap_eth_src_value,
+		(void *)&cmd_set_mplsoudp_encap_eth_dst,
+		(void *)&cmd_set_mplsoudp_encap_eth_dst_value,
 		NULL,
 	},
 };
 
-/* show port pctype mapping */
+static cmdline_parse_inst_t cmd_set_mplsoudp_encap_with_vlan = {
+	.f = cmd_set_mplsoudp_encap_parsed,
+	.data = NULL,
+	.help_str = "set mplsoudp_encap-with-vlan ip-version ipv4|ipv6"
+		" label <label> udp-src <udp-src> udp-dst <udp-dst>"
+		" ip-src <ip-src> ip-dst <ip-dst> vlan-tci <vlan-tci>"
+		" eth-src <eth-src> eth-dst <eth-dst>",
+	.tokens = {
+		(void *)&cmd_set_mplsoudp_encap_set,
+		(void *)&cmd_set_mplsoudp_encap_mplsoudp_encap_with_vlan,
+		(void *)&cmd_set_mplsoudp_encap_ip_version,
+		(void *)&cmd_set_mplsoudp_encap_ip_version_value,
+		(void *)&cmd_set_mplsoudp_encap_label,
+		(void *)&cmd_set_mplsoudp_encap_label_value,
+		(void *)&cmd_set_mplsoudp_encap_udp_src,
+		(void *)&cmd_set_mplsoudp_encap_udp_src_value,
+		(void *)&cmd_set_mplsoudp_encap_udp_dst,
+		(void *)&cmd_set_mplsoudp_encap_udp_dst_value,
+		(void *)&cmd_set_mplsoudp_encap_ip_src,
+		(void *)&cmd_set_mplsoudp_encap_ip_src_value,
+		(void *)&cmd_set_mplsoudp_encap_ip_dst,
+		(void *)&cmd_set_mplsoudp_encap_ip_dst_value,
+		(void *)&cmd_set_mplsoudp_encap_vlan,
+		(void *)&cmd_set_mplsoudp_encap_vlan_value,
+		(void *)&cmd_set_mplsoudp_encap_eth_src,
+		(void *)&cmd_set_mplsoudp_encap_eth_src_value,
+		(void *)&cmd_set_mplsoudp_encap_eth_dst,
+		(void *)&cmd_set_mplsoudp_encap_eth_dst_value,
+		NULL,
+	},
+};
 
-/* Common result structure for show port pctype mapping */
-struct cmd_pctype_mapping_get_result {
-	cmdline_fixed_string_t show;
-	cmdline_fixed_string_t port;
-	portid_t port_id;
-	cmdline_fixed_string_t pctype;
-	cmdline_fixed_string_t mapping;
+/** Set MPLSoUDP decapsulation details */
+struct cmd_set_mplsoudp_decap_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t mplsoudp;
+	cmdline_fixed_string_t pos_token;
+	cmdline_fixed_string_t ip_version;
+	uint32_t vlan_present:1;
 };
 
-/* Common CLI fields for pctype mapping get */
-static cmdline_parse_token_string_t cmd_pctype_mapping_get_show =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_get_result,
-		 show, "show");
-static cmdline_parse_token_string_t cmd_pctype_mapping_get_port =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_get_result,
-		 port, "port");
-static cmdline_parse_token_num_t cmd_pctype_mapping_get_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_pctype_mapping_get_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_pctype_mapping_get_pctype =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_get_result,
-		 pctype, "pctype");
-static cmdline_parse_token_string_t cmd_pctype_mapping_get_mapping =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_get_result,
-		 mapping, "mapping");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, set,
+				 "set");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result, mplsoudp,
+				 "mplsoudp_decap");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
+				 mplsoudp, "mplsoudp_decap-with-vlan");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
+				 pos_token, "ip-version");
+static cmdline_parse_token_string_t cmd_set_mplsoudp_decap_ip_version_value =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_mplsoudp_decap_result,
+				 ip_version, "ipv4#ipv6");
 
-static void
-cmd_pctype_mapping_get_parsed(
-	void *parsed_result,
+static void cmd_set_mplsoudp_decap_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_pctype_mapping_get_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_flow_type_mapping
-				mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
-	int i, j, first_pctype;
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	ret = rte_pmd_i40e_flow_type_mapping_get(res->port_id, mapping);
-#endif
-
-	switch (ret) {
-	case 0:
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		return;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		return;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-		return;
-	}
+	struct cmd_set_mplsoudp_decap_result *res = parsed_result;
 
-#ifdef RTE_NET_I40E
-	for (i = 0; i < RTE_PMD_I40E_FLOW_TYPE_MAX; i++) {
-		if (mapping[i].pctype != 0ULL) {
-			first_pctype = 1;
-
-			printf("pctype: ");
-			for (j = 0; j < RTE_PMD_I40E_PCTYPE_MAX; j++) {
-				if (mapping[i].pctype & (1ULL << j)) {
-					printf(first_pctype ?
-					       "%02d" : ",%02d", j);
-					first_pctype = 0;
-				}
-			}
-			printf("  ->  flowtype: %02d\n", mapping[i].flow_type);
-		}
-	}
-#endif
+	if (strcmp(res->mplsoudp, "mplsoudp_decap") == 0)
+		mplsoudp_decap_conf.select_vlan = 0;
+	else if (strcmp(res->mplsoudp, "mplsoudp_decap-with-vlan") == 0)
+		mplsoudp_decap_conf.select_vlan = 1;
+	if (strcmp(res->ip_version, "ipv4") == 0)
+		mplsoudp_decap_conf.select_ipv4 = 1;
+	else if (strcmp(res->ip_version, "ipv6") == 0)
+		mplsoudp_decap_conf.select_ipv4 = 0;
 }
 
-static cmdline_parse_inst_t cmd_pctype_mapping_get = {
-	.f = cmd_pctype_mapping_get_parsed,
+static cmdline_parse_inst_t cmd_set_mplsoudp_decap = {
+	.f = cmd_set_mplsoudp_decap_parsed,
 	.data = NULL,
-	.help_str = "show port <port_id> pctype mapping",
+	.help_str = "set mplsoudp_decap ip-version ipv4|ipv6",
 	.tokens = {
-		(void *)&cmd_pctype_mapping_get_show,
-		(void *)&cmd_pctype_mapping_get_port,
-		(void *)&cmd_pctype_mapping_get_port_id,
-		(void *)&cmd_pctype_mapping_get_pctype,
-		(void *)&cmd_pctype_mapping_get_mapping,
+		(void *)&cmd_set_mplsoudp_decap_set,
+		(void *)&cmd_set_mplsoudp_decap_mplsoudp_decap,
+		(void *)&cmd_set_mplsoudp_decap_ip_version,
+		(void *)&cmd_set_mplsoudp_decap_ip_version_value,
 		NULL,
 	},
 };
 
-/* port config pctype mapping update */
+static cmdline_parse_inst_t cmd_set_mplsoudp_decap_with_vlan = {
+	.f = cmd_set_mplsoudp_decap_parsed,
+	.data = NULL,
+	.help_str = "set mplsoudp_decap-with-vlan ip-version ipv4|ipv6",
+	.tokens = {
+		(void *)&cmd_set_mplsoudp_decap_set,
+		(void *)&cmd_set_mplsoudp_decap_mplsoudp_decap_with_vlan,
+		(void *)&cmd_set_mplsoudp_decap_ip_version,
+		(void *)&cmd_set_mplsoudp_decap_ip_version_value,
+		NULL,
+	},
+};
 
-/* Common result structure for port config pctype mapping update */
-struct cmd_pctype_mapping_update_result {
-	cmdline_fixed_string_t port;
-	cmdline_fixed_string_t config;
-	portid_t port_id;
-	cmdline_fixed_string_t pctype;
-	cmdline_fixed_string_t mapping;
-	cmdline_fixed_string_t update;
-	cmdline_fixed_string_t pctype_list;
-	uint16_t flow_type;
+/** Set connection tracking object common details */
+struct cmd_set_conntrack_common_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t conntrack;
+	cmdline_fixed_string_t common;
+	cmdline_fixed_string_t peer;
+	cmdline_fixed_string_t is_orig;
+	cmdline_fixed_string_t enable;
+	cmdline_fixed_string_t live;
+	cmdline_fixed_string_t sack;
+	cmdline_fixed_string_t cack;
+	cmdline_fixed_string_t last_dir;
+	cmdline_fixed_string_t liberal;
+	cmdline_fixed_string_t state;
+	cmdline_fixed_string_t max_ack_win;
+	cmdline_fixed_string_t retrans;
+	cmdline_fixed_string_t last_win;
+	cmdline_fixed_string_t last_seq;
+	cmdline_fixed_string_t last_ack;
+	cmdline_fixed_string_t last_end;
+	cmdline_fixed_string_t last_index;
+	uint8_t stat;
+	uint8_t factor;
+	uint16_t peer_port;
+	uint32_t is_original;
+	uint32_t en;
+	uint32_t is_live;
+	uint32_t s_ack;
+	uint32_t c_ack;
+	uint32_t ld;
+	uint32_t lb;
+	uint8_t re_num;
+	uint8_t li;
+	uint16_t lw;
+	uint32_t ls;
+	uint32_t la;
+	uint32_t le;
 };
 
-/* Common CLI fields for pctype mapping update*/
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_port =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 port, "port");
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_config =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 config, "config");
-static cmdline_parse_token_num_t cmd_pctype_mapping_update_port_id =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 port_id, RTE_UINT16);
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_pctype =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 pctype, "pctype");
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_mapping =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 mapping, "mapping");
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_update =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 update, "update");
-static cmdline_parse_token_string_t cmd_pctype_mapping_update_pc_type =
-	TOKEN_STRING_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 pctype_list, NULL);
-static cmdline_parse_token_num_t cmd_pctype_mapping_update_flow_type =
-	TOKEN_NUM_INITIALIZER
-		(struct cmd_pctype_mapping_update_result,
-		 flow_type, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_conntrack_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 set, "set");
+static cmdline_parse_token_string_t cmd_set_conntrack_conntrack =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 conntrack, "conntrack");
+static cmdline_parse_token_string_t cmd_set_conntrack_common_com =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 common, "com");
+static cmdline_parse_token_string_t cmd_set_conntrack_common_peer =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 peer, "peer");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_peer_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      peer_port, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_is_orig =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 is_orig, "is_orig");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_is_orig_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      is_original, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_enable =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 enable, "enable");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_enable_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      en, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_live =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 live, "live");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_live_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      is_live, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_sack =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 sack, "sack");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_sack_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      s_ack, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_cack =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 cack, "cack");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_cack_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      c_ack, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_dir =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_dir, "last_dir");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_dir_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      ld, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_liberal =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 liberal, "liberal");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_liberal_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      lb, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_state =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 state, "state");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_state_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      stat, RTE_UINT8);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_max_ackwin =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 max_ack_win, "max_ack_win");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_max_ackwin_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      factor, RTE_UINT8);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_retrans =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 retrans, "r_lim");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_retrans_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      re_num, RTE_UINT8);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_win =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_win, "last_win");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_win_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      lw, RTE_UINT16);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_seq =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_seq, "last_seq");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_seq_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      ls, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_ack =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_ack, "last_ack");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_ack_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      la, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_end =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_end, "last_end");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_end_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      le, RTE_UINT32);
+static cmdline_parse_token_string_t cmd_set_conntrack_common_last_index =
+	TOKEN_STRING_INITIALIZER(struct cmd_set_conntrack_common_result,
+				 last_index, "last_index");
+static cmdline_parse_token_num_t cmd_set_conntrack_common_last_index_value =
+	TOKEN_NUM_INITIALIZER(struct cmd_set_conntrack_common_result,
+			      li, RTE_UINT8);
 
-static void
-cmd_pctype_mapping_update_parsed(
-	void *parsed_result,
+static void cmd_set_conntrack_common_parsed(void *parsed_result,
 	__rte_unused struct cmdline *cl,
 	__rte_unused void *data)
 {
-	struct cmd_pctype_mapping_update_result *res = parsed_result;
-	int ret = -ENOTSUP;
-#ifdef RTE_NET_I40E
-	struct rte_pmd_i40e_flow_type_mapping mapping;
-	unsigned int i;
-	unsigned int nb_item;
-	unsigned int pctype_list[RTE_PMD_I40E_PCTYPE_MAX];
-#endif
-
-	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
-		return;
-
-#ifdef RTE_NET_I40E
-	nb_item = parse_item_list(res->pctype_list, "pctypes",
-				  RTE_PMD_I40E_PCTYPE_MAX, pctype_list, 1);
-	mapping.flow_type = res->flow_type;
-	for (i = 0, mapping.pctype = 0ULL; i < nb_item; i++)
-		mapping.pctype |= (1ULL << pctype_list[i]);
-	ret = rte_pmd_i40e_flow_type_mapping_update(res->port_id,
-						&mapping,
-						1,
-						0);
-#endif
+	struct cmd_set_conntrack_common_result *res = parsed_result;
 
-	switch (ret) {
-	case 0:
-		break;
-	case -EINVAL:
-		fprintf(stderr, "invalid pctype or flow type\n");
-		break;
-	case -ENODEV:
-		fprintf(stderr, "invalid port_id %d\n", res->port_id);
-		break;
-	case -ENOTSUP:
-		fprintf(stderr, "function not implemented\n");
-		break;
-	default:
-		fprintf(stderr, "programming error: (%s)\n", strerror(-ret));
-	}
+	/* No need to swap to big endian. */
+	conntrack_context.peer_port = res->peer_port;
+	conntrack_context.is_original_dir = res->is_original;
+	conntrack_context.enable = res->en;
+	conntrack_context.live_connection = res->is_live;
+	conntrack_context.selective_ack = res->s_ack;
+	conntrack_context.challenge_ack_passed = res->c_ack;
+	conntrack_context.last_direction = res->ld;
+	conntrack_context.liberal_mode = res->lb;
+	conntrack_context.state = (enum rte_flow_conntrack_state)res->stat;
+	conntrack_context.max_ack_window = res->factor;
+	conntrack_context.retransmission_limit = res->re_num;
+	conntrack_context.last_window = res->lw;
+	conntrack_context.last_index =
+		(enum rte_flow_conntrack_tcp_last_index)res->li;
+	conntrack_context.last_seq = res->ls;
+	conntrack_context.last_ack = res->la;
+	conntrack_context.last_end = res->le;
 }
 
-static cmdline_parse_inst_t cmd_pctype_mapping_update = {
-	.f = cmd_pctype_mapping_update_parsed,
+static cmdline_parse_inst_t cmd_set_conntrack_common = {
+	.f = cmd_set_conntrack_common_parsed,
 	.data = NULL,
-	.help_str = "port config <port_id> pctype mapping update"
-	" <pctype_id_0,[pctype_id_1]*> <flowtype_id>",
+	.help_str = "set conntrack com peer <port_id> is_orig <dir> enable <en>"
+		" live <ack_seen> sack <en> cack <passed> last_dir <dir>"
+		" liberal <en> state <s> max_ack_win <factor> r_lim <num>"
+		" last_win <win> last_seq <seq> last_ack <ack> last_end <end>"
+		" last_index <flag>",
 	.tokens = {
-		(void *)&cmd_pctype_mapping_update_port,
-		(void *)&cmd_pctype_mapping_update_config,
-		(void *)&cmd_pctype_mapping_update_port_id,
-		(void *)&cmd_pctype_mapping_update_pctype,
-		(void *)&cmd_pctype_mapping_update_mapping,
-		(void *)&cmd_pctype_mapping_update_update,
-		(void *)&cmd_pctype_mapping_update_pc_type,
-		(void *)&cmd_pctype_mapping_update_flow_type,
+		(voi