From: Thomas Monjalon <thomas@monjalon.net>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>,
Pavan Nikhilesh <pbhagavatula@marvell.com>,
Neil Horman <nhorman@tuxdriver.com>,
John McNamara <john.mcnamara@intel.com>,
Marko Kovacevic <marko.kovacevic@intel.com>,
dev@dpdk.org, orika@mellanox.com, david.marchand@redhat.com,
olivier.matz@6wind.com, konstantin.ananyev@intel.com
Subject: Re: [dpdk-dev] [PATCH v2 3/3] ethdev: improve flow mark Rx offload deprecation notice
Date: Fri, 22 Nov 2019 19:58:12 +0100 [thread overview]
Message-ID: <4645183.OkDat4SStM@xps> (raw)
In-Reply-To: <5aa70bf7-9afd-4c5d-708c-c922288755e8@solarflare.com>
22/11/2019 12:53, Andrew Rybchenko:
> On 11/22/19 2:15 PM, Thomas Monjalon wrote:
> > 22/11/2019 11:12, Andrew Rybchenko:
> >> On 11/22/19 1:01 AM, Thomas Monjalon wrote:
> >>> 19/11/2019 13:12, Andrew Rybchenko:
> >>>> The deprecation notice is required since it adds more requirements
> >>>> when RTE flow mark and flag actions may be used and require
> >>>> changes in applications.
> >>> I am still not sure what is the best solution here.
> >>> I continued to think about it in this thread:
> >>> http://mails.dpdk.org/archives/dev/2019-November/151960.html
> >>>
> >>> I think we cannot require any application change until 20.11
> >>> in order to keep API (and behaviour) compatibility.
> >> Expected, but still very disappointing.
> >>
> >> The feature is implemented by Pavan (@ Marvell), supported by me,
> >> used by Qi (@ Intel), looks better than alternatives from application
> >> developer point of view [1] and finally postponed for 1 year without really
> >> strong motivation.
> >
> > I see different valuable point of views. This is enough motivation.
>
> It looks like I miss it in previous discussion, I would be thankful if
> you give me links to read or hints how to find.
http://mails.dpdk.org/archives/dev/2019-November/150793.html
> > And no, it is not postponed by one year.
> > Next release can implement a new API.
> >
> >> I disagree that it is tightly related to moving
> >> mark/flag to
> >> dynamic field/flag and absolutely blocked by it. Yes, I know that the are
> >> concerns from the very beginning, but the problem is explained [2] and clear
> >> and no full-featured alternative solution is suggested. Solution suggested
> >> by Ori has many significant drawbacks as explained in [2] and highlighted
> >> in further discussion.
> >
> > I disagree with working only on mark action while there are a lot
> > of other configs which have to be implemented in drivers.
> >
> > The reality is that some drivers decided to have some "optimizations"
> > disabling some features, and you want the application to opt-in
> > in order to allow your optimized paths.
>
> Strictly speaking it is not about driver optimized paths only, but HW
> configuration as well which can be done on start-up only (not dynamic) and
> could be per-queue in fact.
OK good point, we can optimize both driver and hardware configuration
before enabling a queue.
Note all these threads are long but one of the benefits
is to get the definition of the need, which was lacking.
> > Note that opt-in is different of really enabling an offload.
> > For some basic port-level features like RSS hash,
> > it is enabled with an offload flag before starting the port,
> > acting as an opt-in.
>
> Could you highlight the difference between opt-in and offload.
> What is the key difference which makes one solution better
> than another? Why different mechanism is required?
Configuring a feature means providing all infos to make
the processing effective.
Opt-in a feature means asking for a processing to be available
when it will be configured later.
Configuration implies opt-in of course.
For now, we have only configuration APIs, no opt-in.
The need you want to address is to opt-in for a feature
before enabling a queue, and configure it later.
> > Some features have some dedicated API, which may be enabled after
> > starting the port, and no way to opt-in (or opt-out) before start.
>
> It sounds like you have examples in your mind. Please, share.
All rte_flow examples are some examples of configuration API
which can be done after start, without a way to opt-in in advance.
Other examples of APIs not clearly forbidden to use after start:
- rte_eth_dev_set_mtu()
- rte_eth_dev_vlan_filter()
- rte_eth_dev_rss_reta_update()
- rte_eth_mirror_rule_set()
- rte_eth_dev_udp_tunnel_port_add()
- rte_eth_dev_l2_tunnel_offload_set
- rte_eth_timesync_enable()
> > A lot of features are using rte_flow API which is in this situation.
> > If we take the opt-in path, let's not do it only for the mark action,
> > but let's create a real API for it:
> > rte_eth_dev_optin()
> > rte_eth_dev_optinall()
> > rte_eth_dev_optoutl()
>
> Introducing new types of controls would make configuration more and
> more complex. I think that many different types of control would
> over-complicate it. May be it is unavoidable, but it should be clear
> why the problem cannot be solved using existing types of controls
> (e.g. offloads).
The offload control is used as an effective configuration for now.
The features which are configured with DEV_RX_OFFLOAD_*
do not need any other API to be used.
Extending DEV_RX_OFFLOAD_* bits for enabling features which
must be configured via other API anyway, is possible.
The real problem is that features in DEV_RX_OFFLOAD_* are supposed
to be disabled by default. If we add some opt-in features here,
we cannot enable them by default for API compatibility and do the
right thing by default.
Choosing DEV_RX_OFFLOAD_* bits or rte_eth_dev_opt* functions is a detail.
The real decision is to change the API for using all these features.
Can we keep all features available by default (opt-out)?
And more importantly, again, it should be done for all features at once,
not only for the rte_flow mark.
> > I think the motivation is strong enough.
> >
> >> [1] http://inbox.dpdk.org/dev/1573203631946.15959@kth.se/
> >> [2]
> >> http://inbox.dpdk.org/dev/f170105b-9c60-1b04-cb18-52e0951ddcdb@solarflare.com/
> >>
> >>> If something would be implemented in 20.02,
> >>> it must be a new and optional API.
> >>
> >> Flow mark and flag may work without the offload with some drivers,
> >> but some drivers require the offload to make it work. Flow API error
> >> should contain message which says that the offload is disabled and
> >> must be enabled.
> >
> > Yes, the PMD should return an explicit error about a feature being disabled.
> > How does it impact ethdev API?
>
> It is still the offload discussed in the deprecation notice.
> The solution is far from ideal, since allows the difference in PMDs
> behaviour and an application debugged on one PMD may not
> work using another PMD (unfortunately it is true in any case, but
> such definition makes it 100% legal).
Do you mean PMDs have different capabilities and optimizations?
I think I don't get your point.
> >>> That's why I think no deprecation notice is required.
> >>>
> >>> [...]
> >>>> +* ethdev: New offload flag ``DEV_RX_OFFLOAD_FLOW_MARK`` will be added in 20.02.
> >>>> + This will provide application an information if ``RTE_FLOW_ACTION_TYPE_MARK``
> >>>> + or ``RTE_FLOW_ACTION_TYPE_FLAG`` is supported and, what is more important,
> >>>> + allow an application to let PMD know that it would like to use these
> >>>> + features.
> >>>> + PMD may use the information to choose optimal datapath implementation and
> >>>> + configure HW appropriately to optimize performance and/or resources usage.
next prev parent reply other threads:[~2019-11-22 18:58 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-19 12:05 [dpdk-dev] [PATCH 1/3] ethdev: remove deprecation notice for packet type set Andrew Rybchenko
2019-11-19 12:05 ` [dpdk-dev] [PATCH 2/3] ethdev: remove deprecation notice about RSS hash offload Andrew Rybchenko
2019-11-19 12:05 ` [dpdk-dev] [PATCH 3/3] ethdev: improve flow mark Rx offload deprecation notice Andrew Rybchenko
2019-11-19 12:12 ` [dpdk-dev] [PATCH v2 1/3] ethdev: remove deprecation notice for packet type set Andrew Rybchenko
2019-11-19 12:12 ` [dpdk-dev] [PATCH v2 2/3] ethdev: remove deprecation notice about RSS hash offload Andrew Rybchenko
2019-11-19 15:04 ` Ferruh Yigit
2019-11-25 16:38 ` Ferruh Yigit
2019-11-19 12:12 ` [dpdk-dev] [PATCH v2 3/3] ethdev: improve flow mark Rx offload deprecation notice Andrew Rybchenko
2019-11-21 22:01 ` Thomas Monjalon
2019-11-22 10:12 ` Andrew Rybchenko
2019-11-22 11:15 ` Thomas Monjalon
2019-11-22 11:53 ` Andrew Rybchenko
2019-11-22 13:32 ` Jerin Jacob
2019-11-22 18:58 ` Thomas Monjalon [this message]
2019-11-23 9:42 ` Jerin Jacob
2019-11-23 18:12 ` Thomas Monjalon
2019-11-25 10:44 ` Jerin Jacob
2019-11-25 11:39 ` Thomas Monjalon
2019-12-02 4:21 ` Jerin Jacob
2019-12-02 9:15 ` Thomas Monjalon
2019-12-02 11:09 ` Jerin Jacob
2019-12-02 11:57 ` Andrew Rybchenko
2019-12-05 8:12 ` Jerin Jacob
2019-12-09 9:17 ` Andrew Rybchenko
2019-12-16 7:38 ` Jerin Jacob
2019-12-16 10:02 ` Andrew Rybchenko
2019-11-19 15:04 ` [dpdk-dev] [PATCH v2 1/3] ethdev: remove deprecation notice for packet type set Ferruh Yigit
2019-11-25 16:38 ` Ferruh Yigit
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=4645183.OkDat4SStM@xps \
--to=thomas@monjalon.net \
--cc=arybchenko@solarflare.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=john.mcnamara@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=nhorman@tuxdriver.com \
--cc=olivier.matz@6wind.com \
--cc=orika@mellanox.com \
--cc=pbhagavatula@marvell.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.