The function cmd_config_rss_parsed() associated with the command
"port config rss all" required to first stop all ports, in order to
then entirely re-configure all ports with the new RSS hash computation
parameters.
Use now the new function rte_eth_dev_rss_hash_conf_update() that dynamically
only changes the RSS hash computation parameters of a port, without needing
to previously stop the port.

Signed-off-by: Ivan Boule <ivan.boule at 6wind.com>
---
 app/test-pmd/cmdline.c |   20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 9cc680f..e06379c 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -1145,26 +1145,22 @@ cmd_config_rss_parsed(void *parsed_result,
                        __attribute__((unused)) void *data)
 {
        struct cmd_config_rss *res = parsed_result;
-
-       if (!all_ports_stopped()) {
-               printf("Please stop all ports first\n");
-               return;
-       }
+       struct rte_eth_rss_conf rss_conf;
+       uint8_t i;

        if (!strcmp(res->value, "ip"))
-               rss_hf = ETH_RSS_IPV4 | ETH_RSS_IPV6;
+               rss_conf.rss_hf = ETH_RSS_IPV4 | ETH_RSS_IPV6;
        else if (!strcmp(res->value, "udp"))
-               rss_hf = ETH_RSS_IPV4 | ETH_RSS_IPV6 | ETH_RSS_IPV4_UDP;
+               rss_conf.rss_hf = ETH_RSS_IPV4_UDP | ETH_RSS_IPV6_UDP;
        else if (!strcmp(res->value, "none"))
-               rss_hf = 0;
+               rss_conf.rss_hf = 0;
        else {
                printf("Unknown parameter\n");
                return;
        }
-
-       init_port_config();
-
-       cmd_reconfig_device_queue(RTE_PORT_ALL, 1, 1);
+       rss_conf.rss_key = NULL;
+       for (i = 0; i < rte_eth_dev_count(); i++)
+               rte_eth_dev_rss_hash_conf_update(i, &rss_conf);
 }

 cmdline_parse_token_string_t cmd_config_rss_port =
-- 
1.7.10.4

Reply via email to