[RFC] app/testpmd: use RSS conf from software when configuring DCB

Ferruh Yigit ferruh.yigit at amd.com
Tue Jun 6 20:09:03 CEST 2023


On 5/8/2023 2:21 AM, zhoumin wrote:
> Kindly ping.
> 

Hi Min,

Sorry for the delay.

> Should we solve this problem by modifying PMDs?
> 
> Is it suitable to maintain the RSS configurations for NIC by testpmd in
> order to set DCB?
> 
> 
> On Thur, Apr 27, 2023 at 4:33PM, zhoumin wrote:
>> Kindly ping.
>>
>> Any comments or suggestions will be appreciated.
>>
>> Best regards
>> Min
>>
>>
>> On 2023/4/12 下午5:52, Min Zhou wrote:
>>> In the testpmd command, we have to stop the port firstly before
>>> configuring
>>> the DCB. However, some PMDs may execute a hardware reset during the port
>>> stop, such as ixgbe. Some kind of reset operations of PMD could clear
>>> the
>>> configurations of RSS in the hardware register. This would cause the
>>> loss
>>> of RSS configurations that were set during the testpmd
>>> initialization. As
>>> a result, I find that I cannot enable RSS and DCB at the same time in
>>> the
>>> testpmd command when using Intel 82599 NIC.
>>>

cc'ed ixgbe maintainers too.

@Qiming, @Wenjun, are you testing DCB with RSS configuration?


Min,

Can you please give more detail on the problem, do you have in only on
device reset, or is there a generic problem on enabling DCB with RSS?

Also can you please describe how/why removing RSS configuration (this
patch) helps on the problem?

Thanks,
ferruh


>>> Although this patch can solve the problem I encountered, is there any
>>> risk
>>> of using rss conf from software instead of reading from the hardware
>>> register when configuring DCB?
>>>
>>> Signed-off-by: Min Zhou <zhoumin at loongson.cn>
>>> ---
>>>   app/test-pmd/testpmd.c | 11 +----------
>>>   1 file changed, 1 insertion(+), 10 deletions(-)
>>>
>>> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
>>> index 5cb6f92523..3c382267b8 100644
>>> --- a/app/test-pmd/testpmd.c
>>> +++ b/app/test-pmd/testpmd.c
>>> @@ -4247,14 +4247,12 @@ const uint16_t vlan_tags[] = {
>>>   };
>>>     static  int
>>> -get_eth_dcb_conf(portid_t pid, struct rte_eth_conf *eth_conf,
>>> +get_eth_dcb_conf(portid_t pid __rte_unused, struct rte_eth_conf
>>> *eth_conf,
>>>            enum dcb_mode_enable dcb_mode,
>>>            enum rte_eth_nb_tcs num_tcs,
>>>            uint8_t pfc_en)
>>>   {
>>>       uint8_t i;
>>> -    int32_t rc;
>>> -    struct rte_eth_rss_conf rss_conf;
>>>         /*
>>>        * Builds up the correct configuration for dcb+vt based on the
>>> vlan tags array
>>> @@ -4296,12 +4294,6 @@ get_eth_dcb_conf(portid_t pid, struct
>>> rte_eth_conf *eth_conf,
>>>           struct rte_eth_dcb_tx_conf *tx_conf =
>>>                   &eth_conf->tx_adv_conf.dcb_tx_conf;
>>>   -        memset(&rss_conf, 0, sizeof(struct rte_eth_rss_conf));
>>> -
>>> -        rc = rte_eth_dev_rss_hash_conf_get(pid, &rss_conf);
>>> -        if (rc != 0)
>>> -            return rc;
>>> -
>>>           rx_conf->nb_tcs = num_tcs;
>>>           tx_conf->nb_tcs = num_tcs;
>>>   @@ -4313,7 +4305,6 @@ get_eth_dcb_conf(portid_t pid, struct
>>> rte_eth_conf *eth_conf,
>>>           eth_conf->rxmode.mq_mode =
>>>                   (enum rte_eth_rx_mq_mode)
>>>                       (rx_mq_mode & RTE_ETH_MQ_RX_DCB_RSS);
>>> -        eth_conf->rx_adv_conf.rss_conf = rss_conf;
>>>           eth_conf->txmode.mq_mode = RTE_ETH_MQ_TX_DCB;
>>>       }
> 
> Best regards,
> 
> Min
> 



More information about the dev mailing list