On 9/10/21 12:17 PM, Maxime Coquelin wrote:
> port_rss_hash_key_update() initializes rss_conf with the
> RSS hash type and key provided by the user, but it calls
> rte_eth_dev_rss_hash_conf_get() before calling
> rte_eth_dev_rss_hash_update(), which overides the parsed
> config with current NIC's config.
> 
> While the RSS key value is set again after, this is not
> the case of the key length and the type of hash.
> 
> There is no need to read the RSS config from the NIC, let's
> just try to set the user defined one.
> 
> Fixes: 8205e241b2b0 ("app/testpmd: add missing type to RSS hash commands")
> Cc: sta...@dpdk.org
> Cc: nelio.laranje...@6wind.com
> 
> Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
> ---
>  app/test-pmd/config.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index 31d8ba1b91..451bda53b1 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -2853,18 +2853,14 @@ port_rss_hash_key_update(portid_t port_id, char 
> rss_type[], uint8_t *hash_key,
>       int diag;
>       unsigned int i;
>  
> -     rss_conf.rss_key = NULL;
> +     rss_conf.rss_key = hash_key;
>       rss_conf.rss_key_len = hash_key_len;
>       rss_conf.rss_hf = 0;
>       for (i = 0; rss_type_table[i].str; i++) {
>               if (!strcmp(rss_type_table[i].str, rss_type))
>                       rss_conf.rss_hf = rss_type_table[i].rss_type;
>       }
> -     diag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf);
> -     if (diag == 0) {
> -             rss_conf.rss_key = hash_key;
> -             diag = rte_eth_dev_rss_hash_update(port_id, &rss_conf);
> -     }
> +     diag = rte_eth_dev_rss_hash_update(port_id, &rss_conf);

I'm not 100% sure, but I'd say the intent above could be
to update key only as the function name says. I.e. keep
rss_hf as is. That could be the reason to get first.

Reply via email to