DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Wodkowski, PawelX" <pawelx.wodkowski@intel.com>
To: "Ouyang, Changchun" <changchun.ouyang@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v6 5/6] ixgbe: Config VF RSS
Date: Wed, 21 Jan 2015 08:44:08 +0000	[thread overview]
Message-ID: <F6F2A6264E145F47A18AB6DF8E87425D12B8B787@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <F52918179C57134FAEC9EA62FA2F96251197EA41@shsmsx102.ccr.corp.intel.com>



> -----Original Message-----
> From: Ouyang, Changchun
> Sent: Wednesday, January 21, 2015 3:44 AM
> To: Wodkowski, PawelX; dev@dpdk.org
> Cc: Ouyang, Changchun
> Subject: RE: [dpdk-dev] [PATCH v6 5/6] ixgbe: Config VF RSS
> 
> 
> 
> > -----Original Message-----
> > From: Wodkowski, PawelX
> > Sent: Tuesday, January 20, 2015 5:35 PM
> > To: Ouyang, Changchun; dev@dpdk.org
> > Subject: RE: [dpdk-dev] [PATCH v6 5/6] ixgbe: Config VF RSS
> >
> > > -----Original Message-----
> > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ouyang
> > Changchun
> > > Sent: Monday, January 12, 2015 6:59 AM
> > > To: dev@dpdk.org
> > > Subject: [dpdk-dev] [PATCH v6 5/6] ixgbe: Config VF RSS
> > >
> > > It needs config RSS and IXGBE_MRQC and IXGBE_VFPSRTYPE to enable VF
> > RSS.
> > >
> > > The psrtype will determine how many queues the received packets will
> > > distribute to, and the value of psrtype should depends on both facet:
> > > max VF rxq number which has been negotiated with PF, and the number of
> > > rxq specified in config on guest.
> > >
> > > Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
> > >
> > > Changes in v6:
> > >   - Raise an error for the case of ETH_16_POOLS in config vf rss, as the
> > previous
> > >     logic have changed it into: ETH_32_POOLS.
> > >
> > > Changes in v4:
> > >  - The number of rxq from config should be power of 2 and should not
> > > bigger than
> > >     max VF rxq number(negotiated between guest and host).
> > >
> > > ---
> > >  lib/librte_pmd_ixgbe/ixgbe_pf.c   |  15 ++++++
> > >  lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 102
> > > +++++++++++++++++++++++++++++++++-----
> > >  2 files changed, 105 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/lib/librte_pmd_ixgbe/ixgbe_pf.c
> > > b/lib/librte_pmd_ixgbe/ixgbe_pf.c index dbda9b5..93f6e43 100644
> > > --- a/lib/librte_pmd_ixgbe/ixgbe_pf.c
> > > +++ b/lib/librte_pmd_ixgbe/ixgbe_pf.c
> > > @@ -187,6 +187,21 @@ int ixgbe_pf_host_configure(struct rte_eth_dev
> > > *eth_dev)
> > >  	IXGBE_WRITE_REG(hw, IXGBE_MPSAR_LO(hw-
> > >mac.num_rar_entries),
> > > 0);
> > >  	IXGBE_WRITE_REG(hw, IXGBE_MPSAR_HI(hw-
> > >mac.num_rar_entries),
> > > 0);
> > >
> > > +	/*
> > > +	 * VF RSS can support at most 4 queues for each VF, even if
> > > +	 * 8 queues are available for each VF, it need refine to 4
> > > +	 * queues here due to this limitation, otherwise no queue
> > > +	 * will receive any packet even RSS is enabled.
> > > +	 */
> > > +	if (eth_dev->data->dev_conf.rxmode.mq_mode ==
> > > ETH_MQ_RX_VMDQ_RSS) {
> > > +		if (RTE_ETH_DEV_SRIOV(eth_dev).nb_q_per_pool == 8) {
> > > +			RTE_ETH_DEV_SRIOV(eth_dev).active =
> > > ETH_32_POOLS;
> > > +			RTE_ETH_DEV_SRIOV(eth_dev).nb_q_per_pool = 4;
> > > +			RTE_ETH_DEV_SRIOV(eth_dev).def_pool_q_idx =
> > > +				dev_num_vf(eth_dev) * 4;
> > > +		}
> > > +	}
> > > +
> >
> > I did not looked before at your patches but I think you are messing with
> > things that should not be changed:
> >
> > Why you are changing those values. They are set up during
> > ixgbe_pf_host_init(). Limitation you are describing is only RSS related. If
> > there will be reconfiguration from ETH_MQ_RX_VMDQ_RSS to other mode
> > those value need to be re-evaluated. If you find this kind of limitation you
> > should handle it during RSS part configuration. Or if your way is the right way
> > you should explicitly make separate function that will re-evaluate those
> > parameters each time.
> >
> > Second issue with this code is that the nb_q_per_pool is changed from:
> > ixgbe_pf_host_configure() -> ixgbe_dev_start() -> rte_eth_dev_start() and
> > rte_eth_dev_check_vf_rss_rxq_num() -> rte_eth_dev_check_mq_mode() ->
> > rte_eth_dev_configure()
> >
> > Which one is the right one? If both, why they are calculated twice?
> >
> > I don't think that rte_eth_dev_data::sriov field should be changed at all - it
> > holds current SRIOV capabilities.
> > If this will change during runtime it no point to have this field at all and should
> > be some kind of "siov_get()"
> > function that will calculate and return those parameters dynamically.
> >
> > Please refer also to
> >
> <F6F2A6264E145F47A18AB6DF8E87425D12B89B02@IRSMSX102.ger.corp.intel
> > .com>
> > for further issues.
> >
> > I think this patchset should not be applied.
> 
> The better way should be either raise your comments before this patch is
> merged into mainline, or

Yes, I should but I trusted that Vlad review was covering this part. Does no matter
my, fault.

> You send out a patch to fix it.
> I agree on part of what you said, the check is not necessary for vf rss in
> pf_host_configure because
> Check_mq_mode has already check the queue number, I will send out a patch to
> fix it by removing this check.
> 
> On the other hand, I disagree with you on " rte_eth_dev_data::sriov field should
> be changed at all ",

This is my private opinion, but either way, recalculating those values or not,
it should be consistent and for feature development well documented when it is 
evaluated. Changing something in function that's name is calculated
"rte_eth_dev_check_mq_mode()" is not so very obvious.

> The reason we need refine those value, is that those value get in pf_init, which is
> called on dev probe stage,
> And those value are not accurate, they should vary according to mq mode, the
> mq mode could be determined only after
> Dev is configured.

If you think they are "not accurate" you should not calculate them because they are
invalid and make VF behavior undefined. VF can probe those values before you
make them "accurate" in port configuration phase. What then? It is a race condition
bug, and it definitely should be fixed in your next patch.

You should also fix port reconfiguration bug as I mention before (for VFs > 0 testpmd
is unable to start port after commnad 'port config all rxq X', X > 1 after RSS VF 
patches).

Pawel

  reply	other threads:[~2015-01-21  8:44 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-15  2:56 [dpdk-dev] [PATCH 0/6] Enable VF RSS for Niantic Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 1/6] ixgbe: Code cleanup Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 3/6] ixgbe: Get VF queue number Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 5/6] ixgbe: Config VF RSS Ouyang Changchun
2014-12-15  2:57 ` [dpdk-dev] [PATCH 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2014-12-15 10:55 ` [dpdk-dev] [PATCH 0/6] Enable VF RSS for Niantic Bruce Richardson
2014-12-16  0:58   ` Ouyang, Changchun
2014-12-24  2:56 ` [dpdk-dev] [PATCH v2 " Ouyang Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 1/6] ixgbe: Code cleanup Ouyang Changchun
2014-12-24  3:08     ` Zhang, Helin
2014-12-24  3:22       ` Ouyang, Changchun
2014-12-24  3:41         ` Zhang, Helin
2014-12-24  3:50           ` Ouyang, Changchun
2014-12-24  3:53             ` Zhang, Helin
2014-12-24  4:46               ` Ouyang, Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 3/6] ixgbe: Get VF queue number Ouyang Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 5/6] ixgbe: Config VF RSS Ouyang Changchun
2014-12-24  2:56   ` [dpdk-dev] [PATCH v2 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2014-12-24  5:22   ` [dpdk-dev] [PATCH v3 0/6] Enable VF RSS for Niantic Ouyang Changchun
2014-12-24  5:22     ` [dpdk-dev] [PATCH v3 1/6] ixgbe: Code cleanup Ouyang Changchun
2014-12-24  5:23     ` [dpdk-dev] [PATCH v3 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2014-12-24  5:23     ` [dpdk-dev] [PATCH v3 3/6] ixgbe: Get VF queue number Ouyang Changchun
2014-12-24  5:23     ` [dpdk-dev] [PATCH v3 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2014-12-24  5:23     ` [dpdk-dev] [PATCH v3 5/6] ixgbe: Config VF RSS Ouyang Changchun
2014-12-24 10:39       ` Vlad Zolotarov
2014-12-25  2:14         ` Ouyang, Changchun
2014-12-25 13:13           ` Vlad Zolotarov
2014-12-26  2:07             ` Ouyang, Changchun
2014-12-25  2:43         ` Ouyang, Changchun
2014-12-25 13:20           ` Vlad Zolotarov
2014-12-26  1:52             ` Ouyang, Changchun
2014-12-26  6:49               ` Vladislav Zolotarov
2014-12-26  7:26                 ` Ouyang, Changchun
2014-12-26  7:37                   ` Vladislav Zolotarov
2014-12-26  8:45                     ` Ouyang, Changchun
2014-12-28 10:14                       ` Vlad Zolotarov
2015-01-05 10:29               ` Bruce Richardson
2015-01-06  1:00                 ` Ouyang, Changchun
2014-12-25 13:38           ` Vlad Zolotarov
2014-12-26  1:26             ` Ouyang, Changchun
2015-01-04  2:10       ` Liang, Cunming
2015-01-04  6:25         ` Ouyang, Changchun
2014-12-24  5:23     ` [dpdk-dev] [PATCH v3 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2014-12-24  9:59     ` [dpdk-dev] [PATCH v3 0/6] Enable VF RSS for Niantic Vlad Zolotarov
2014-12-25  1:46       ` Ouyang, Changchun
2015-01-05 10:38         ` Bruce Richardson
2015-01-05 13:02           ` Vlad Zolotarov
2015-01-06  1:11             ` Ouyang, Changchun
2015-01-06 11:18               ` Vlad Zolotarov
2015-01-06 11:18               ` Vlad Zolotarov
2015-01-06  1:04           ` Ouyang, Changchun
2014-12-24 10:49     ` Vlad Zolotarov
2014-12-25  2:26       ` Ouyang, Changchun
2014-12-25 12:46         ` Vlad Zolotarov
2014-12-26  2:37           ` Ouyang, Changchun
     [not found]             ` <CAOYyTHbrB-VinN5ZEd1tYTnS7_GhCT1jiHiZzNKkQUEJ1rG79w@mail.gmail.com>
2014-12-26  5:16               ` Vladislav Zolotarov
2014-12-26  5:25                 ` Ouyang, Changchun
2015-01-04  7:18     ` [dpdk-dev] [PATCH v4 " Ouyang Changchun
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 1/6] ixgbe: Code cleanup Ouyang Changchun
2015-01-04  8:22         ` Vlad Zolotarov
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2015-01-04  8:26         ` Vlad Zolotarov
2015-01-04  8:30           ` Vlad Zolotarov
2015-01-04  8:37             ` Ouyang, Changchun
2015-01-04  8:40               ` Vlad Zolotarov
2015-01-04  8:51                 ` Ouyang, Changchun
2015-01-04  9:37                   ` Vlad Zolotarov
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 3/6] ixgbe: Get VF queue number Ouyang Changchun
2015-01-04  8:38         ` Vlad Zolotarov
2015-01-05  2:59           ` Ouyang, Changchun
2015-01-05 10:07             ` Vlad Zolotarov
2015-01-06  1:54               ` Ouyang, Changchun
2015-01-06 11:26                 ` Vlad Zolotarov
2015-01-07  1:18                   ` Ouyang, Changchun
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2015-01-04  8:45         ` Vlad Zolotarov
2015-01-04  8:58           ` Ouyang, Changchun
2015-01-04  9:45             ` Vlad Zolotarov
2015-01-05  1:00               ` Ouyang, Changchun
2015-01-05 10:09                 ` Vlad Zolotarov
2015-01-06  1:56                   ` Ouyang, Changchun
2015-01-06 19:56                     ` Vlad Zolotarov
2015-01-07  2:28                       ` Ouyang, Changchun
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 5/6] ixgbe: Config VF RSS Ouyang Changchun
2015-01-04  7:18       ` [dpdk-dev] [PATCH v4 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2015-01-04  8:49         ` Vlad Zolotarov
2015-01-04  9:01           ` Ouyang, Changchun
2015-01-04  9:46             ` Vlad Zolotarov
2015-01-05  2:38               ` Ouyang, Changchun
2015-01-05 10:12                 ` Vlad Zolotarov
2015-01-06  2:01                   ` Ouyang, Changchun
2015-01-06 12:53                     ` Vlad Zolotarov
2015-01-07  1:50                       ` Ouyang, Changchun
2015-01-07  6:32       ` [dpdk-dev] [PATCH v5 0/6] Enable VF RSS for Niantic Ouyang Changchun
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 1/6] ixgbe: Code cleanup Ouyang Changchun
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 3/6] ixgbe: Get VF queue number Ouyang Changchun
2015-01-08  9:01           ` Vlad Zolotarov
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2015-01-08  9:19           ` Vlad Zolotarov
2015-01-08 18:48             ` Vlad Zolotarov
2015-01-09  5:54               ` Ouyang, Changchun
2015-01-09 13:49                 ` Vlad Zolotarov
2015-01-12  3:41                   ` Ouyang, Changchun
2015-01-12 13:58                     ` Vlad Zolotarov
2015-01-13  1:50                       ` Ouyang, Changchun
2015-01-13  9:00                         ` Vlad Zolotarov
2015-01-14  0:44                           ` Ouyang, Changchun
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 5/6] ixgbe: Config VF RSS Ouyang Changchun
2015-01-08  9:43           ` Vlad Zolotarov
2015-01-09  6:07             ` Ouyang, Changchun
2015-01-09 14:01               ` Vlad Zolotarov
2015-01-12  5:11                 ` Ouyang, Changchun
2015-01-07  6:32         ` [dpdk-dev] [PATCH v5 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2015-01-08  9:46           ` Vlad Zolotarov
2015-01-08  9:56         ` [dpdk-dev] [PATCH v5 0/6] Enable VF RSS for Niantic Vlad Zolotarov
2015-01-18 21:58           ` Thomas Monjalon
2015-01-19  9:40             ` Vlad Zolotarov
2015-01-12  5:59         ` [dpdk-dev] [PATCH v6 " Ouyang Changchun
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 1/6] ixgbe: Code cleanup Ouyang Changchun
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 2/6] ixgbe: Negotiate VF API version Ouyang Changchun
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 3/6] ixgbe: Get VF queue number Ouyang Changchun
2015-01-19  9:13             ` Wodkowski, PawelX
2015-01-20  0:54               ` Ouyang, Changchun
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 4/6] ether: Check VMDq RSS mode Ouyang Changchun
2015-01-12 14:06             ` Vlad Zolotarov
2015-01-18 22:04             ` Thomas Monjalon
2015-01-19 10:31             ` Wodkowski, PawelX
2015-01-20  1:03               ` Ouyang, Changchun
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 5/6] ixgbe: Config VF RSS Ouyang Changchun
2015-01-12 14:04             ` Vlad Zolotarov
2015-01-20  9:35             ` Wodkowski, PawelX
2015-01-21  2:43               ` Ouyang, Changchun
2015-01-21  8:44                 ` Wodkowski, PawelX [this message]
2015-01-22 12:59                   ` Vlad Zolotarov
2015-01-22 13:19                     ` Wodkowski, PawelX
2015-01-12  5:59           ` [dpdk-dev] [PATCH v6 6/6] testpmd: Set Rx VMDq RSS mode Ouyang Changchun
2015-01-12 14:05             ` Vlad Zolotarov
2015-01-18 22:24           ` [dpdk-dev] [PATCH v6 0/6] Enable VF RSS for Niantic Thomas Monjalon
2015-01-19  4:51             ` Ouyang, Changchun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=F6F2A6264E145F47A18AB6DF8E87425D12B8B787@IRSMSX102.ger.corp.intel.com \
    --to=pawelx.wodkowski@intel.com \
    --cc=changchun.ouyang@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).