X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fcmdline.c;h=961567070892a91e134daa6b99bc9d6322814ef5;hb=9089296206ceae3768cdf3a33441eee6735cdf1b;hp=7880cb246721f9d49617a7306c9214bbd3b9f1ca;hpb=01764b20c2ffd4b5755a6da40b307a12d8185b46;p=dpdk.git diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 7880cb2467..9615670708 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2010,6 +2010,8 @@ cmd_config_rss_parsed(void *parsed_result, struct cmd_config_rss *res = parsed_result; struct rte_eth_rss_conf rss_conf = { .rss_key_len = 0, }; struct rte_eth_dev_info dev_info = { .flow_type_rss_offloads = 0, }; + int use_default = 0; + int all_updated = 1; int diag; uint16_t i; @@ -2035,8 +2037,10 @@ 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, "none") || !strcmp(res->value, "default")) + else if (!strcmp(res->value, "none")) rss_conf.rss_hf = 0; + else if (!strcmp(res->value, "default")) + use_default = 1; else if (isdigit(res->value[0]) && atoi(res->value) > 0 && atoi(res->value) < 64) rss_conf.rss_hf = 1ULL << atoi(res->value); @@ -2046,18 +2050,21 @@ cmd_config_rss_parsed(void *parsed_result, } rss_conf.rss_key = NULL; /* Update global configuration for RSS types. */ - rss_hf = rss_conf.rss_hf; RTE_ETH_FOREACH_DEV(i) { - if (!strcmp(res->value, "default")) { + if (use_default) { rte_eth_dev_info_get(i, &dev_info); rss_conf.rss_hf = dev_info.flow_type_rss_offloads; } diag = rte_eth_dev_rss_hash_update(i, &rss_conf); - if (diag < 0) + if (diag < 0) { + all_updated = 0; printf("Configuration of RSS hash at ethernet port %d " "failed with error (%d): %s.\n", i, -diag, strerror(-diag)); + } } + if (all_updated && !use_default) + rss_hf = rss_conf.rss_hf; } cmdline_parse_token_string_t cmd_config_rss_port =