app/testpmd: fix use of indirect action after port close
[dpdk.git] / app / test-pmd / cmdline.c
index 99510dd..1e5b294 100644 (file)
@@ -798,8 +798,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|ecpri|mpls|none|level-default|"
-                       "level-outer|level-inner|<flowtype_id>)\n"
+                       "ether|port|vxlan|geneve|nvgre|vxlan-gpe|ecpri|mpls|ipv4-chksum|l2tpv2|"
+                       "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"
@@ -2050,10 +2050,6 @@ cmd_config_mtu_parsed(void *parsed_result,
 {
        struct cmd_config_mtu_result *res = parsed_result;
 
-       if (res->value < RTE_ETHER_MIN_LEN) {
-               fprintf(stderr, "mtu cannot be less than %d\n", RTE_ETHER_MIN_LEN);
-               return;
-       }
        port_mtu_set(res->port_id, res->value);
 }
 
@@ -2183,7 +2179,7 @@ cmd_config_rss_parsed(void *parsed_result,
                        RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP |
                        RTE_ETH_RSS_L2_PAYLOAD | RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP |
                        RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | RTE_ETH_RSS_GTPU |
-                       RTE_ETH_RSS_ECPRI;
+                       RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_L2TPV2;
        else if (!strcmp(res->value, "eth"))
                rss_conf.rss_hf = RTE_ETH_RSS_ETH;
        else if (!strcmp(res->value, "vlan"))
@@ -2248,6 +2244,8 @@ cmd_config_rss_parsed(void *parsed_result,
                rss_conf.rss_hf = RTE_ETH_RSS_MPLS;
        else if (!strcmp(res->value, "ipv4-chksum"))
                rss_conf.rss_hf = RTE_ETH_RSS_IPV4_CHKSUM;
+       else if (!strcmp(res->value, "l2tpv2"))
+               rss_conf.rss_hf = RTE_ETH_RSS_L2TPV2;
        else if (!strcmp(res->value, "none"))
                rss_conf.rss_hf = 0;
        else if (!strcmp(res->value, "level-default")) {
@@ -2318,8 +2316,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|ecpri|mpls|none|level-default|"
-               "level-outer|level-inner|ipv4-chksum|<flowtype_id>",
+               "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|ipv4-chksum|l2tpv2|"
+               "none|level-default|level-outer|level-inner|<flowtype_id>",
        .tokens = {
                (void *)&cmd_config_rss_port,
                (void *)&cmd_config_rss_keyword,
@@ -2434,7 +2432,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#pppoe#gtpu#ecpri#mpls");
+                                "l2tpv3#esp#ah#pfcp#pppoe#gtpu#ecpri#mpls#l2tpv2");
 cmdline_parse_token_string_t cmd_config_rss_hash_key_value =
        TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, NULL);
 
@@ -2447,7 +2445,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|pppoe|gtpu|ecpri|mpls "
+               "l2tpv3|esp|ah|pfcp|pppoe|gtpu|ecpri|mpls|l2tpv2 "
                "<string of hex digits (variable length, NIC dependent)>",
        .tokens = {
                (void *)&cmd_config_rss_hash_key_port,
@@ -3125,7 +3123,7 @@ showport_parse_reta_config(struct rte_eth_rss_reta_entry64 *conf,
                return -1;
        }
        for (i = 0; i < ret; i++)
-               conf[i].mask = (uint64_t)strtoul(str_fld[i], &end, 0);
+               conf[i].mask = (uint64_t)strtoull(str_fld[i], &end, 0);
 
        return 0;
 }
@@ -6669,6 +6667,7 @@ static void cmd_create_bonded_device_parsed(void *parsed_result,
                                "Failed to enable promiscuous mode for port %u: %s - ignore\n",
                                port_id, rte_strerror(-ret));
 
+               ports[port_id].bond_flag = 1;
                ports[port_id].need_setup = 0;
                ports[port_id].port_status = RTE_PORT_STOPPED;
        }
@@ -9407,6 +9406,7 @@ cmd_set_vf_rxmode_parsed(void *parsed_result,
        }
 
        RTE_SET_USED(is_on);
+       RTE_SET_USED(vf_rxmode);
 
 #ifdef RTE_NET_IXGBE
        if (ret == -ENOTSUP)
@@ -17963,6 +17963,7 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_show_port_meter_cap,
        (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_srtcm,
        (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_trtcm,
+       (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_trtcm_rfc4115,
        (cmdline_parse_inst_t *)&cmd_del_port_meter_profile,
        (cmdline_parse_inst_t *)&cmd_create_port_meter,
        (cmdline_parse_inst_t *)&cmd_enable_port_meter,