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

zhoumin zhoumin at loongson.cn
Thu Apr 27 10:33:48 CEST 2023


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.
>
> 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;
>   	}
>   



More information about the dev mailing list