[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 =
>>> ð_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