[dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF

Wu, Yanglong yanglong.wu at intel.com
Thu Jan 11 11:29:46 CET 2018


Yes, this problem is caused by PF passing a wrong number of queue to VF. So basically, I removed  model check of "case ETH_MQ_RX_NONE". It seem right after I do that but I'am also not very sure the changing is really right. So thank to your comments, I will redebug this problem.

-----Original Message-----
From: Dai, Wei 
Sent: Thursday, January 11, 2018 5:48 PM
To: Wu, Yanglong <yanglong.wu at intel.com>; dev at dpdk.org; Yang, Zhiyong <zhiyong.yang at intel.com>
Cc: Wu, Yanglong <yanglong.wu at intel.com>
Subject: RE: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF

According to 82599 datasheet, VF working mode is controlled by its host PF.
If VF is working in RSS or DCB mode, it can use more than 1 queues.
That also means its host PF should enable RSS or DCB.
The PF Rx mode can be ETH_MQ_RX_VMDQ_RSS or ETH_MQ_RX_VMDQ_DCB.
So I think that DPDK app with PF cause this issue, not ixgbe PMD itself.

By the way, you can reply your patch mail to provide more info about how You reproduce this issue to easy others' reviewing and testing your patch.

Thanks

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Yanglong Wu
> Sent: Tuesday, January 9, 2018 2:32 PM
> To: dev at dpdk.org; Yang, Zhiyong <zhiyong.yang at intel.com>
> Cc: Wu, Yanglong <yanglong.wu at intel.com>
> Subject: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF
> 
> VF can't run in multi queue mode, if nb_q_per_pool was set as 1.
> Nb_q_per_pool is passed through to max_rx_q and max_tx_q in VF.
> So if nb_q_per_pool is equal to 1, max_rx_q and max_tx_q can't be more 
> than 1 and VF multi queue mode will fail.
> 
> Fixes: 27b609cbd1c6 (ethdev: move the multi-queue mode check)
> 
> Signed-off-by: Yanglong Wu <yanglong.wu at intel.com>
> ---
> v1~v3:
> coding style issue fix
> ---
> v4:
> Rework according to comments
> ---
>  drivers/net/ixgbe/ixgbe_ethdev.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> b/drivers/net/ixgbe/ixgbe_ethdev.c
> index baaeee5d9..6af4f8b2b 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -2240,8 +2240,6 @@ ixgbe_check_mq_mode(struct rte_eth_dev *dev)
>  		case ETH_MQ_RX_NONE:
>  			/* if nothing mq mode configure, use default scheme */
>  			dev->data->dev_conf.rxmode.mq_mode = ETH_MQ_RX_VMDQ_ONLY;
> -			if (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool > 1)
> -				RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 1;
>  			break;
>  		default: /* ETH_MQ_RX_DCB, ETH_MQ_RX_DCB_RSS or ETH_MQ_TX_DCB*/
>  			/* SRIOV only works in VMDq enable mode */
> --
> 2.11.0



More information about the dev mailing list