From: Olivier Matz <olivier.matz@6wind.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: "Wiles, Keith" <keith.wiles@intel.com>,
Stephen Hemminger <stephen@networkplumber.org>,
dpdk-dev <dev@dpdk.org>,
"Richardson, Bruce" <bruce.richardson@intel.com>
Subject: Re: [dpdk-dev] [RFC 00/14] prefix network structures
Date: Thu, 27 Dec 2018 10:35:30 +0100 [thread overview]
Message-ID: <20181227093530.igimdsn65xmr7qdk@platinum> (raw)
In-Reply-To: <9b343ff1-5d08-69e1-140b-fc89a4782570@intel.com>
Hi,
On Fri, Dec 21, 2018 at 03:14:29PM +0000, Ferruh Yigit wrote:
> On 12/21/2018 2:38 PM, Wiles, Keith wrote:
> >
> >
> >> On Dec 20, 2018, at 5:48 PM, Stephen Hemminger <stephen@networkplumber.org> wrote:
> >>
> >> On Thu, 20 Dec 2018 21:59:37 +0000
> >> Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> >>
> >>> On 10/24/2018 9:18 AM, olivier.matz at 6wind.com (Olivier Matz) wrote:
> >>>> This RFC targets 19.02.
> >>>>
> >>>> The rte_net headers conflict with the libc headers, because
> >>>> some definitions are duplicated, sometimes with few differences.
> >>>> This was discussed in [1], and more recently at the techboard.
> >>>>
> >>>> Before sending the deprecation notice (target for this is 18.11),
> >>>> here is a draft that can be discussed.
> >>>>
> >>>> This RFC adds the rte_ (or RTE_) prefix to all structures, functions
> >>>> and defines in rte_net library. This is a big changeset, that will
> >>>> break the API of many functions, but not the ABI.
> >>>>
> >>>> One question I'm asking is how can we manage the transition.
> >>>> Initially, I hoped it was possible to have a compat layer during
> >>>> one release (supporting both prefixed and unprefixed names), but
> >>>> now that the patch is done, it seems the impact is too big, and
> >>>> impacts too many libraries.
> >>>>
> >>>> Few examples:
> >>>> - rte_eth_macaddr_get/add/remove() use a (struct rte_ether_addr *)
> >>>> - many rte_flow structures use the rte_ prefixed net structures
> >>>> - the mac field of virtio_net structure is rte_ether_addr
> >>>> - the first arg of rte_thash_load_v6_addrs is (struct rte_ipv6_hdr *)
> >>>> ...
> >>>>
> >>>> Therefore, it is clear that doing this would break the compilation
> >>>> of many external applications.
> >>>>
> >>>> Another drawback we need to take in account: it will make the
> >>>> backport of patches more difficult, although this is something
> >>>> that could be tempered by a script.
> >>>>
> >>>> While it is obviously better to have a good namespace convention,
> >>>> we need to identify the issues we have today before deciding it's
> >>>> worth doing the change.
> >>>>
> >>>> Comments?
> >>>
> >>> Is there an consensus about the patchset? There was a decision on techboard to
> >>> go with this change (adding rte_ prefix) [1].
> >>>
> >>>
> >>> This is something that will affect DPDK consumers. Since many APIs are changing
> >>> most probably will break API compatibility for many libraries.
> >>>
> >>> Meanwhile the conflict with the libc headers mentioned a few times in the past,
> >>> this is something we need to fix.
> >>>
> >>> There are a few comments reluctant to this big modification, but what I
> >>> understand from Olivier's response both using BSD defines or having
> >>> compatibility headers in DPDK won't solve the problem completely.
> >>>
> >>> And assuming we will continue with this solution, another question is do we
> >>> still want to push in 19.02 scope? (And from process point of view I think a
> >>> deprecation notice is not merged for this change in 18.11 scope.)
> >>>
> >>> With the prediction of 19.05 will be big and already break API/ABI for some
> >>> libraries, can we push this into 19.05 as an early merge into repo?
> >>>
> >>> And I think this patch will affect LTS releases and will break auto backporting
> >>> for many fixes because it touches many places, so pushing this change even to
> >>> next LTS (19.11) can be an option.
> >>>
> >>>
> >>> Olivier, Thomas,
> >>>
> >>> What do you think about postponing this to 19.05 or even 19.11 ?
> >>>
> >>>
> >>>
> >>> [1]
> >>> https://mails.dpdk.org/archives/dev/2018-October/116695.html
> >>>
> >>>>
> >>>>
> >>>> Things that are missing in RFC:
> >>>> - test with FreeBSD
> >>>> - manually fix some indentation issues
> >>>>
> >>>>
> >>>> Olivier Matz (14):
> >>>> net: add rte prefix to arp structures
> >>>> net: add rte prefix to arp defines
> >>>> net: add rte prefix to ether structures
> >>>> net: add rte prefix to ether functions
> >>>> net: add rte prefix to ether defines
> >>>> net: add rte prefix to esp structure
> >>>> net: add rte prefix to gre structure
> >>>> net: add rte prefix to icmp structure
> >>>> net: add rte prefix to icmp defines
> >>>> net: add rte prefix to ip structure
> >>>> net: add rte prefix to ip defines
> >>>> net: add rte prefix to sctp structure
> >>>> net: add rte prefix to tcp structure
> >>>> net: add rte prefix to udp structure
> >>>
> >>>
> >>
> >> Sigh. Another case where DPDK has to reinvent something because
> >> we can't figure out how to do dependent libraries correctly.
> >> I would have rather just using the existing Linux, BSD definitions
> >> and fixing the DPDK code.
It is not that simple. As I said in [1], there are still some
differences between gnu libc and freebsd libc. Unfortunatly, the struct
ether_addr is one of the most important in dpdk, because it is widely
used in APIs (drivers).
We can find others differences, for instance in constant definitions in
if_arp.h. I also see that some structures are packed in freebsd but not
in glibc (ex: icmp6), this could have performance impact.
Many protocols that are currently defined in dpdk are missing in glibc:
esp, sctp, gre, mpls, ... so we will at least need rte_ structures for
these protocols.
Supporting other OSes or libc in the future could also increase the gaps.
For these reasons think it is reasonable to have a consistent set of
network structures in dpdk.
[1] https://mails.dpdk.org/archives/dev/2018-October/117258.html
> >> It is probably the only viable compromise, but it adds to long
> >> term maintenance, and breaks DPDK applications. Neither of which
> >> is a good thing.
> >>
> >> Should this be done by marking the old structure deprecated
> >> first? Ideally, spread over three releases: first, tell the users
> >> in the documentation it is coming; second, mark the old structures
> >> as deprecated causing compiler warnings; third, remove the old
> >> definitions. Doing at once is introducing user pain for no gain.
> >
> > +1
Annoucing the change before doing it is obvious. Marking the old
structures as deprecated before removing them is maybe doable (to be
checked that it does not cause conflicts with new structures), but it
means the conflict with libc headers that we are trying to solve will
remain for one more version, for a limited gain.
> With the current timeline, readiness of the patch and comments, at least it
> won't able to make this release, I will update the patchset status as 'Deferred'
>
> Should we discuss this again in techboard?
We should surely weigh the pros and cons. Especially the additional
backport troubles it can bring.
Are many people bothered by the current conflict with the libc headers?
Olivier
next prev parent reply other threads:[~2018-12-27 9:35 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-24 8:18 Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 01/14] net: add rte prefix to arp structures Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 02/14] net: add rte prefix to arp defines Olivier Matz
2018-10-24 14:53 ` Wiles, Keith
2018-10-26 7:25 ` Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 03/14] net: add rte prefix to ether structures Olivier Matz
2018-12-20 22:04 ` Ferruh Yigit
2018-10-24 8:18 ` [dpdk-dev] [RFC 04/14] net: add rte prefix to ether functions Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 05/14] net: add rte prefix to ether defines Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 06/14] net: add rte prefix to esp structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 07/14] net: add rte prefix to gre structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 08/14] net: add rte prefix to icmp structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 09/14] net: add rte prefix to icmp defines Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 10/14] net: add rte prefix to ip structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 11/14] net: add rte prefix to ip defines Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 12/14] net: add rte prefix to sctp structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 13/14] net: add rte prefix to tcp structure Olivier Matz
2018-10-24 8:18 ` [dpdk-dev] [RFC 14/14] net: add rte prefix to udp structure Olivier Matz
2018-10-24 8:32 ` [dpdk-dev] [RFC 00/14] prefix network structures Olivier Matz
2018-10-24 14:56 ` Wiles, Keith
2018-10-26 7:22 ` Olivier Matz
2018-10-24 16:09 ` Stephen Hemminger
2018-10-24 16:39 ` Bruce Richardson
2018-10-26 7:20 ` Olivier Matz
2018-10-26 10:15 ` Bruce Richardson
2018-10-26 11:28 ` Olivier Matz
2018-10-24 18:38 ` Stephen Hemminger
2018-10-26 7:56 ` Olivier Matz
2018-12-20 21:59 ` Ferruh Yigit
2018-12-20 23:48 ` Stephen Hemminger
2018-12-21 14:38 ` Wiles, Keith
2018-12-21 15:14 ` Ferruh Yigit
2018-12-27 9:35 ` Olivier Matz [this message]
2019-02-13 11:48 ` Yigit, Ferruh
2019-02-18 12:37 ` Ferruh Yigit
2019-02-18 16:58 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 " Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 01/14] net: add rte prefix to arp structures Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-22 16:00 ` Stephen Hemminger
2019-04-22 16:00 ` Stephen Hemminger
2019-05-13 11:59 ` Olivier Matz
2019-05-13 11:59 ` Olivier Matz
2019-04-22 16:03 ` Stephen Hemminger
2019-04-22 16:03 ` Stephen Hemminger
2019-05-13 12:04 ` Olivier Matz
2019-05-13 12:04 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 02/14] net: add rte prefix to arp defines Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 03/14] net: add rte prefix to ether structures Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 04/14] net: add rte prefix to ether functions Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 05/14] net: add rte prefix to ether defines Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 06/14] net: add rte prefix to esp structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 07/14] net: add rte prefix to gre structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 08/14] net: add rte prefix to icmp structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 09/14] net: add rte prefix to icmp defines Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 10/14] net: add rte prefix to ip structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 11/14] net: add rte prefix to ip defines Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-22 16:05 ` Stephen Hemminger
2019-04-22 16:05 ` Stephen Hemminger
2019-05-13 12:02 ` Olivier Matz
2019-05-13 12:02 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 12/14] net: add rte prefix to sctp structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 13/14] net: add rte prefix to tcp structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-04-10 8:32 ` [dpdk-dev] [RFC v2 14/14] net: add rte prefix to udp structure Olivier Matz
2019-04-10 8:32 ` Olivier Matz
2019-05-20 17:11 ` [dpdk-dev] [RFC v2 00/14] prefix network structures Ferruh Yigit
2019-05-21 16:15 ` Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 00/15] " Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 01/15] net: add rte prefix to arp structures Olivier Matz
2019-05-24 11:37 ` Ferruh Yigit
2019-05-21 16:13 ` [dpdk-dev] [PATCH 02/15] net: add rte prefix to arp defines Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 03/15] net: add rte prefix to ether structures Olivier Matz
2019-05-29 8:39 ` David Marchand
2019-05-21 16:13 ` [dpdk-dev] [PATCH 04/15] net: add rte prefix to ether functions Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 05/15] net: add rte prefix to ether defines Olivier Matz
2019-05-24 11:37 ` Ferruh Yigit
2019-05-21 16:13 ` [dpdk-dev] [PATCH 06/15] net: add rte prefix to esp structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 07/15] net: add rte prefix to gre structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 08/15] net: add rte prefix to icmp structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 09/15] net: add rte prefix to icmp defines Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 10/15] net: add rte prefix to ip structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 11/15] net: add rte prefix to ip defines Olivier Matz
2019-05-29 8:41 ` David Marchand
2019-05-21 16:13 ` [dpdk-dev] [PATCH 12/15] net: add rte prefix to sctp structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 13/15] net: add rte prefix to tcp structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 14/15] net: add rte prefix to udp structure Olivier Matz
2019-05-21 16:13 ` [dpdk-dev] [PATCH 15/15] doc: announce network api change Olivier Matz
2019-05-21 16:23 ` [dpdk-dev] [PATCH 00/15] prefix network structures Stephen Hemminger
2019-05-23 11:41 ` Maxime Coquelin
2019-05-24 11:38 ` Ferruh Yigit
2019-05-29 7:59 ` David Marchand
2019-05-29 14:46 ` Olivier Matz
2019-05-29 17:29 ` David Marchand
2019-05-29 21:15 ` Thomas Monjalon
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=20181227093530.igimdsn65xmr7qdk@platinum \
--to=olivier.matz@6wind.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=keith.wiles@intel.com \
--cc=stephen@networkplumber.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).