DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Wu, Jingjing" <jingjing.wu@intel.com>
To: Vladimir Medvedkin <medvedkinv@gmail.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 0/4] NIC filters support for generic filter
Date: Sat, 14 Jun 2014 01:00:27 +0000	[thread overview]
Message-ID: <9BB6961774997848B5B42BEC655768F8A8D780@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <CANDrEHkPvqmkA6vUukApzTfwJAWz6_R8Lf+RBcJq1J6UNq0uMw@mail.gmail.com>

Hi, Vladimir

Yes, for Fortville, uint8_t is not enough, it was also the concern is to keep consistent with flow director’s implementation. But I agree that we need to change.

Let make an agreement like:

I will make change for the remarks from you. One is the change the type of rx_queue to uint16_t. The other is change API like “rte_eth_dev_add_syn_filter(uint8_t port_id, struct rte_syn_filter *filter, uint16_t rx_queue)”.

And about the pool and virtualization case, maybe you will send a new patch about it, maybe me. Whatever, just leave it in future, not  include in this patch.

Thank you!
Jingjing

From: Vladimir Medvedkin [mailto:medvedkinv@gmail.com]
Sent: Saturday, June 14, 2014 12:19 AM
To: Wu, Jingjing
Cc: Thomas Monjalon; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 0/4] NIC filters support for generic filter

Hi Jingjing,
Yes, I agree.
I have one more remark. It is about type of rx_queue arg. Now it is uint8_t. I think we have to change it to uint16_t because for Fortville NIC it is not enough. Quote fro the datasheet:
A PF VSI (Virtual Station Interfaces aka virtual NICs) can allocate and use up to 1536 LQPs (LAN queue pairs).
Regards,
Vladimir

2014-06-13 18:12 GMT+04:00 Wu, Jingjing <jingjing.wu@intel.com<mailto:jingjing.wu@intel.com>>:
Hi, Vladimir

Thanks a lot for your remarks.

Yes, your understanding is correct, in non-IOV mode, we can use 64pool, per pool can has 2 queues when ETH_MQ_RX_VMDQ_ONLY.  While in IOV mode, current DPDK version makes the number of queue to 1 by default. The pools logic makes sense, but I didn’t consider it globally with the thinking we can do it in future. I will be great if you can generate a new patch based on mine. Or we can discuss it further? Due to it is close to the feature deliver time now and much verification work for it, it may not possible to add it in this patch.

In API
About your first remark, the reason why I didn’t put the queue in the filter structure is that the filter contains the fields used for comparison and the queue is acted as result, and another concern is to keep consistent with flow director’s implementation.
About your second remark, I will accept it and integrate the change to patch in new version.

Do your  agree my proposal?


From: Vladimir Medvedkin [mailto:medvedkinv@gmail.com<mailto:medvedkinv@gmail.com>]
Sent: Friday, June 13, 2014 7:52 PM
To: Thomas Monjalon
Cc: Wu, Jingjing; dev@dpdk.org<mailto:dev@dpdk.org>

Subject: Re: [dpdk-dev] [PATCH v2 0/4] NIC filters support for generic filter

Hi all,
The 82599 datasheet (p. 284 and p.287) has only recommendations and only when possible about assign rx queue not used by RSS/DCB. I do not see any serious restrictions do not assign the rx queue used by RSS/DCB.
For cases with only 1 queue if I understand correctly this patch http://dpdk.org/ml/archives/dev/2014-May/002589.html we can init second queue in pool and assign it by filter. In ETH_MQ_RX_VMDQ_ONLY  mode init all possible queues (even if hardware route packets to zero queue in pools) so there no problem. Moreover, it is not necesary for rx queue to be set in the same pool.

About genericity. I agree with Jingjing, different controllers have different definitions for pools or VFs. And it is only Intel controllers! It is very hard to predict hardware implementation. For example for Fortville I can not find 5-tuple filters at all.

API. I have several remarks.
1. You use rx_queue as separate arg. For example:
rte_eth_dev_add_ethertype_filter(uint8_t port_id, uint16_t index, struct rte_ethertype_filter *filter, uint8_t rx_queue)
rte_eth_dev_get_ethertype_filter(uint8_t port_id, uint16_t index, struct rte_ethertype_filter *filter, uint8_t *rx_queue)
you can move uint8_t rx_queue into struct rte_ethertype_filter *filter.
2. In SYN filter:
rte_eth_dev_add_syn_filter(uint8_t port_id, uint8_t high_pri, uint8_t rx_queue)
rte_eth_dev_get_syn_filter(uint8_t port_id, struct rte_syn_filter *filter, uint8_t *rx_queue)
In first ADD func you alloc struct rte_syn_filter inside func, but in GET func you have to alloc struct rte_syn_filter in your app. May be better to do
rte_eth_dev_add_syn_filter(uint8_t port_id, struct rte_syn_filter *filter, uint8_t *rx_queue) ?

So, Jingjing made a lot of work, much more then I (igb filters, testpmd commands). It works the same as mine (not counting pools logic), so let's integrate it (it's will be great if jingjing change api according to my remarks).

Regards,
Vladimir

2014-06-12 19:36 GMT+04:00 Thomas Monjalon <thomas.monjalon@6wind.com<mailto:thomas.monjalon@6wind.com>>:
> 2014-06-11 17:45, Thomas Monjalon:
> > My main concern is that Vladimir Medvedkin suggested another API and I'd
> > like you give your opinion about it:
> >             http://dpdk.org/ml/archives/dev/2014-June/003053.html
> > It offers pool number in configuration of the filters.
2014-06-12 08:08, Wu, Jingjing:
> The pool field is used in virtualization scenario. It is acting as one of
> input set during filter matching in ixgbe.
> My patch didn't consider the virtualization scenario in generic filter
> feature. Because in 82599 datasheet, it is recommended to assign rx queues
> not used by DCB/RSS, that is virtualization without RSS and DCB mode. For
> this mode, current DPDK version makes the number of queue to 1 by default in
> IOV mode. So in this case it makes no sense make pool as a input set and the
> rx queue also need to be set to in this pool, so just keep the consistent
> with flow director who also ignore it in previous version.
> And further E1000/Niantic/Fortville have different definitions for VF, we
> need to think how to define it more generic.
> And even just need offer pool number in configuration of the filters as what
> Vladimir did, it also need to verify the interworking with Virtualization
> for different kinds of NICs, and the interworking with DCB and RSS which is
> not recommended in 82599's datasheet.
> So I think it will be a good choice to implement generic filter interworking
> with virtualization in future patch. If there is any volunteer to send patch
> for support this concern later, it will be also cool.
Vladimir, do you agree with this analysis?
As you suggested another implementation, I need you acknowledgment for this
patchset to be integrated.

Thanks
--
Thomas



  reply	other threads:[~2014-06-14  1:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-24  1:37 Jingjing Wu
2014-05-24  1:37 ` [dpdk-dev] [PATCH v2 1/4]ethdev: add ethdev APIs for NIC filters of " Jingjing Wu
2014-05-27  7:57   ` Ming, LiX
2014-05-27  9:18     ` Thomas Monjalon
2014-05-24  1:37 ` [dpdk-dev] [PATCH v2 2/4]e1000: add igb NIC filters of generic filter feature Jingjing Wu
2014-05-27  7:59   ` Ming, LiX
2014-05-24  1:37 ` [dpdk-dev] [PATCH v2 3/4]ixgbe: add ixgbe " Jingjing Wu
2014-05-27  8:00   ` Ming, LiX
2014-05-24  1:37 ` [dpdk-dev] [PATCH v2 4/4]app/test-pmd: add commands in testpmd for NIC filters Jingjing Wu
2014-05-27  8:00   ` Ming, LiX
2014-05-27 23:21 ` [dpdk-dev] [PATCH v2 0/4] NIC filters support for generic filter Thomas Monjalon
2014-05-28  0:53   ` Wu, Jingjing
2014-05-28  1:12     ` Wu, Jingjing
2014-06-11 15:45       ` Thomas Monjalon
2014-06-12  8:08         ` Wu, Jingjing
2014-06-12 15:36           ` Thomas Monjalon
2014-06-13 11:51             ` Vladimir Medvedkin
2014-06-13 14:12               ` Wu, Jingjing
2014-06-13 16:19                 ` Vladimir Medvedkin
2014-06-14  1:00                   ` Wu, Jingjing [this message]
2014-06-14  9:00                     ` Vladimir Medvedkin
2014-06-04  4:16 ` Cao, Waterman

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=9BB6961774997848B5B42BEC655768F8A8D780@SHSMSX104.ccr.corp.intel.com \
    --to=jingjing.wu@intel.com \
    --cc=dev@dpdk.org \
    --cc=medvedkinv@gmail.com \
    /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).