From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 693AC324D for ; Thu, 11 Jan 2018 16:29:27 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jan 2018 07:29:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,345,1511856000"; d="scan'208";a="20177885" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 11 Jan 2018 07:29:26 -0800 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 11 Jan 2018 07:29:26 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 11 Jan 2018 07:29:25 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.189]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.218]) with mapi id 14.03.0319.002; Thu, 11 Jan 2018 23:29:24 +0800 From: "Wu, Yanglong" To: "Wu, Yanglong" , "Dai, Wei" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF Thread-Index: AQHTiRPq5oeBx2rwV0O829S4NDqroaNt6lOAgACJP/CAAEu1sA== Date: Thu, 11 Jan 2018 15:29:23 +0000 Message-ID: References: <20171120022557.151461-1-yanglong.wu@intel.com> <20180109063205.6708-1-yanglong.wu@intel.com> <49759EB36A64CF4892C1AFEC9231E8D66CF214DA@PGSMSX112.gar.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDJhNzNhODktOTJmNi00MTNlLTljOWMtNGEyN2EwOGZjNDhlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImlOU2NXdjVhdkkxb1pzVjJiaTRSUXoyZEFUZmhEeCtJSU5pN3V4U0lDcU09In0= x-ctpclassification: CTP_NT x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jan 2018 15:29:28 -0000 Hi daiwei: After I double checked with this bug, the problem can be described as follo= w: When we start PF using testpmd like this: testpmd -c 0x3 -n 4 --socket-mem= =3D1024,1024 --file-prefix=3Dpf -w 0000:05:00.0 -w 0000:05:00.1 -- -i. The = number of queue signed to each port would be 1 and the rxmode.mq_mode of i= xgbe eth_dev would be set as ETH_MQ_RX_NONE. And this config info is make= sense, so until now there is no problem, right? And according to the code: case ETH_MQ_RX_NONE: > /* if nothing mq mode configure, use default scheme */ > dev->data->dev_conf.rxmode.mq_mode =3D 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 =3D 1; > break; The nb_q_per_pool of (RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool would be set as= 1, that means for VF the number of max queue can be used would be only 1.= =20 And next we start VF using l3fwd: l3fwd/build/l3fwd -c 0xc0000 -n 4 -w 0000:05:10.0 -w 0000:05:10.1 -- -p 0x3= --config '(0,0,18),(1,0,19)' --parse-ptype The number of rx_q equal to 1 and there is no problem. But, in l3fwd, the n= umber of tx_q would equal to the number of core used in l3fwd, so here numb= er of tx_q equal to 2 but as described above, the max number of queue can b= e used in VF is just only 1. So there is problem and l3fwd will check faile= d. =20 So there is two ways to fix this bug, the first is using this patch, don't = assign RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool as 1 when mq_mode =3D ETH_MQ_RX= _VMDQ_ONLY. And the second is that the number of tx_q would not assigned as the number = of cores used in l3fwd. Which one do you think is make sense?=20 Yanglong -----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wu, Yanglong Sent: Thursday, January 11, 2018 6:30 PM To: Dai, Wei ; dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF 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. S= o 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 ; dev@dpdk.org; Yang, Zhiyong Cc: Wu, Yanglong 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 Yo= u reproduce this issue to easy others' reviewing and testing your patch. Thanks > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Yanglong Wu > Sent: Tuesday, January 9, 2018 2:32 PM > To: dev@dpdk.org; Yang, Zhiyong > Cc: Wu, Yanglong > Subject: [dpdk-dev] [PATCH v4] net/ixgbe: fix l3fwd start failed on VF >=20 > 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=20 > than 1 and VF multi queue mode will fail. >=20 > Fixes: 27b609cbd1c6 (ethdev: move the multi-queue mode check) >=20 > Signed-off-by: Yanglong Wu > --- > v1~v3: > coding style issue fix > --- > v4: > Rework according to comments > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 2 -- > 1 file changed, 2 deletions(-) >=20 > 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 =3D 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 =3D 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