On 9/10/21 12:57 PM, Maxime Coquelin wrote:
> 
> 
> On 9/10/21 11:51 AM, Andrew Rybchenko wrote:
>> 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.
>>
> 
> I think that was the intial purpose of the command, but patch
> 8205e241b2b0 added setting the hash type as mandatory. There are
> no other command to configure the hash type from testpmd AFAICT.
> 
> Also, even without 8205e241b2b0, the function was broken because the
> key length was overiden.

I see, many thanks for explanations.


Reply via email to