ethdev: remove legacy flexible filter type support
[dpdk.git] / app / test-pmd / cmdline.c
index b040630..97ddb4e 100644 (file)
 #include <cmdline_parse_etheraddr.h>
 #include <cmdline_socket.h>
 #include <cmdline.h>
-#ifdef RTE_LIBRTE_PMD_BOND
+#ifdef RTE_NET_BOND
 #include <rte_eth_bond.h>
 #include <rte_eth_bond_8023ad.h>
 #endif
-#if defined RTE_LIBRTE_DPAA_BUS && defined RTE_LIBRTE_DPAA_PMD
+#if defined RTE_BUS_DPAA && defined RTE_NET_DPAA
 #include <rte_pmd_dpaa.h>
 #endif
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
 #include <rte_pmd_ixgbe.h>
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
 #include <rte_pmd_i40e.h>
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
 #include <rte_pmd_bnxt.h>
 #endif
 #include "testpmd.h"
@@ -166,6 +166,9 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "show port (info|stats|summary|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n"
                        "    Display information for port_id, or all.\n\n"
 
+                       "show port port_id (module_eeprom|eeprom)\n"
+                       "    Display the module EEPROM or EEPROM information for port_id.\n\n"
+
                        "show port X rss reta (size) (mask0,mask1,...)\n"
                        "    Display the rss redirection table entry indicated"
                        " by masks on port X. size is used to indicate the"
@@ -180,7 +183,7 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "show (rxq|txq) info (port_id) (queue_id)\n"
                        "    Display information for configured RX/TX queue.\n\n"
 
-                       "show config (rxtx|cores|fwd|txpkts)\n"
+                       "show config (rxtx|cores|fwd|rxoffs|rxpkts|txpkts)\n"
                        "    Display the given configuration.\n\n"
 
                        "read rxd (port_id) (queue_id) (rxd_id)\n"
@@ -245,6 +248,12 @@ static void cmd_help_long_parsed(void *parsed_result,
 
                        "show port (port_id) macs|mcast_macs"
                        "       Display list of mac addresses added to port.\n\n"
+
+                       "show port (port_id) fec capabilities"
+                       "       Show fec capabilities of a port.\n\n"
+
+                       "show port (port_id) fec_mode"
+                       "       Show fec mode of a port.\n\n"
                );
        }
 
@@ -285,6 +294,18 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "    Set the transmit delay time and number of retries,"
                        " effective when retry is enabled.\n\n"
 
+                       "set rxoffs (x[,y]*)\n"
+                       "    Set the offset of each packet segment on"
+                       " receiving if split feature is engaged."
+                       " Affects only the queues configured with split"
+                       " offloads.\n\n"
+
+                       "set rxpkts (x[,y]*)\n"
+                       "    Set the length of each segment to scatter"
+                       " packets on receiving if split feature is engaged."
+                       " Affects only the queues configured with split"
+                       " offloads.\n\n"
+
                        "set txpkts (x[,y]*)\n"
                        "    Set the length of each segment of TXONLY"
                        " and optionally CSUM packets.\n\n"
@@ -294,6 +315,10 @@ static void cmd_help_long_parsed(void *parsed_result,
                        " Right now only applicable for CSUM and TXONLY"
                        " modes\n\n"
 
+                       "set txtimes (x, y)\n"
+                       "    Set the scheduling on timestamps"
+                       " timings for the TXONLY mode\n\n"
+
                        "set corelist (x[,y]*)\n"
                        "    Set the list of forwarding cores.\n\n"
 
@@ -525,14 +550,15 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "    Set the option to hide the zero values"
                        " for xstats display.\n"
 
+                       "set record-core-cycles on|off\n"
+                       "    Set the option to enable measurement of CPU cycles.\n"
+
+                       "set record-burst-stats on|off\n"
+                       "    Set the option to enable display of RX and TX bursts.\n"
+
                        "set port (port_id) vf (vf_id) rx|tx on|off\n"
                        "    Enable/Disable a VF receive/tranmit from a port\n\n"
 
-                       "set port (port_id) vf (vf_id) (mac_addr)"
-                       " (exact-mac#exact-mac-vlan#hashmac|hashmac-vlan) on|off\n"
-                       "   Add/Remove unicast or multicast MAC addr filter"
-                       " for a VF.\n\n"
-
                        "set port (port_id) vf (vf_id) rxmode (AUPE|ROPE|BAM"
                        "|MPE) (on|off)\n"
                        "    AUPE:accepts untagged VLAN;"
@@ -593,7 +619,7 @@ 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_LIBRTE_PMD_BOND
+#ifdef RTE_NET_BOND
                        "create bonded device (mode) (socket)\n"
                        "       Create a new bonded device with specific bonding mode and socket.\n\n"
 
@@ -618,7 +644,7 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)"
                        "       Set Aggregation mode for IEEE802.3AD (mode 4)"
 
-                       "set bonding xmit_balance_policy (port_id) (l2|l23|l34)\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\n"
 
                        "set bonding mon_period (port_id) (value)\n"
@@ -738,6 +764,9 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "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"
+
                        , list_pkt_forwarding_modes()
                );
        }
@@ -790,7 +819,8 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "receive buffers available.\n\n"
 
                        "port config all rss (all|default|ip|tcp|udp|sctp|"
-                       "ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|<flowtype_id>)\n"
+                       "ether|port|vxlan|geneve|nvgre|vxlan-gpe|none|level-default|"
+                       "level-outer|level-inner|<flowtype_id>)\n"
                        "    Set the RSS mode.\n\n"
 
                        "port config port-id rss reta (hash,queue)[,(hash,queue)]\n"
@@ -860,16 +890,16 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "port config <port_id> rx_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|timestamp|security|keep_crc on|off\n"
+                       "vlan_filter|vlan_extend|jumbo_frame|scatter|"
+                       "buffer_split|timestamp|security|keep_crc on|off\n"
                        "     Enable or disable a per port Rx offloading"
                        " on all Rx queues of a port\n\n"
 
                        "port (port_id) rxq (queue_id) rx_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|timestamp|security|keep_crc on|off\n"
+                       "vlan_filter|vlan_extend|jumbo_frame|scatter|"
+                       "buffer_split|timestamp|security|keep_crc on|off\n"
                        "    Enable or disable a per queue Rx offloading"
                        " only on a specific Rx queue\n\n"
 
@@ -946,11 +976,6 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "filters:\n"
                        "--------\n\n"
 
-                       "ethertype_filter (port_id) (add|del)"
-                       " (mac_addr|mac_ignr) (mac_address) ethertype"
-                       " (ether_type) (drop|fwd) queue (queue_id)\n"
-                       "    Add/Del an ethertype filter.\n\n"
-
                        "2tuple_filter (port_id) (add|del)"
                        " dst_port (dst_port_value) protocol (protocol_value)"
                        " mask (mask_value) tcp_flags (tcp_flags_value)"
@@ -968,11 +993,6 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "syn_filter (port_id) (add|del) priority (high|low) queue (queue_id)"
                        "    Add/Del syn filter.\n\n"
 
-                       "flex_filter (port_id) (add|del) len (len_value)"
-                       " bytes (bytes_value) mask (mask_value)"
-                       " priority (prio_value) queue (queue_id)\n"
-                       "    Add/Del a flex filter.\n\n"
-
                        "flow_director_filter (port_id) mode IP (add|del|update)"
                        " flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)"
                        " src (src_ip_address) dst (dst_ip_address)"
@@ -1129,6 +1149,24 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "    List and destroy aged flows"
                        " flow rules\n\n"
 
+                       "flow shared_action {port_id} create"
+                       " [action_id {shared_action_id}]"
+                       " [ingress] [egress]"
+                       " action {action} / end\n"
+                       "    Create shared action.\n\n"
+
+                       "flow shared_action {port_id} update"
+                       " {shared_action_id} action {action} / end\n"
+                       "    Update shared action.\n\n"
+
+                       "flow shared_action {port_id} destroy"
+                       " action_id {shared_action_id} [...]\n"
+                       "    Destroy specific shared actions.\n\n"
+
+                       "flow shared_action {port_id} query"
+                       " {shared_action_id}\n"
+                       "    Query an existing shared action.\n\n"
+
                        "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)\n"
@@ -1186,14 +1224,9 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "show port tm node stats (port_id) (node_id) (clear)\n"
                        "       Display the port TM node stats.\n\n"
 
-#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED
-                       "set port tm hierarchy default (port_id)\n"
-                       "       Set default traffic Management hierarchy on a port\n\n"
-#endif
-
                        "add port tm node shaper profile (port_id) (shaper_profile_id)"
                        " (cmit_tb_rate) (cmit_tb_size) (peak_tb_rate) (peak_tb_size)"
-                       " (packet_length_adjust)\n"
+                       " (packet_length_adjust) (packet_mode)\n"
                        "       Add port tm node private shaper profile.\n\n"
 
                        "del port tm node shaper profile (port_id) (shaper_profile_id)\n"
@@ -1225,6 +1258,12 @@ static void cmd_help_long_parsed(void *parsed_result,
                        " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n"
                        "       Add port tm nonleaf node.\n\n"
 
+                       "add port tm nonleaf node pktmode (port_id) (node_id) (parent_node_id)"
+                       " (priority) (weight) (level_id) (shaper_profile_id)"
+                       " (n_sp_priorities) (stats_mask) (n_shared_shapers)"
+                       " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n"
+                       "       Add port tm nonleaf node with pkt mode enabled.\n\n"
+
                        "add port tm leaf node (port_id) (node_id) (parent_node_id)"
                        " (priority) (weight) (level_id) (shaper_profile_id)"
                        " (cman_mode) (wred_profile_id) (stats_mask) (n_shared_shapers)"
@@ -2274,7 +2313,7 @@ cmd_config_rss_parsed(void *parsed_result,
                rss_conf.rss_hf = ETH_RSS_ETH | ETH_RSS_VLAN | ETH_RSS_IP |
                        ETH_RSS_TCP | ETH_RSS_UDP | ETH_RSS_SCTP |
                        ETH_RSS_L2_PAYLOAD | ETH_RSS_L2TPV3 | ETH_RSS_ESP |
-                       ETH_RSS_AH | ETH_RSS_PFCP;
+                       ETH_RSS_AH | ETH_RSS_PFCP | ETH_RSS_GTPU;
        else if (!strcmp(res->value, "eth"))
                rss_conf.rss_hf = ETH_RSS_ETH;
        else if (!strcmp(res->value, "vlan"))
@@ -2297,6 +2336,18 @@ cmd_config_rss_parsed(void *parsed_result,
                rss_conf.rss_hf = ETH_RSS_GENEVE;
        else if (!strcmp(res->value, "nvgre"))
                rss_conf.rss_hf = ETH_RSS_NVGRE;
+       else if (!strcmp(res->value, "l3-pre32"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE32;
+       else if (!strcmp(res->value, "l3-pre40"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE40;
+       else if (!strcmp(res->value, "l3-pre48"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE48;
+       else if (!strcmp(res->value, "l3-pre56"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE56;
+       else if (!strcmp(res->value, "l3-pre64"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE64;
+       else if (!strcmp(res->value, "l3-pre96"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L3_PRE96;
        else if (!strcmp(res->value, "l3-src-only"))
                rss_conf.rss_hf = ETH_RSS_L3_SRC_ONLY;
        else if (!strcmp(res->value, "l3-dst-only"))
@@ -2317,9 +2368,22 @@ cmd_config_rss_parsed(void *parsed_result,
                rss_conf.rss_hf = ETH_RSS_AH;
        else if (!strcmp(res->value, "pfcp"))
                rss_conf.rss_hf = ETH_RSS_PFCP;
+       else if (!strcmp(res->value, "pppoe"))
+               rss_conf.rss_hf = ETH_RSS_PPPOE;
+       else if (!strcmp(res->value, "gtpu"))
+               rss_conf.rss_hf = ETH_RSS_GTPU;
        else if (!strcmp(res->value, "none"))
                rss_conf.rss_hf = 0;
-       else if (!strcmp(res->value, "default"))
+       else if (!strcmp(res->value, "level-default")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_PMD_DEFAULT);
+       } else if (!strcmp(res->value, "level-outer")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_OUTERMOST);
+       } else if (!strcmp(res->value, "level-inner")) {
+               rss_hf &= (~ETH_RSS_LEVEL_MASK);
+               rss_conf.rss_hf = (rss_hf | ETH_RSS_LEVEL_INNERMOST);
+       } else if (!strcmp(res->value, "default"))
                use_default = 1;
        else if (isdigit(res->value[0]) && atoi(res->value) > 0 &&
                                                atoi(res->value) < 64)
@@ -2378,7 +2442,8 @@ cmdline_parse_inst_t cmd_config_rss = {
        .data = NULL,
        .help_str = "port config all rss "
                "all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|"
-               "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|<flowtype_id>",
+               "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|none|level-default|"
+               "level-outer|level-inner|<flowtype_id>",
        .tokens = {
                (void *)&cmd_config_rss_port,
                (void *)&cmd_config_rss_keyword,
@@ -2490,7 +2555,7 @@ cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type =
                                 "ipv6-tcp-ex#ipv6-udp-ex#"
                                 "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");
+                                "l2tpv3#esp#ah#pfcp#pppoe#gtpu");
 cmdline_parse_token_string_t cmd_config_rss_hash_key_value =
        TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, NULL);
 
@@ -2503,7 +2568,7 @@ cmdline_parse_inst_t cmd_config_rss_hash_key = {
                "l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|"
                "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 "
+               "l2tpv3|esp|ah|pfcp|pppoe|gtpu "
                "<string of hex digits (variable length, NIC dependent)>",
        .tokens = {
                (void *)&cmd_config_rss_hash_key_port,
@@ -2857,7 +2922,7 @@ cmd_setup_rxtx_queue_parsed(
                if (!numa_support || socket_id == NUMA_NO_CONFIG)
                        socket_id = port->socket_id;
 
-               mp = mbuf_pool_find(socket_id);
+               mp = mbuf_pool_find(socket_id, 0);
                if (mp == NULL) {
                        printf("Failed to setup RX queue: "
                                "No mempool allocation"
@@ -2865,12 +2930,12 @@ cmd_setup_rxtx_queue_parsed(
                                rxring_numa[res->portid]);
                        return;
                }
-               ret = rte_eth_rx_queue_setup(res->portid,
-                                            res->qid,
-                                            port->nb_rx_desc[res->qid],
-                                            socket_id,
-                                            &port->rx_conf[res->qid],
-                                            mp);
+               ret = rx_queue_setup(res->portid,
+                                    res->qid,
+                                    port->nb_rx_desc[res->qid],
+                                    socket_id,
+                                    &port->rx_conf[res->qid],
+                                    mp);
                if (ret)
                        printf("Failed to setup RX queue\n");
        } else {
@@ -3839,6 +3904,98 @@ cmdline_parse_inst_t cmd_set_log = {
        },
 };
 
+/* *** SET SEGMENT OFFSETS OF RX PACKETS SPLIT *** */
+
+struct cmd_set_rxoffs_result {
+       cmdline_fixed_string_t cmd_keyword;
+       cmdline_fixed_string_t rxoffs;
+       cmdline_fixed_string_t seg_offsets;
+};
+
+static void
+cmd_set_rxoffs_parsed(void *parsed_result,
+                     __rte_unused struct cmdline *cl,
+                     __rte_unused void *data)
+{
+       struct cmd_set_rxoffs_result *res;
+       unsigned int seg_offsets[MAX_SEGS_BUFFER_SPLIT];
+       unsigned int nb_segs;
+
+       res = parsed_result;
+       nb_segs = parse_item_list(res->seg_offsets, "segment offsets",
+                                 MAX_SEGS_BUFFER_SPLIT, seg_offsets, 0);
+       if (nb_segs > 0)
+               set_rx_pkt_offsets(seg_offsets, nb_segs);
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_set_rxoffs_result,
+                                rxoffs, "rxoffs");
+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 = {
+       .f = cmd_set_rxoffs_parsed,
+       .data = NULL,
+       .help_str = "set rxoffs <len0[,len1]*>",
+       .tokens = {
+               (void *)&cmd_set_rxoffs_keyword,
+               (void *)&cmd_set_rxoffs_name,
+               (void *)&cmd_set_rxoffs_offsets,
+               NULL,
+       },
+};
+
+/* *** SET SEGMENT LENGTHS OF RX PACKETS SPLIT *** */
+
+struct cmd_set_rxpkts_result {
+       cmdline_fixed_string_t cmd_keyword;
+       cmdline_fixed_string_t rxpkts;
+       cmdline_fixed_string_t seg_lengths;
+};
+
+static void
+cmd_set_rxpkts_parsed(void *parsed_result,
+                     __rte_unused struct cmdline *cl,
+                     __rte_unused void *data)
+{
+       struct cmd_set_rxpkts_result *res;
+       unsigned int seg_lengths[MAX_SEGS_BUFFER_SPLIT];
+       unsigned int nb_segs;
+
+       res = parsed_result;
+       nb_segs = parse_item_list(res->seg_lengths, "segment lengths",
+                                 MAX_SEGS_BUFFER_SPLIT, seg_lengths, 0);
+       if (nb_segs > 0)
+               set_rx_pkt_segments(seg_lengths, nb_segs);
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_set_rxpkts_result,
+                                rxpkts, "rxpkts");
+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 = {
+       .f = cmd_set_rxpkts_parsed,
+       .data = NULL,
+       .help_str = "set rxpkts <len0[,len1]*>",
+       .tokens = {
+               (void *)&cmd_set_rxpkts_keyword,
+               (void *)&cmd_set_rxpkts_name,
+               (void *)&cmd_set_rxpkts_lengths,
+               NULL,
+       },
+};
+
 /* *** SET SEGMENT LENGTHS OF TXONLY PACKETS *** */
 
 struct cmd_set_txpkts_result {
@@ -3926,6 +4083,52 @@ cmdline_parse_inst_t cmd_set_txsplit = {
        },
 };
 
+/* *** SET TIMES FOR TXONLY PACKETS SCHEDULING ON TIMESTAMPS *** */
+
+struct cmd_set_txtimes_result {
+       cmdline_fixed_string_t cmd_keyword;
+       cmdline_fixed_string_t txtimes;
+       cmdline_fixed_string_t tx_times;
+};
+
+static void
+cmd_set_txtimes_parsed(void *parsed_result,
+                      __rte_unused struct cmdline *cl,
+                      __rte_unused void *data)
+{
+       struct cmd_set_txtimes_result *res;
+       unsigned int tx_times[2] = {0, 0};
+       unsigned int n_times;
+
+       res = parsed_result;
+       n_times = parse_item_list(res->tx_times, "tx times",
+                                 2, tx_times, 0);
+       if (n_times == 2)
+               set_tx_pkt_times(tx_times);
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_set_txtimes_result,
+                                txtimes, "txtimes");
+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 = {
+       .f = cmd_set_txtimes_parsed,
+       .data = NULL,
+       .help_str = "set txtimes <inter_burst>,<intra_burst>",
+       .tokens = {
+               (void *)&cmd_set_txtimes_keyword,
+               (void *)&cmd_set_txtimes_name,
+               (void *)&cmd_set_txtimes_value,
+               NULL,
+       },
+};
+
 /* *** ADD/REMOVE ALL VLAN IDENTIFIERS TO/FROM A PORT VLAN RX FILTER *** */
 struct cmd_rx_vlan_filter_all_result {
        cmdline_fixed_string_t rx_vlan;
@@ -4207,6 +4410,9 @@ cmd_tx_vlan_set_parsed(void *parsed_result,
 {
        struct cmd_tx_vlan_set_result *res = parsed_result;
 
+       if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+               return;
+
        if (!port_is_stopped(res->port_id)) {
                printf("Please stop port %d first\n", res->port_id);
                return;
@@ -4261,6 +4467,9 @@ cmd_tx_vlan_set_qinq_parsed(void *parsed_result,
 {
        struct cmd_tx_vlan_set_qinq_result *res = parsed_result;
 
+       if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+               return;
+
        if (!port_is_stopped(res->port_id)) {
                printf("Please stop port %d first\n", res->port_id);
                return;
@@ -4374,6 +4583,9 @@ cmd_tx_vlan_reset_parsed(void *parsed_result,
 {
        struct cmd_tx_vlan_reset_result *res = parsed_result;
 
+       if (port_id_is_invalid(res->port_id, ENABLED_WARN))
+               return;
+
        if (!port_is_stopped(res->port_id)) {
                printf("Please stop port %d first\n", res->port_id);
                return;
@@ -5352,7 +5564,7 @@ cmd_set_bypass_mode_parsed(void *parsed_result,
        portid_t port_id = res->port_id;
        int32_t rc = -EINVAL;
 
-#if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
+#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"))
@@ -5420,7 +5632,7 @@ cmd_set_bypass_event_parsed(void *parsed_result,
        struct cmd_set_bypass_event_result *res = parsed_result;
        portid_t port_id = res->port_id;
 
-#if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
+#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;
 
@@ -5525,7 +5737,7 @@ cmd_set_bypass_timeout_parsed(void *parsed_result,
 {
        __rte_unused struct cmd_set_bypass_timeout_result *res = parsed_result;
 
-#if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
+#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"))
@@ -5588,7 +5800,7 @@ cmd_show_bypass_config_parsed(void *parsed_result,
        struct cmd_show_bypass_config_result *res = parsed_result;
        portid_t port_id = res->port_id;
        int rc = -EINVAL;
-#if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
+#if defined RTE_NET_IXGBE && defined RTE_LIBRTE_IXGBE_BYPASS
        uint32_t event_mode;
        uint32_t bypass_mode;
        uint32_t timeout = bypass_timeout;
@@ -5671,7 +5883,7 @@ cmdline_parse_inst_t cmd_show_bypass_config = {
        },
 };
 
-#ifdef RTE_LIBRTE_PMD_BOND
+#ifdef RTE_NET_BOND
 /* *** SET BONDING MODE *** */
 struct cmd_set_bonding_mode_result {
        cmdline_fixed_string_t set;
@@ -6441,7 +6653,7 @@ cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = {
 };
 
 
-#endif /* RTE_LIBRTE_PMD_BOND */
+#endif /* RTE_NET_BOND */
 
 /* *** SET FORWARDING MODE *** */
 struct cmd_set_fwd_mode_result {
@@ -7412,8 +7624,14 @@ static void cmd_showcfg_parsed(void *parsed_result,
                fwd_lcores_config_display();
        else if (!strcmp(res->what, "fwd"))
                pkt_fwd_config_display(&cur_fwd_config);
+       else if (!strcmp(res->what, "rxoffs"))
+               show_rx_pkt_offsets();
+       else if (!strcmp(res->what, "rxpkts"))
+               show_rx_pkt_segments();
        else if (!strcmp(res->what, "txpkts"))
                show_tx_pkt_segments();
+       else if (!strcmp(res->what, "txtimes"))
+               show_tx_pkt_times();
 }
 
 cmdline_parse_token_string_t cmd_showcfg_show =
@@ -7422,12 +7640,12 @@ 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 =
        TOKEN_STRING_INITIALIZER(struct cmd_showcfg_result, what,
-                                "rxtx#cores#fwd#txpkts");
+                                "rxtx#cores#fwd#rxoffs#rxpkts#txpkts#txtimes");
 
 cmdline_parse_inst_t cmd_showcfg = {
        .f = cmd_showcfg_parsed,
        .data = NULL,
-       .help_str = "show config rxtx|cores|fwd|txpkts",
+       .help_str = "show config rxtx|cores|fwd|rxoffs|rxpkts|txpkts|txtimes",
        .tokens = {
                (void *)&cmd_showcfg_show,
                (void *)&cmd_showcfg_port,
@@ -7619,6 +7837,51 @@ cmdline_parse_inst_t cmd_showdevice = {
                NULL,
        },
 };
+
+/* *** SHOW MODULE EEPROM/EEPROM port INFO *** */
+struct cmd_showeeprom_result {
+       cmdline_fixed_string_t show;
+       cmdline_fixed_string_t port;
+       uint16_t portnum;
+       cmdline_fixed_string_t type;
+};
+
+static void cmd_showeeprom_parsed(void *parsed_result,
+               __rte_unused struct cmdline *cl,
+               __rte_unused void *data)
+{
+       struct cmd_showeeprom_result *res = parsed_result;
+
+       if (!strcmp(res->type, "eeprom"))
+               port_eeprom_display(res->portnum);
+       else if (!strcmp(res->type, "module_eeprom"))
+               port_module_eeprom_display(res->portnum);
+       else
+               printf("Unknown argument\n");
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_showeeprom_result, port, "port");
+cmdline_parse_token_num_t cmd_showeeprom_portnum =
+       TOKEN_NUM_INITIALIZER(struct cmd_showeeprom_result, portnum, UINT16);
+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 = {
+       .f = cmd_showeeprom_parsed,
+       .data = NULL,
+       .help_str = "show port <port_id> module_eeprom|eeprom",
+       .tokens = {
+               (void *)&cmd_showeeprom_show,
+               (void *)&cmd_showeeprom_port,
+               (void *)&cmd_showeeprom_portnum,
+               (void *)&cmd_showeeprom_type,
+               NULL,
+       },
+};
+
 /* *** SHOW QUEUE INFO *** */
 struct cmd_showqueue_result {
        cmdline_fixed_string_t show;
@@ -8272,6 +8535,90 @@ cmdline_parse_inst_t cmd_set_xstats_hide_zero = {
        },
 };
 
+/* *** SET OPTION TO ENABLE MEASUREMENT OF CPU CYCLES *** */
+struct cmd_set_record_core_cycles_result {
+       cmdline_fixed_string_t keyword;
+       cmdline_fixed_string_t name;
+       cmdline_fixed_string_t on_off;
+};
+
+static void
+cmd_set_record_core_cycles_parsed(void *parsed_result,
+                       __rte_unused struct cmdline *cl,
+                       __rte_unused void *data)
+{
+       struct cmd_set_record_core_cycles_result *res;
+       uint16_t on_off = 0;
+
+       res = parsed_result;
+       on_off = !strcmp(res->on_off, "on") ? 1 : 0;
+       set_record_core_cycles(on_off);
+}
+
+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 =
+       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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_set_record_core_cycles_result,
+                                on_off, "on#off");
+
+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",
+       .tokens = {
+               (void *)&cmd_set_record_core_cycles_keyword,
+               (void *)&cmd_set_record_core_cycles_name,
+               (void *)&cmd_set_record_core_cycles_on_off,
+               NULL,
+       },
+};
+
+/* *** SET OPTION TO ENABLE DISPLAY OF RX AND TX BURSTS *** */
+struct cmd_set_record_burst_stats_result {
+       cmdline_fixed_string_t keyword;
+       cmdline_fixed_string_t name;
+       cmdline_fixed_string_t on_off;
+};
+
+static void
+cmd_set_record_burst_stats_parsed(void *parsed_result,
+                       __rte_unused struct cmdline *cl,
+                       __rte_unused void *data)
+{
+       struct cmd_set_record_burst_stats_result *res;
+       uint16_t on_off = 0;
+
+       res = parsed_result;
+       on_off = !strcmp(res->on_off, "on") ? 1 : 0;
+       set_record_burst_stats(on_off);
+}
+
+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 =
+       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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_set_record_burst_stats_result,
+                                on_off, "on#off");
+
+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",
+       .tokens = {
+               (void *)&cmd_set_record_burst_stats_keyword,
+               (void *)&cmd_set_record_burst_stats_name,
+               (void *)&cmd_set_record_burst_stats_on_off,
+               NULL,
+       },
+};
+
 /* *** CONFIGURE UNICAST HASH TABLE *** */
 struct cmd_set_uc_hash_table {
        cmdline_fixed_string_t set;
@@ -8395,110 +8742,6 @@ cmdline_parse_inst_t cmd_set_uc_all_hash_filter = {
        },
 };
 
-/* *** CONFIGURE MACVLAN FILTER FOR VF(s) *** */
-struct cmd_set_vf_macvlan_filter {
-       cmdline_fixed_string_t set;
-       cmdline_fixed_string_t port;
-       portid_t port_id;
-       cmdline_fixed_string_t vf;
-       uint8_t vf_id;
-       struct rte_ether_addr address;
-       cmdline_fixed_string_t filter_type;
-       cmdline_fixed_string_t mode;
-};
-
-static void
-cmd_set_vf_macvlan_parsed(void *parsed_result,
-                      __rte_unused struct cmdline *cl,
-                      __rte_unused void *data)
-{
-       int is_on, ret = 0;
-       struct cmd_set_vf_macvlan_filter *res = parsed_result;
-       struct rte_eth_mac_filter filter;
-
-       memset(&filter, 0, sizeof(struct rte_eth_mac_filter));
-
-       rte_memcpy(&filter.mac_addr, &res->address, RTE_ETHER_ADDR_LEN);
-
-       /* set VF MAC filter */
-       filter.is_vf = 1;
-
-       /* set VF ID */
-       filter.dst_id = res->vf_id;
-
-       if (!strcmp(res->filter_type, "exact-mac"))
-               filter.filter_type = RTE_MAC_PERFECT_MATCH;
-       else if (!strcmp(res->filter_type, "exact-mac-vlan"))
-               filter.filter_type = RTE_MACVLAN_PERFECT_MATCH;
-       else if (!strcmp(res->filter_type, "hashmac"))
-               filter.filter_type = RTE_MAC_HASH_MATCH;
-       else if (!strcmp(res->filter_type, "hashmac-vlan"))
-               filter.filter_type = RTE_MACVLAN_HASH_MATCH;
-
-       is_on = (strcmp(res->mode, "on") == 0) ? 1 : 0;
-
-       if (is_on)
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                                       RTE_ETH_FILTER_MACVLAN,
-                                       RTE_ETH_FILTER_ADD,
-                                        &filter);
-       else
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                                       RTE_ETH_FILTER_MACVLAN,
-                                       RTE_ETH_FILTER_DELETE,
-                                       &filter);
-
-       if (ret < 0)
-               printf("bad set MAC hash parameter, return code = %d\n", ret);
-
-}
-
-cmdline_parse_token_string_t cmd_set_vf_macvlan_set =
-       TOKEN_STRING_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                                set, "set");
-cmdline_parse_token_string_t cmd_set_vf_macvlan_port =
-       TOKEN_STRING_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                                port, "port");
-cmdline_parse_token_num_t cmd_set_vf_macvlan_portid =
-       TOKEN_NUM_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                             port_id, UINT16);
-cmdline_parse_token_string_t cmd_set_vf_macvlan_vf =
-       TOKEN_STRING_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                                vf, "vf");
-cmdline_parse_token_num_t cmd_set_vf_macvlan_vf_id =
-       TOKEN_NUM_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                               vf_id, UINT8);
-cmdline_parse_token_etheraddr_t cmd_set_vf_macvlan_mac =
-       TOKEN_ETHERADDR_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                               address);
-cmdline_parse_token_string_t cmd_set_vf_macvlan_filter_type =
-       TOKEN_STRING_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                               filter_type, "exact-mac#exact-mac-vlan"
-                               "#hashmac#hashmac-vlan");
-cmdline_parse_token_string_t cmd_set_vf_macvlan_mode =
-       TOKEN_STRING_INITIALIZER(struct cmd_set_vf_macvlan_filter,
-                                mode, "on#off");
-
-cmdline_parse_inst_t cmd_set_vf_macvlan_filter = {
-       .f = cmd_set_vf_macvlan_parsed,
-       .data = NULL,
-       .help_str = "set port <port_id> vf <vf_id> <mac_addr> "
-               "exact-mac|exact-mac-vlan|hashmac|hashmac-vlan on|off: "
-               "Exact match rule: exact match of MAC or MAC and VLAN; "
-               "hash match rule: hash match of MAC and exact match of VLAN",
-       .tokens = {
-               (void *)&cmd_set_vf_macvlan_set,
-               (void *)&cmd_set_vf_macvlan_port,
-               (void *)&cmd_set_vf_macvlan_portid,
-               (void *)&cmd_set_vf_macvlan_vf,
-               (void *)&cmd_set_vf_macvlan_vf_id,
-               (void *)&cmd_set_vf_macvlan_mac,
-               (void *)&cmd_set_vf_macvlan_filter_type,
-               (void *)&cmd_set_vf_macvlan_mode,
-               NULL,
-       },
-};
-
 /* *** CONFIGURE VF TRAFFIC CONTROL *** */
 struct cmd_set_vf_traffic {
        cmdline_fixed_string_t set;
@@ -8595,12 +8838,12 @@ cmd_set_vf_rxmode_parsed(void *parsed_result,
 
        RTE_SET_USED(is_on);
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_rxmode(res->port_id, res->vf_id,
                                                  vf_rxmode, (uint8_t)is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_rxmode(res->port_id, res->vf_id,
                                                 vf_rxmode, (uint8_t)is_on);
@@ -8674,12 +8917,12 @@ static void cmd_vf_mac_addr_parsed(void *parsed_result,
        if (strcmp(res->what, "add") != 0)
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_add_vf_mac_addr(res->port_num, res->vf_num,
                                                   &res->address);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_mac_addr_add(res->port_num, &res->address,
                                                res->vf_num);
@@ -8750,17 +8993,17 @@ cmd_vf_rx_vlan_filter_parsed(void *parsed_result,
 
        __rte_unused int is_add = (strcmp(res->what, "add") == 0) ? 1 : 0;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_vlan_filter(res->port_id,
                                res->vlan_id, res->vf_mask, is_add);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_vlan_filter(res->port_id,
                                res->vlan_id, res->vf_mask, is_add);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_vlan_filter(res->port_id,
                                res->vlan_id, res->vf_mask, is_add);
@@ -9287,6 +9530,10 @@ cmd_global_config_parsed(void *parsed_result,
        conf.cfg.gre_key_len = res->len;
        ret = rte_eth_dev_filter_ctrl(res->port_id, RTE_ETH_FILTER_NONE,
                                      RTE_ETH_FILTER_SET, &conf);
+#ifdef RTE_NET_I40E
+       if (ret == -ENOTSUP)
+               ret = rte_pmd_i40e_set_gre_key_len(res->port_id, res->len);
+#endif
        if (ret != 0)
                printf("Global config error\n");
 }
@@ -9847,7 +10094,7 @@ cmd_queue_region_parsed(void *parsed_result,
 {
        struct cmd_queue_region_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_queue_region_conf region_conf;
        enum rte_pmd_i40e_queue_region_op op_type;
 #endif
@@ -9855,7 +10102,7 @@ cmd_queue_region_parsed(void *parsed_result,
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -9946,7 +10193,7 @@ cmd_region_flowtype_parsed(void *parsed_result,
 {
        struct cmd_region_flowtype_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_queue_region_conf region_conf;
        enum rte_pmd_i40e_queue_region_op op_type;
 #endif
@@ -9954,7 +10201,7 @@ cmd_region_flowtype_parsed(void *parsed_result,
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        memset(&region_conf, 0, sizeof(region_conf));
 
        op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_FLOWTYPE_SET;
@@ -10037,7 +10284,7 @@ cmd_user_priority_region_parsed(void *parsed_result,
 {
        struct cmd_user_priority_region_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_queue_region_conf region_conf;
        enum rte_pmd_i40e_queue_region_op op_type;
 #endif
@@ -10045,7 +10292,7 @@ cmd_user_priority_region_parsed(void *parsed_result,
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -10128,7 +10375,7 @@ cmd_flush_queue_region_parsed(void *parsed_result,
 {
        struct cmd_flush_queue_region_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_queue_region_conf region_conf;
        enum rte_pmd_i40e_queue_region_op op_type;
 #endif
@@ -10136,7 +10383,7 @@ cmd_flush_queue_region_parsed(void *parsed_result,
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        memset(&region_conf, 0, sizeof(region_conf));
 
        if (strcmp(res->what, "on") == 0)
@@ -10210,7 +10457,7 @@ cmd_show_queue_region_info_parsed(void *parsed_result,
 {
        struct cmd_show_queue_region_info *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_queue_regions rte_pmd_regions;
        enum rte_pmd_i40e_queue_region_op op_type;
 #endif
@@ -10218,7 +10465,7 @@ cmd_show_queue_region_info_parsed(void *parsed_result,
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        memset(&rte_pmd_regions, 0, sizeof(rte_pmd_regions));
 
        op_type = RTE_PMD_I40E_RSS_QUEUE_REGION_INFO_GET;
@@ -10621,306 +10868,8 @@ cmdline_parse_inst_t cmd_5tuple_filter = {
        },
 };
 
-/* *** ADD/REMOVE A flex FILTER *** */
-struct cmd_flex_filter_result {
-       cmdline_fixed_string_t filter;
-       cmdline_fixed_string_t ops;
-       portid_t port_id;
-       cmdline_fixed_string_t len;
-       uint8_t len_value;
-       cmdline_fixed_string_t bytes;
-       cmdline_fixed_string_t bytes_value;
-       cmdline_fixed_string_t mask;
-       cmdline_fixed_string_t mask_value;
-       cmdline_fixed_string_t priority;
-       uint8_t priority_value;
-       cmdline_fixed_string_t queue;
-       uint16_t queue_id;
-};
-
-static int xdigit2val(unsigned char c)
-{
-       int val;
-       if (isdigit(c))
-               val = c - '0';
-       else if (isupper(c))
-               val = c - 'A' + 10;
-       else
-               val = c - 'a' + 10;
-       return val;
-}
-
-static void
-cmd_flex_filter_parsed(void *parsed_result,
-                         __rte_unused struct cmdline *cl,
-                         __rte_unused void *data)
-{
-       int ret = 0;
-       struct rte_eth_flex_filter filter;
-       struct cmd_flex_filter_result *res = parsed_result;
-       char *bytes_ptr, *mask_ptr;
-       uint16_t len, i, j = 0;
-       char c;
-       int val;
-       uint8_t byte = 0;
-
-       if (res->len_value > RTE_FLEX_FILTER_MAXLEN) {
-               printf("the len exceed the max length 128\n");
-               return;
-       }
-       memset(&filter, 0, sizeof(struct rte_eth_flex_filter));
-       filter.len = res->len_value;
-       filter.priority = res->priority_value;
-       filter.queue = res->queue_id;
-       bytes_ptr = res->bytes_value;
-       mask_ptr = res->mask_value;
-
-        /* translate bytes string to array. */
-       if (bytes_ptr[0] == '0' && ((bytes_ptr[1] == 'x') ||
-               (bytes_ptr[1] == 'X')))
-               bytes_ptr += 2;
-       len = strnlen(bytes_ptr, res->len_value * 2);
-       if (len == 0 || (len % 8 != 0)) {
-               printf("please check len and bytes input\n");
-               return;
-       }
-       for (i = 0; i < len; i++) {
-               c = bytes_ptr[i];
-               if (isxdigit(c) == 0) {
-                       /* invalid characters. */
-                       printf("invalid input\n");
-                       return;
-               }
-               val = xdigit2val(c);
-               if (i % 2) {
-                       byte |= val;
-                       filter.bytes[j] = byte;
-                       printf("bytes[%d]:%02x ", j, filter.bytes[j]);
-                       j++;
-                       byte = 0;
-               } else
-                       byte |= val << 4;
-       }
-       printf("\n");
-        /* translate mask string to uint8_t array. */
-       if (mask_ptr[0] == '0' && ((mask_ptr[1] == 'x') ||
-               (mask_ptr[1] == 'X')))
-               mask_ptr += 2;
-       len = strnlen(mask_ptr, (res->len_value + 3) / 4);
-       if (len == 0) {
-               printf("invalid input\n");
-               return;
-       }
-       j = 0;
-       byte = 0;
-       for (i = 0; i < len; i++) {
-               c = mask_ptr[i];
-               if (isxdigit(c) == 0) {
-                       /* invalid characters. */
-                       printf("invalid input\n");
-                       return;
-               }
-               val = xdigit2val(c);
-               if (i % 2) {
-                       byte |= val;
-                       filter.mask[j] = byte;
-                       printf("mask[%d]:%02x ", j, filter.mask[j]);
-                       j++;
-                       byte = 0;
-               } else
-                       byte |= val << 4;
-       }
-       printf("\n");
-
-       if (!strcmp(res->ops, "add"))
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                               RTE_ETH_FILTER_FLEXIBLE,
-                               RTE_ETH_FILTER_ADD,
-                               &filter);
-       else
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                               RTE_ETH_FILTER_FLEXIBLE,
-                               RTE_ETH_FILTER_DELETE,
-                               &filter);
-
-       if (ret < 0)
-               printf("flex filter setting error: (%s)\n", strerror(-ret));
-}
-
-cmdline_parse_token_string_t cmd_flex_filter_filter =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               filter, "flex_filter");
-cmdline_parse_token_num_t cmd_flex_filter_port_id =
-       TOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,
-                               port_id, UINT16);
-cmdline_parse_token_string_t cmd_flex_filter_ops =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               ops, "add#del");
-cmdline_parse_token_string_t cmd_flex_filter_len =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               len, "len");
-cmdline_parse_token_num_t cmd_flex_filter_len_value =
-       TOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,
-                               len_value, UINT8);
-cmdline_parse_token_string_t cmd_flex_filter_bytes =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               bytes, "bytes");
-cmdline_parse_token_string_t cmd_flex_filter_bytes_value =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               bytes_value, NULL);
-cmdline_parse_token_string_t cmd_flex_filter_mask =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               mask, "mask");
-cmdline_parse_token_string_t cmd_flex_filter_mask_value =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               mask_value, NULL);
-cmdline_parse_token_string_t cmd_flex_filter_priority =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               priority, "priority");
-cmdline_parse_token_num_t cmd_flex_filter_priority_value =
-       TOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,
-                               priority_value, UINT8);
-cmdline_parse_token_string_t cmd_flex_filter_queue =
-       TOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,
-                               queue, "queue");
-cmdline_parse_token_num_t cmd_flex_filter_queue_id =
-       TOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,
-                               queue_id, UINT16);
-cmdline_parse_inst_t cmd_flex_filter = {
-       .f = cmd_flex_filter_parsed,
-       .data = NULL,
-       .help_str = "flex_filter <port_id> add|del len <value> bytes "
-               "<value> mask <value> priority <value> queue <queue_id>: "
-               "Add/Del a flex filter",
-       .tokens = {
-               (void *)&cmd_flex_filter_filter,
-               (void *)&cmd_flex_filter_port_id,
-               (void *)&cmd_flex_filter_ops,
-               (void *)&cmd_flex_filter_len,
-               (void *)&cmd_flex_filter_len_value,
-               (void *)&cmd_flex_filter_bytes,
-               (void *)&cmd_flex_filter_bytes_value,
-               (void *)&cmd_flex_filter_mask,
-               (void *)&cmd_flex_filter_mask_value,
-               (void *)&cmd_flex_filter_priority,
-               (void *)&cmd_flex_filter_priority_value,
-               (void *)&cmd_flex_filter_queue,
-               (void *)&cmd_flex_filter_queue_id,
-               NULL,
-       },
-};
-
 /* *** Filters Control *** */
 
-/* *** deal with ethertype filter *** */
-struct cmd_ethertype_filter_result {
-       cmdline_fixed_string_t filter;
-       portid_t port_id;
-       cmdline_fixed_string_t ops;
-       cmdline_fixed_string_t mac;
-       struct rte_ether_addr mac_addr;
-       cmdline_fixed_string_t ethertype;
-       uint16_t ethertype_value;
-       cmdline_fixed_string_t drop;
-       cmdline_fixed_string_t queue;
-       uint16_t  queue_id;
-};
-
-cmdline_parse_token_string_t cmd_ethertype_filter_filter =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                filter, "ethertype_filter");
-cmdline_parse_token_num_t cmd_ethertype_filter_port_id =
-       TOKEN_NUM_INITIALIZER(struct cmd_ethertype_filter_result,
-                             port_id, UINT16);
-cmdline_parse_token_string_t cmd_ethertype_filter_ops =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                ops, "add#del");
-cmdline_parse_token_string_t cmd_ethertype_filter_mac =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                mac, "mac_addr#mac_ignr");
-cmdline_parse_token_etheraddr_t cmd_ethertype_filter_mac_addr =
-       TOKEN_ETHERADDR_INITIALIZER(struct cmd_ethertype_filter_result,
-                                    mac_addr);
-cmdline_parse_token_string_t cmd_ethertype_filter_ethertype =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                ethertype, "ethertype");
-cmdline_parse_token_num_t cmd_ethertype_filter_ethertype_value =
-       TOKEN_NUM_INITIALIZER(struct cmd_ethertype_filter_result,
-                             ethertype_value, UINT16);
-cmdline_parse_token_string_t cmd_ethertype_filter_drop =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                drop, "drop#fwd");
-cmdline_parse_token_string_t cmd_ethertype_filter_queue =
-       TOKEN_STRING_INITIALIZER(struct cmd_ethertype_filter_result,
-                                queue, "queue");
-cmdline_parse_token_num_t cmd_ethertype_filter_queue_id =
-       TOKEN_NUM_INITIALIZER(struct cmd_ethertype_filter_result,
-                             queue_id, UINT16);
-
-static void
-cmd_ethertype_filter_parsed(void *parsed_result,
-                         __rte_unused struct cmdline *cl,
-                         __rte_unused void *data)
-{
-       struct cmd_ethertype_filter_result *res = parsed_result;
-       struct rte_eth_ethertype_filter filter;
-       int ret = 0;
-
-       ret = rte_eth_dev_filter_supported(res->port_id,
-                       RTE_ETH_FILTER_ETHERTYPE);
-       if (ret < 0) {
-               printf("ethertype filter is not supported on port %u.\n",
-                       res->port_id);
-               return;
-       }
-
-       memset(&filter, 0, sizeof(filter));
-       if (!strcmp(res->mac, "mac_addr")) {
-               filter.flags |= RTE_ETHTYPE_FLAGS_MAC;
-               rte_memcpy(&filter.mac_addr, &res->mac_addr,
-                       sizeof(struct rte_ether_addr));
-       }
-       if (!strcmp(res->drop, "drop"))
-               filter.flags |= RTE_ETHTYPE_FLAGS_DROP;
-       filter.ether_type = res->ethertype_value;
-       filter.queue = res->queue_id;
-
-       if (!strcmp(res->ops, "add"))
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                               RTE_ETH_FILTER_ETHERTYPE,
-                               RTE_ETH_FILTER_ADD,
-                               &filter);
-       else
-               ret = rte_eth_dev_filter_ctrl(res->port_id,
-                               RTE_ETH_FILTER_ETHERTYPE,
-                               RTE_ETH_FILTER_DELETE,
-                               &filter);
-       if (ret < 0)
-               printf("ethertype filter programming error: (%s)\n",
-                       strerror(-ret));
-}
-
-cmdline_parse_inst_t cmd_ethertype_filter = {
-       .f = cmd_ethertype_filter_parsed,
-       .data = NULL,
-       .help_str = "ethertype_filter <port_id> add|del mac_addr|mac_ignr "
-               "<mac_addr> ethertype <value> drop|fw queue <queue_id>: "
-               "Add or delete an ethertype filter entry",
-       .tokens = {
-               (void *)&cmd_ethertype_filter_filter,
-               (void *)&cmd_ethertype_filter_port_id,
-               (void *)&cmd_ethertype_filter_ops,
-               (void *)&cmd_ethertype_filter_mac,
-               (void *)&cmd_ethertype_filter_mac_addr,
-               (void *)&cmd_ethertype_filter_ethertype,
-               (void *)&cmd_ethertype_filter_ethertype_value,
-               (void *)&cmd_ethertype_filter_drop,
-               (void *)&cmd_ethertype_filter_queue,
-               (void *)&cmd_ethertype_filter_queue_id,
-               NULL,
-       },
-};
-
 /* *** deal with flow director filter *** */
 struct cmd_flow_director_result {
        cmdline_fixed_string_t flow_director_filter;
@@ -11114,7 +11063,7 @@ cmd_flow_director_filter_parsed(void *parsed_result,
                }
        } else {
                if (!strcmp(res->mode_value, "raw")) {
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
                        struct rte_pmd_i40e_flow_type_mapping
                                        mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
                        struct rte_pmd_i40e_pkt_template_conf conf;
@@ -13472,17 +13421,17 @@ cmd_set_vf_vlan_anti_spoof_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_vlan_anti_spoof(res->port_id,
                                res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_vlan_anti_spoof(res->port_id,
                                res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_vlan_anti_spoof(res->port_id,
                                res->vf_id, is_on);
@@ -13578,17 +13527,17 @@ cmd_set_vf_mac_anti_spoof_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_mac_anti_spoof(res->port_id,
                        res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_mac_anti_spoof(res->port_id,
                        res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_mac_anti_spoof(res->port_id,
                        res->vf_id, is_on);
@@ -13684,17 +13633,17 @@ cmd_set_vf_vlan_stripq_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_vlan_stripq(res->port_id,
                        res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_vlan_stripq(res->port_id,
                        res->vf_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_vlan_stripq(res->port_id,
                        res->vf_id, is_on);
@@ -13788,17 +13737,17 @@ cmd_set_vf_vlan_insert_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_vlan_insert(res->port_id, res->vf_id,
                        res->vlan_id);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_vlan_insert(res->port_id, res->vf_id,
                        res->vlan_id);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_vlan_insert(res->port_id, res->vf_id,
                        res->vlan_id);
@@ -13884,19 +13833,19 @@ cmd_set_tx_loopback_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_tx_loopback(res->port_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_tx_loopback(res->port_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_tx_loopback(res->port_id, is_on);
 #endif
-#if defined RTE_LIBRTE_DPAA_BUS && defined RTE_LIBRTE_DPAA_PMD
+#if defined RTE_BUS_DPAA && defined RTE_NET_DPAA
        if (ret == -ENOTSUP)
                ret = rte_pmd_dpaa_set_tx_loopback(res->port_id, is_on);
 #endif
@@ -13983,11 +13932,11 @@ cmd_set_all_queues_drop_en_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_all_queues_drop_en(res->port_id, is_on);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_all_queues_drop_en(res->port_id, is_on);
 #endif
@@ -14079,7 +14028,7 @@ cmd_set_vf_split_drop_en_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        ret = rte_pmd_ixgbe_set_vf_split_drop_en(res->port_id, res->vf_id,
                        is_on);
 #endif
@@ -14171,17 +14120,17 @@ cmd_set_vf_mac_addr_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
                ret = rte_pmd_ixgbe_set_vf_mac_addr(res->port_id, res->vf_id,
                                &res->mac_addr);
 #endif
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_set_vf_mac_addr(res->port_id, res->vf_id,
                                &res->mac_addr);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_set_vf_mac_addr(res->port_id, res->vf_id,
                                &res->mac_addr);
@@ -14298,7 +14247,7 @@ cmd_set_macsec_offload_on_parsed(
                return;
 
        if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MACSEC_INSERT) {
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
                ret = rte_pmd_ixgbe_macsec_enable(port_id, en, rp);
 #endif
        }
@@ -14395,7 +14344,7 @@ cmd_set_macsec_offload_off_parsed(
                return;
 
        if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MACSEC_INSERT) {
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
                ret = rte_pmd_ixgbe_macsec_disable(port_id);
 #endif
        }
@@ -14481,7 +14430,7 @@ cmd_set_macsec_sc_parsed(
        int ret = -ENOTSUP;
        int is_tx = (strcmp(res->tx_rx, "tx") == 0) ? 1 : 0;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        ret = is_tx ?
                rte_pmd_ixgbe_macsec_config_txsc(res->port_id,
                                res->mac.addr_bytes) :
@@ -14600,7 +14549,7 @@ cmd_set_macsec_sa_parsed(
                key[i] = (uint8_t) ((xdgt0 * 16) + xdgt1);
        }
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        ret = is_tx ?
                rte_pmd_ixgbe_macsec_select_txsa(res->port_id,
                        res->idx, res->an, res->pn, key) :
@@ -14697,7 +14646,7 @@ cmd_set_vf_promisc_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_unicast_promisc(res->port_id,
                                                  res->vf_id, is_on);
 #endif
@@ -14787,7 +14736,7 @@ cmd_set_vf_allmulti_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_multicast_promisc(res->port_id,
                                                    res->vf_id, is_on);
 #endif
@@ -14877,7 +14826,7 @@ cmd_set_vf_broadcast_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_broadcast(res->port_id,
                                            res->vf_id, is_on);
 #endif
@@ -14971,7 +14920,7 @@ cmd_set_vf_vlan_tag_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_vlan_tag(res->port_id,
                                           res->vf_id, is_on);
 #endif
@@ -15092,7 +15041,7 @@ cmd_vf_max_bw_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_max_bw(res->port_id,
                                         res->vf_id, res->bw);
 #endif
@@ -15192,7 +15141,7 @@ cmd_vf_tc_min_bw_parsed(
        if (ret)
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_vf_tc_bw_alloc(res->port_id, res->vf_id,
                                              tc_num, bw);
 #endif
@@ -15258,7 +15207,7 @@ cmd_tc_min_bw_parsed(
        if (ret)
                return;
 
-#ifdef RTE_LIBRTE_IXGBE_PMD
+#ifdef RTE_NET_IXGBE
        ret = rte_pmd_ixgbe_set_tc_bw_alloc(res->port_id, tc_num, bw);
 #endif
 
@@ -15307,7 +15256,7 @@ cmd_vf_tc_max_bw_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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
@@ -15349,80 +15298,6 @@ cmdline_parse_inst_t cmd_vf_tc_max_bw = {
        },
 };
 
-
-#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED
-
-/* *** Set Port default Traffic Management Hierarchy *** */
-struct cmd_set_port_tm_hierarchy_default_result {
-       cmdline_fixed_string_t set;
-       cmdline_fixed_string_t port;
-       cmdline_fixed_string_t tm;
-       cmdline_fixed_string_t hierarchy;
-       cmdline_fixed_string_t def;
-       portid_t port_id;
-};
-
-cmdline_parse_token_string_t cmd_set_port_tm_hierarchy_default_set =
-       TOKEN_STRING_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result, set, "set");
-cmdline_parse_token_string_t cmd_set_port_tm_hierarchy_default_port =
-       TOKEN_STRING_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result, port, "port");
-cmdline_parse_token_string_t cmd_set_port_tm_hierarchy_default_tm =
-       TOKEN_STRING_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result, tm, "tm");
-cmdline_parse_token_string_t cmd_set_port_tm_hierarchy_default_hierarchy =
-       TOKEN_STRING_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result,
-                       hierarchy, "hierarchy");
-cmdline_parse_token_string_t cmd_set_port_tm_hierarchy_default_default =
-       TOKEN_STRING_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result,
-                       def, "default");
-cmdline_parse_token_num_t cmd_set_port_tm_hierarchy_default_port_id =
-       TOKEN_NUM_INITIALIZER(
-               struct cmd_set_port_tm_hierarchy_default_result,
-                       port_id, UINT16);
-
-static void cmd_set_port_tm_hierarchy_default_parsed(void *parsed_result,
-       __rte_unused struct cmdline *cl,
-       __rte_unused void *data)
-{
-       struct cmd_set_port_tm_hierarchy_default_result *res = parsed_result;
-       struct rte_port *p;
-       portid_t port_id = res->port_id;
-
-       if (port_id_is_invalid(port_id, ENABLED_WARN))
-               return;
-
-       p = &ports[port_id];
-
-       /* Forward mode: tm */
-       if (strcmp(cur_fwd_config.fwd_eng->fwd_mode_name, "softnic")) {
-               printf("  softnicfwd mode not enabled(error)\n");
-               return;
-       }
-
-       /* Set the default tm hierarchy */
-       p->softport.default_tm_hierarchy_enable = 1;
-}
-
-cmdline_parse_inst_t cmd_set_port_tm_hierarchy_default = {
-       .f = cmd_set_port_tm_hierarchy_default_parsed,
-       .data = NULL,
-       .help_str = "set port tm hierarchy default <port_id>",
-       .tokens = {
-               (void *)&cmd_set_port_tm_hierarchy_default_set,
-               (void *)&cmd_set_port_tm_hierarchy_default_port,
-               (void *)&cmd_set_port_tm_hierarchy_default_tm,
-               (void *)&cmd_set_port_tm_hierarchy_default_hierarchy,
-               (void *)&cmd_set_port_tm_hierarchy_default_default,
-               (void *)&cmd_set_port_tm_hierarchy_default_port_id,
-               NULL,
-       },
-};
-#endif
-
 /** Set VXLAN encapsulation details */
 struct cmd_set_vxlan_result {
        cmdline_fixed_string_t set;
@@ -16435,7 +16310,7 @@ cmd_strict_link_prio_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_set_tc_strict_prio(res->port_id, res->tc_map);
 #endif
 
@@ -16519,7 +16394,7 @@ cmd_ddp_add_parsed(
                return;
        }
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_process_ddp_package(res->port_id,
                                               buff, size,
@@ -16587,7 +16462,7 @@ cmd_ddp_del_parsed(
        if (!buff)
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_process_ddp_package(res->port_id,
                                               buff, size,
@@ -16642,7 +16517,7 @@ cmd_ddp_info_parsed(
        uint8_t *pkg;
        uint32_t pkg_size;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        uint32_t i, j, n;
        uint8_t *buff;
        uint32_t buff_size = 0;
@@ -16663,7 +16538,7 @@ cmd_ddp_info_parsed(
        if (!pkg)
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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);
@@ -16878,7 +16753,7 @@ cmd_ddp_get_list_parsed(
        __rte_unused struct cmdline *cl,
        __rte_unused void *data)
 {
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -16888,11 +16763,13 @@ cmd_ddp_get_list_parsed(
 #endif
        int ret = -ENOTSUP;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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)
+       if (!p_list) {
                printf("%s: Failed to malloc buffer\n", __func__);
+               return;
+       }
 
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_get_ddp_list(res->port_id,
@@ -16954,7 +16831,7 @@ cmd_cfg_input_set_parsed(
        __rte_unused struct cmdline *cl,
        __rte_unused void *data)
 {
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -16966,7 +16843,7 @@ cmd_cfg_input_set_parsed(
                return;
        }
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (!strcmp(res->inset_type, "hash_inset"))
                inset_type = INSET_HASH;
        else if (!strcmp(res->inset_type, "fdir_inset"))
@@ -17077,7 +16954,7 @@ cmd_clear_input_set_parsed(
        __rte_unused struct cmdline *cl,
        __rte_unused void *data)
 {
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -17089,7 +16966,7 @@ cmd_clear_input_set_parsed(
                return;
        }
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (!strcmp(res->inset_type, "hash_inset"))
                inset_type = INSET_HASH;
        else if (!strcmp(res->inset_type, "fdir_inset"))
@@ -17205,13 +17082,13 @@ cmd_show_vf_stats_parsed(
 
        memset(&stats, 0, sizeof(stats));
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_get_vf_stats(res->port_id,
                                                res->vf_id,
                                                &stats);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_get_vf_stats(res->port_id,
                                                res->vf_id,
@@ -17310,12 +17187,12 @@ cmd_clear_vf_stats_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (ret == -ENOTSUP)
                ret = rte_pmd_i40e_reset_vf_stats(res->port_id,
                                                  res->vf_id);
 #endif
-#ifdef RTE_LIBRTE_BNXT_PMD
+#ifdef RTE_NET_BNXT
        if (ret == -ENOTSUP)
                ret = rte_pmd_bnxt_reset_vf_stats(res->port_id,
                                                  res->vf_id);
@@ -17402,7 +17279,7 @@ cmd_pctype_mapping_reset_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_flow_type_mapping_reset(res->port_id);
 #endif
 
@@ -17476,7 +17353,7 @@ cmd_pctype_mapping_get_parsed(
 {
        struct cmd_pctype_mapping_get_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_flow_type_mapping
                                mapping[RTE_PMD_I40E_FLOW_TYPE_MAX];
        int i, j, first_pctype;
@@ -17485,7 +17362,7 @@ cmd_pctype_mapping_get_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_flow_type_mapping_get(res->port_id, mapping);
 #endif
 
@@ -17503,7 +17380,7 @@ cmd_pctype_mapping_get_parsed(
                return;
        }
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        for (i = 0; i < RTE_PMD_I40E_FLOW_TYPE_MAX; i++) {
                if (mapping[i].pctype != 0ULL) {
                        first_pctype = 1;
@@ -17592,7 +17469,7 @@ cmd_pctype_mapping_update_parsed(
 {
        struct cmd_pctype_mapping_update_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_flow_type_mapping mapping;
        unsigned int i;
        unsigned int nb_item;
@@ -17602,7 +17479,7 @@ cmd_pctype_mapping_update_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#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;
@@ -17690,7 +17567,7 @@ cmd_ptype_mapping_get_parsed(
 {
        struct cmd_ptype_mapping_get_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        int max_ptype_num = 256;
        struct rte_pmd_i40e_ptype_mapping mapping[max_ptype_num];
        uint16_t count;
@@ -17700,7 +17577,7 @@ cmd_ptype_mapping_get_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_ptype_mapping_get(res->port_id,
                                        mapping,
                                        max_ptype_num,
@@ -17721,7 +17598,7 @@ cmd_ptype_mapping_get_parsed(
                printf("programming error: (%s)\n", strerror(-ret));
        }
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        if (!ret) {
                for (i = 0; i < count; i++)
                        printf("%3d\t0x%08x\n",
@@ -17799,7 +17676,7 @@ cmd_ptype_mapping_replace_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_ptype_mapping_replace(res->port_id,
                                        res->target,
                                        res->mask,
@@ -17881,7 +17758,7 @@ cmd_ptype_mapping_reset_parsed(
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        ret = rte_pmd_i40e_ptype_mapping_reset(res->port_id);
 #endif
 
@@ -17958,13 +17835,13 @@ cmd_ptype_mapping_update_parsed(
 {
        struct cmd_ptype_mapping_update_result *res = parsed_result;
        int ret = -ENOTSUP;
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        struct rte_pmd_i40e_ptype_mapping mapping;
 #endif
        if (port_id_is_invalid(res->port_id, ENABLED_WARN))
                return;
 
-#ifdef RTE_LIBRTE_I40E_PMD
+#ifdef RTE_NET_I40E
        mapping.hw_ptype = res->hw_ptype;
        mapping.sw_ptype = res->sw_ptype;
        ret = rte_pmd_i40e_ptype_mapping_update(res->port_id,
@@ -18249,7 +18126,8 @@ cmdline_parse_token_string_t cmd_config_per_port_rx_offload_result_offload =
                 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#timestamp#security#keep_crc#rss_hash");
+                          "scatter#buffer_split#timestamp#security#"
+                          "keep_crc#rss_hash");
 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,
@@ -18329,8 +18207,8 @@ cmdline_parse_inst_t cmd_config_per_port_rx_offload = {
        .help_str = "port config <port_id> rx_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|timestamp|security|keep_crc|rss_hash "
-                   "on|off",
+                   "jumbo_frame|scatter|buffer_split|timestamp|security|"
+                   "keep_crc|rss_hash on|off",
        .tokens = {
                (void *)&cmd_config_per_port_rx_offload_result_port,
                (void *)&cmd_config_per_port_rx_offload_result_config,
@@ -18379,7 +18257,7 @@ cmdline_parse_token_string_t cmd_config_per_queue_rx_offload_result_offload =
                 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#timestamp#security#keep_crc");
+                          "scatter#buffer_split#timestamp#security#keep_crc");
 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,
@@ -18435,8 +18313,8 @@ cmdline_parse_inst_t cmd_config_per_queue_rx_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|timestamp|security|keep_crc "
-                   "on|off",
+                   "jumbo_frame|scatter|buffer_split|timestamp|security|"
+                   "keep_crc on|off",
        .tokens = {
                (void *)&cmd_config_per_queue_rx_offload_result_port,
                (void *)&cmd_config_per_queue_rx_offload_result_port_id,
@@ -18660,7 +18538,8 @@ cmdline_parse_token_string_t cmd_config_per_port_tx_offload_result_offload =
                          "sctp_cksum#tcp_tso#udp_tso#outer_ipv4_cksum#"
                          "qinq_insert#vxlan_tnl_tso#gre_tnl_tso#"
                          "ipip_tnl_tso#geneve_tnl_tso#macsec_insert#"
-                         "mt_lockfree#multi_segs#mbuf_fast_free#security");
+                         "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 =
        TOKEN_STRING_INITIALIZER
                (struct cmd_config_per_port_tx_offload_result,
@@ -18745,7 +18624,8 @@ cmdline_parse_inst_t cmd_config_per_port_tx_offload = {
                    "sctp_cksum|tcp_tso|udp_tso|outer_ipv4_cksum|"
                    "qinq_insert|vxlan_tnl_tso|gre_tnl_tso|"
                    "ipip_tnl_tso|geneve_tnl_tso|macsec_insert|"
-                   "mt_lockfree|multi_segs|mbuf_fast_free|security on|off",
+                   "mt_lockfree|multi_segs|mbuf_fast_free|security|"
+                   "send_on_timestamp on|off",
        .tokens = {
                (void *)&cmd_config_per_port_tx_offload_result_port,
                (void *)&cmd_config_per_port_tx_offload_result_config,
@@ -19057,6 +18937,226 @@ cmdline_parse_inst_t cmd_show_tx_metadata = {
        },
 };
 
+/* *** show fec capability per port configuration *** */
+struct cmd_show_fec_capability_result {
+       cmdline_fixed_string_t cmd_show;
+       cmdline_fixed_string_t cmd_port;
+       cmdline_fixed_string_t cmd_fec;
+       cmdline_fixed_string_t cmd_keyword;
+       portid_t cmd_pid;
+};
+
+static void
+cmd_show_fec_capability_parsed(void *parsed_result,
+               __rte_unused struct cmdline *cl,
+               __rte_unused void *data)
+{
+#define FEC_CAP_NUM 2
+       struct cmd_show_fec_capability_result *res = parsed_result;
+       struct rte_eth_fec_capa speed_fec_capa[FEC_CAP_NUM];
+       unsigned int num = FEC_CAP_NUM;
+       unsigned int ret_num;
+       int ret;
+
+       if (!rte_eth_dev_is_valid_port(res->cmd_pid)) {
+               printf("Invalid port id %u\n", res->cmd_pid);
+               return;
+       }
+
+       ret = rte_eth_fec_get_capability(res->cmd_pid, speed_fec_capa, num);
+       if (ret == -ENOTSUP) {
+               printf("Function not implemented\n");
+               return;
+       } else if (ret < 0) {
+               printf("Get FEC capability failed\n");
+               return;
+       }
+
+       ret_num = (unsigned int)ret;
+       show_fec_capability(ret_num, speed_fec_capa);
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
+                       cmd_port, "port");
+cmdline_parse_token_num_t cmd_show_fec_capability_pid =
+       TOKEN_NUM_INITIALIZER(struct cmd_show_fec_capability_result,
+                       cmd_pid, UINT16);
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_show_fec_capability_result,
+                       cmd_keyword, "capabilities");
+
+cmdline_parse_inst_t cmd_show_capability = {
+       .f = cmd_show_fec_capability_parsed,
+       .data = NULL,
+       .help_str = "show port <port_id> fec capabilities",
+       .tokens = {
+               (void *)&cmd_show_fec_capability_show,
+               (void *)&cmd_show_fec_capability_port,
+               (void *)&cmd_show_fec_capability_pid,
+               (void *)&cmd_show_fec_capability_fec,
+               (void *)&cmd_show_fec_capability_keyword,
+               NULL,
+       },
+};
+
+/* *** show fec mode per port configuration *** */
+struct cmd_show_fec_metadata_result {
+       cmdline_fixed_string_t cmd_show;
+       cmdline_fixed_string_t cmd_port;
+       cmdline_fixed_string_t cmd_keyword;
+       portid_t cmd_pid;
+};
+
+static void
+cmd_show_fec_mode_parsed(void *parsed_result,
+               __rte_unused struct cmdline *cl,
+               __rte_unused void *data)
+{
+#define FEC_NAME_SIZE 16
+       struct cmd_show_fec_metadata_result *res = parsed_result;
+       uint32_t mode;
+       char buf[FEC_NAME_SIZE];
+       int ret;
+
+       if (!rte_eth_dev_is_valid_port(res->cmd_pid)) {
+               printf("Invalid port id %u\n", res->cmd_pid);
+               return;
+       }
+       ret = rte_eth_fec_get(res->cmd_pid, &mode);
+       if (ret == -ENOTSUP) {
+               printf("Function not implemented\n");
+               return;
+       } else if (ret < 0) {
+               printf("Get FEC mode failed\n");
+               return;
+       }
+
+       switch (mode) {
+       case RTE_ETH_FEC_MODE_CAPA_MASK(NOFEC):
+               strlcpy(buf, "off", sizeof(buf));
+               break;
+       case RTE_ETH_FEC_MODE_CAPA_MASK(AUTO):
+               strlcpy(buf, "auto", sizeof(buf));
+               break;
+       case RTE_ETH_FEC_MODE_CAPA_MASK(BASER):
+               strlcpy(buf, "baser", sizeof(buf));
+               break;
+       case RTE_ETH_FEC_MODE_CAPA_MASK(RS):
+               strlcpy(buf, "rs", sizeof(buf));
+               break;
+       default:
+               return;
+       }
+
+       printf("%s\n", buf);
+}
+
+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 =
+       TOKEN_STRING_INITIALIZER(struct cmd_show_fec_metadata_result,
+                       cmd_port, "port");
+cmdline_parse_token_num_t cmd_show_fec_mode_pid =
+       TOKEN_NUM_INITIALIZER(struct cmd_show_fec_metadata_result,
+                       cmd_pid, UINT16);
+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 = {
+       .f = cmd_show_fec_mode_parsed,
+       .data = NULL,
+       .help_str = "show port <port_id> fec_mode",
+       .tokens = {
+               (void *)&cmd_show_fec_mode_show,
+               (void *)&cmd_show_fec_mode_port,
+               (void *)&cmd_show_fec_mode_pid,
+               (void *)&cmd_show_fec_mode_keyword,
+               NULL,
+       },
+};
+
+/* *** set fec mode per port configuration *** */
+struct cmd_set_port_fec_mode {
+       cmdline_fixed_string_t set;
+       cmdline_fixed_string_t port;
+       portid_t port_id;
+       cmdline_fixed_string_t fec_mode;
+       cmdline_fixed_string_t fec_value;
+};
+
+/* Common CLI fields for set fec mode */
+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 =
+       TOKEN_STRING_INITIALIZER
+               (struct cmd_set_port_fec_mode,
+                port, "port");
+cmdline_parse_token_num_t cmd_set_port_fec_mode_port_id =
+       TOKEN_NUM_INITIALIZER
+               (struct cmd_set_port_fec_mode,
+                port_id, UINT16);
+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 =
+       TOKEN_STRING_INITIALIZER
+               (struct cmd_set_port_fec_mode,
+                fec_value, NULL);
+
+static void
+cmd_set_port_fec_mode_parsed(
+       void *parsed_result,
+       __rte_unused struct cmdline *cl,
+       __rte_unused void *data)
+{
+       struct cmd_set_port_fec_mode *res = parsed_result;
+       uint16_t port_id = res->port_id;
+       uint32_t mode;
+       int ret;
+
+       ret = parse_fec_mode(res->fec_value, &mode);
+       if (ret < 0) {
+               printf("Unknown fec mode: %s for Port %d\n", res->fec_value,
+                       port_id);
+               return;
+       }
+
+       ret = rte_eth_fec_set(port_id, mode);
+       if (ret == -ENOTSUP) {
+               printf("Function not implemented\n");
+               return;
+       } else if (ret < 0) {
+               printf("Set FEC mode failed\n");
+               return;
+       }
+}
+
+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",
+       .tokens = {
+               (void *)&cmd_set_port_fec_mode_set,
+               (void *)&cmd_set_port_fec_mode_port,
+               (void *)&cmd_set_port_fec_mode_port_id,
+               (void *)&cmd_set_port_fec_mode_str,
+               (void *)&cmd_set_port_fec_mode_value,
+               NULL,
+       },
+};
+
 /* show port supported ptypes */
 
 /* Common result structure for show port ptypes */
@@ -19403,6 +19503,7 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_load_from_file,
        (cmdline_parse_inst_t *)&cmd_showport,
        (cmdline_parse_inst_t *)&cmd_showqueue,
+       (cmdline_parse_inst_t *)&cmd_showeeprom,
        (cmdline_parse_inst_t *)&cmd_showportall,
        (cmdline_parse_inst_t *)&cmd_showdevice,
        (cmdline_parse_inst_t *)&cmd_showcfg,
@@ -19415,8 +19516,11 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_reset,
        (cmdline_parse_inst_t *)&cmd_set_numbers,
        (cmdline_parse_inst_t *)&cmd_set_log,
+       (cmdline_parse_inst_t *)&cmd_set_rxoffs,
+       (cmdline_parse_inst_t *)&cmd_set_rxpkts,
        (cmdline_parse_inst_t *)&cmd_set_txpkts,
        (cmdline_parse_inst_t *)&cmd_set_txsplit,
+       (cmdline_parse_inst_t *)&cmd_set_txtimes,
        (cmdline_parse_inst_t *)&cmd_set_fwd_list,
        (cmdline_parse_inst_t *)&cmd_set_fwd_mask,
        (cmdline_parse_inst_t *)&cmd_set_fwd_mode,
@@ -19432,7 +19536,7 @@ cmdline_parse_ctx_t main_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_LIBRTE_PMD_BOND
+#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_set_bonding_primary,
@@ -19489,6 +19593,8 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_set_fwd_eth_peer,
        (cmdline_parse_inst_t *)&cmd_set_qmap,
        (cmdline_parse_inst_t *)&cmd_set_xstats_hide_zero,
+       (cmdline_parse_inst_t *)&cmd_set_record_core_cycles,
+       (cmdline_parse_inst_t *)&cmd_set_record_burst_stats,
        (cmdline_parse_inst_t *)&cmd_operate_port,
        (cmdline_parse_inst_t *)&cmd_operate_specific_port,
        (cmdline_parse_inst_t *)&cmd_operate_attach_port,
@@ -19518,7 +19624,6 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_set_uc_hash_filter,
        (cmdline_parse_inst_t *)&cmd_set_uc_all_hash_filter,
        (cmdline_parse_inst_t *)&cmd_vf_mac_addr_filter,
-       (cmdline_parse_inst_t *)&cmd_set_vf_macvlan_filter,
        (cmdline_parse_inst_t *)&cmd_queue_rate_limit,
        (cmdline_parse_inst_t *)&cmd_tunnel_filter,
        (cmdline_parse_inst_t *)&cmd_tunnel_udp_config,
@@ -19531,11 +19636,9 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_config_rss_hash_key,
        (cmdline_parse_inst_t *)&cmd_dump,
        (cmdline_parse_inst_t *)&cmd_dump_one,
-       (cmdline_parse_inst_t *)&cmd_ethertype_filter,
        (cmdline_parse_inst_t *)&cmd_syn_filter,
        (cmdline_parse_inst_t *)&cmd_2tuple_filter,
        (cmdline_parse_inst_t *)&cmd_5tuple_filter,
-       (cmdline_parse_inst_t *)&cmd_flex_filter,
        (cmdline_parse_inst_t *)&cmd_add_del_ip_flow_director,
        (cmdline_parse_inst_t *)&cmd_add_del_udp_flow_director,
        (cmdline_parse_inst_t *)&cmd_add_del_sctp_flow_director,
@@ -19605,9 +19708,6 @@ cmdline_parse_ctx_t main_ctx[] = {
        (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,
-#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED
-       (cmdline_parse_inst_t *)&cmd_set_port_tm_hierarchy_default,
-#endif
        (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,
@@ -19661,6 +19761,7 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_del_port_tm_node_wred_profile,
        (cmdline_parse_inst_t *)&cmd_set_port_tm_node_shaper_profile,
        (cmdline_parse_inst_t *)&cmd_add_port_tm_nonleaf_node,
+       (cmdline_parse_inst_t *)&cmd_add_port_tm_nonleaf_node_pmode,
        (cmdline_parse_inst_t *)&cmd_add_port_tm_leaf_node,
        (cmdline_parse_inst_t *)&cmd_del_port_tm_node,
        (cmdline_parse_inst_t *)&cmd_set_port_tm_node_parent,
@@ -19679,7 +19780,7 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_tx_offload_get_configuration,
        (cmdline_parse_inst_t *)&cmd_config_per_port_tx_offload,
        (cmdline_parse_inst_t *)&cmd_config_per_queue_tx_offload,
-#ifdef RTE_LIBRTE_BPF
+#ifdef RTE_LIB_BPF
        (cmdline_parse_inst_t *)&cmd_operate_bpf_ld_parse,
        (cmdline_parse_inst_t *)&cmd_operate_bpf_unld_parse,
 #endif
@@ -19690,6 +19791,9 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_show_set_raw,
        (cmdline_parse_inst_t *)&cmd_show_set_raw_all,
        (cmdline_parse_inst_t *)&cmd_config_tx_dynf_specific,
+       (cmdline_parse_inst_t *)&cmd_show_fec_mode,
+       (cmdline_parse_inst_t *)&cmd_set_fec_mode,
+       (cmdline_parse_inst_t *)&cmd_show_capability,
        NULL,
 };
 
@@ -19714,7 +19818,7 @@ cmdline_read_from_file(const char *filename)
        printf("Read CLI commands from %s\n", filename);
 }
 
-/* prompt function, called from main on MASTER lcore */
+/* prompt function, called from main on MAIN lcore */
 void
 prompt(void)
 {