From: Thomas Monjalon <thomas@monjalon.net>
To: dev@dpdk.org
Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>,
Andrew Boyer <andrew.boyer@amd.com>,
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
Bruce Richardson <bruce.richardson@intel.com>,
Chenbo Xia <chenbox@nvidia.com>,
Chengwen Feng <fengchengwen@huawei.com>,
Dariusz Sosnowski <dsosnowski@nvidia.com>,
David Christensen <drc@linux.vnet.ibm.com>,
Hyong Youb Kim <hyonkim@cisco.com>,
Jerin Jacob <jerinj@marvell.com>, Jie Hai <haijie1@huawei.com>,
Jingjing Wu <jingjing.wu@intel.com>,
John Daley <johndale@cisco.com>,
Kevin Laatz <kevin.laatz@intel.com>,
Kiran Kumar K <kirankumark@marvell.com>,
Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
Maciej Czekaj <mczekaj@marvell.com>,
Matan Azrad <matan@nvidia.com>,
Maxime Coquelin <maxime.coquelin@redhat.com>,
Nithin Dabilpuram <ndabilpuram@marvell.com>,
Ori Kam <orika@nvidia.com>, Ruifeng Wang <ruifeng.wang@arm.com>,
Satha Rao <skoteshwar@marvell.com>,
Somnath Kotur <somnath.kotur@broadcom.com>,
Suanming Mou <suanmingm@nvidia.com>,
Sunil Kumar Kori <skori@marvell.com>,
Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
Yisen Zhuang <yisen.zhuang@huawei.com>,
Yuying Zhang <Yuying.Zhang@intel.com>,
mb@smartsharesystems.com,
Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: Re: [PATCH v4 01/18] mbuf: deprecate GCC marker in rte mbuf struct
Date: Sun, 18 Feb 2024 13:39:52 +0100 [thread overview]
Message-ID: <7561963.alqRGMn8q6@thomas> (raw)
In-Reply-To: <1707978080-28859-2-git-send-email-roretzla@linux.microsoft.com>
15/02/2024 07:21, Tyler Retzlaff:
> Provide a macro that allows conditional expansion of RTE_MARKER fields
> to empty to allow rte_mbuf to be used with MSVC. It is proposed that
> we announce the fields to be __rte_deprecated (currently disabled).
>
> Introduce C11 anonymous unions to permit aliasing of well-known
> offsets by name into the rte_mbuf structure by a *new* name and to
> provide padding for cache alignment.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> ---
> doc/guides/rel_notes/deprecation.rst | 20 ++
> lib/eal/include/rte_common.h | 6 +
> lib/mbuf/rte_mbuf_core.h | 375 +++++++++++++++++++----------------
> 3 files changed, 233 insertions(+), 168 deletions(-)
>
> diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
> index 10630ba..8594255 100644
> --- a/doc/guides/rel_notes/deprecation.rst
> +++ b/doc/guides/rel_notes/deprecation.rst
> @@ -17,6 +17,26 @@ Other API and ABI deprecation notices are to be posted below.
> Deprecation Notices
> -------------------
>
> +* mbuf: Named zero sized fields of type ``RTE_MARKER`` and ``RTE_MARKER64``
> + will be removed from ``struct rte_mbuf`` and replaced with new fields
> + in anonymous unions.
> +
> + The names of the fields impacted are:
> +
> + old name new name
> +
> + ``cacheline0`` ``mbuf_cachelin0``
> + ``rearm_data`` ``mbuf_rearm_data``
> + ``rx_descriptor_fields1`` ``mbuf_rx_descriptor_fields1``
> + ``cacheline1`` ``mbuf_cachelin1``
> +
> + Contributions to DPDK should immediately start using the new names,
> + applications should adapt to new names as soon as possible as the
> + old names will be removed in a future DPDK release.
> +
> + Note: types of the new names are not API compatible with the old and
> + some code conversion is required to maintain correct behavior.
> +
> * build: The ``enable_kmods`` option is deprecated and will be removed in a future release.
> Setting/clearing the option has no impact on the build.
> Instead, kernel modules will be always built for OS's where out-of-tree kernel modules
> diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
> index d7d6390..af73f67 100644
> --- a/lib/eal/include/rte_common.h
> +++ b/lib/eal/include/rte_common.h
> @@ -582,6 +582,12 @@ static void __attribute__((destructor(RTE_PRIO(prio)), used)) func(void)
> /** Marker for 8B alignment in a structure. */
> __extension__ typedef uint64_t RTE_MARKER64[0];
>
> +#define __rte_marker(type, name) type name /* __rte_deprecated */
> +
> +#else
> +
> +#define __rte_marker(type, name)
> +
> #endif
>
> /*********** Macros for calculating min and max **********/
> diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h
> index 5688683..9e9590b 100644
> --- a/lib/mbuf/rte_mbuf_core.h
> +++ b/lib/mbuf/rte_mbuf_core.h
> @@ -16,7 +16,10 @@
> * New fields and flags should fit in the "dynamic space".
> */
>
> +#include <assert.h>
> +#include <stdalign.h>
> #include <stdint.h>
> +#include <stddef.h>
>
> #include <rte_byteorder.h>
> #include <rte_stdatomic.h>
> @@ -464,204 +467,240 @@ enum {
> * The generic rte_mbuf, containing a packet mbuf.
> */
> struct rte_mbuf {
> - RTE_MARKER cacheline0;
> -
> - void *buf_addr; /**< Virtual address of segment buffer. */
> + __rte_marker(RTE_MARKER, cacheline0);
You don't need to keep the first argument.
This would be simpler:
__rte_marker(cacheline0);
You just need to create 2 functions: __rte_marker and __rte_marker64.
You should replace all occurrences of RTE_MARKER in DPDK in one patch,
and mark RTE_MARKER as deprecated (use #pragma GCC poison)
> + union {
> + char mbuf_cacheline0[RTE_CACHE_LINE_MIN_SIZE];
> + __extension__
> + struct {
> + void *buf_addr; /**< Virtual address of segment buffer.
I think it is ugly.
Changing mbuf API is a serious issue.
next prev parent reply other threads:[~2024-02-18 12:40 UTC|newest]
Thread overview: 177+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-30 23:26 [PATCH] replace GCC marker extension with C11 anonymous unions Tyler Retzlaff
2024-01-30 23:26 ` [PATCH] mbuf: " Tyler Retzlaff
2024-01-31 9:18 ` Morten Brørup
2024-01-31 21:09 ` Tyler Retzlaff
2024-01-31 22:39 ` Morten Brørup
2024-01-31 13:49 ` Bruce Richardson
2024-01-31 20:45 ` Tyler Retzlaff
2024-01-31 22:55 ` Morten Brørup
2024-02-13 6:45 ` [PATCH v2] RFC: " Tyler Retzlaff
2024-02-13 6:45 ` [PATCH v2] mbuf: " Tyler Retzlaff
2024-02-13 16:58 ` Morten Brørup
2024-02-13 18:48 ` Tyler Retzlaff
2024-02-13 19:27 ` Morten Brørup
2024-02-13 20:00 ` Tyler Retzlaff
2024-02-13 8:57 ` [PATCH v2] RFC: " Bruce Richardson
2024-02-13 17:09 ` Morten Brørup
2024-02-13 23:33 ` [PATCH v3] RFC deprecate RTE_MARKER in struct rte_mbuf Tyler Retzlaff
2024-02-13 23:33 ` [PATCH v3] mbuf: deprecate GCC marker in rte mbuf struct Tyler Retzlaff
2024-02-14 10:46 ` Morten Brørup
2024-02-14 20:16 ` Tyler Retzlaff
2024-02-14 10:49 ` [PATCH v3] RFC deprecate RTE_MARKER in struct rte_mbuf Morten Brørup
2024-02-26 1:18 ` Stephen Hemminger
2024-02-15 6:21 ` [PATCH v4 00/18] stop using zero sized marker fields Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 01/18] mbuf: deprecate GCC marker in rte mbuf struct Tyler Retzlaff
2024-02-18 2:28 ` fengchengwen
2024-02-18 12:39 ` Thomas Monjalon [this message]
2024-02-18 13:07 ` Morten Brørup
2024-02-18 15:22 ` Thomas Monjalon
2024-02-18 16:20 ` Morten Brørup
2024-02-20 17:24 ` Tyler Retzlaff
2024-02-20 17:20 ` Tyler Retzlaff
2024-02-20 17:53 ` Thomas Monjalon
2024-02-20 19:16 ` Thomas Monjalon
2024-02-20 19:37 ` Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 02/18] mbuf: stop using zero sized marker fields Tyler Retzlaff
2024-02-18 2:38 ` fengchengwen
2024-02-15 6:21 ` [PATCH v4 03/18] net/i40e: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 04/18] net/iavf: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 05/18] net/ice: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 06/18] net/ixgbe: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 07/18] net/mlx5: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 08/18] net/sfc: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 09/18] net/bnxt: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 10/18] net/enic: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 11/18] net/fm10k: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 12/18] net/hns3: " Tyler Retzlaff
2024-02-18 3:00 ` fengchengwen
2024-02-15 6:21 ` [PATCH v4 13/18] net/ionic: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 14/18] net/thunderx: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 15/18] net/virtio: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 16/18] net/cnxk: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 17/18] common/idpf: " Tyler Retzlaff
2024-02-15 6:21 ` [PATCH v4 18/18] examples/dma: " Tyler Retzlaff
2024-02-15 9:37 ` [PATCH v4 00/18] " Morten Brørup
2024-02-24 8:21 ` [PATCH v5 00/22] stop using RTE_MARKER extensions Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 01/22] eal: provide macro to expand marker extensions Tyler Retzlaff
2024-02-24 10:51 ` Thomas Monjalon
2024-02-24 11:18 ` Thomas Monjalon
2024-02-24 8:21 ` [PATCH v5 02/22] mbuf: expand rte markers empty when building with MSVC Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 03/22] security: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 04/22] cryptodev: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 05/22] mbuf: stop using mbuf cacheline marker fields Tyler Retzlaff
2024-02-24 10:58 ` Thomas Monjalon
2024-02-26 18:20 ` Stephen Hemminger
2024-02-24 8:21 ` [PATCH v5 06/22] mbuf: add mbuf descriptor accessors Tyler Retzlaff
2024-02-24 11:01 ` Thomas Monjalon
2024-02-24 8:21 ` [PATCH v5 07/22] common/idpf: use " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 08/22] net/bnxt: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 09/22] net/cnxk: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 10/22] net/enic: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 11/22] net/fm10k: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 12/22] net/hns3: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 13/22] net/i40e: " Tyler Retzlaff
2024-02-24 8:21 ` [PATCH v5 14/22] net/iavf: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 15/22] net/ice: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 16/22] net/ionic: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 17/22] net/ixgbe: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 18/22] net/mlx5: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 19/22] net/octeon_ep: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 20/22] net/sfc: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 21/22] net/thunderx: " Tyler Retzlaff
2024-02-24 8:22 ` [PATCH v5 22/22] net/virtio: " Tyler Retzlaff
2024-02-24 10:42 ` [PATCH v5 00/22] stop using RTE_MARKER extensions Morten Brørup
2024-02-24 11:13 ` Thomas Monjalon
2024-02-24 11:23 ` Morten Brørup
2024-02-27 5:41 ` [PATCH v6 00/23] stop and remove RTE_MARKER typedefs Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 01/23] mbuf: add accessors for rearm and Rx descriptor fields Tyler Retzlaff
2024-02-27 9:10 ` Morten Brørup
2024-02-27 17:17 ` Tyler Retzlaff
2024-02-28 8:28 ` Morten Brørup
2024-02-28 16:20 ` Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 02/23] mbuf: consolidate driver asserts for mbuf struct Tyler Retzlaff
2024-02-27 10:02 ` Konstantin Ananyev
2024-03-14 16:51 ` Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 03/23] common/idpf: use mbuf descriptor accessors Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 04/23] net/bnxt: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 05/23] net/cnxk: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 06/23] net/enic: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 07/23] net/fm10k: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 08/23] net/hns3: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 09/23] net/i40e: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 10/23] net/iavf: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 11/23] net/ice: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 12/23] net/ionic: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 13/23] net/ixgbe: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 14/23] net/mlx5: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 15/23] net/octeon_ep: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 16/23] net/sfc: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 17/23] net/thunderx: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 18/23] net/virtio: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 19/23] examples/dma: use mbuf descriptor accessor Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 20/23] mbuf: remove and stop using rte marker fields Tyler Retzlaff
2024-02-27 9:15 ` Morten Brørup
2024-02-27 10:03 ` Konstantin Ananyev
2024-02-27 15:18 ` David Marchand
2024-02-27 16:04 ` Morten Brørup
2024-02-27 17:23 ` Tyler Retzlaff
2024-02-28 10:42 ` David Marchand
2024-02-28 14:03 ` Dodji Seketeli
2024-02-28 14:43 ` David Marchand
2024-02-29 14:50 ` Dodji Seketeli
2024-02-28 14:18 ` David Marchand
2024-02-28 15:01 ` Morten Brørup
2024-02-28 15:33 ` David Marchand
2024-02-28 17:20 ` Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 21/23] security: remove " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 22/23] cryptodev: " Tyler Retzlaff
2024-02-27 5:41 ` [PATCH v6 23/23] devtools: forbid new use of rte marker typedefs Tyler Retzlaff
2024-03-20 22:01 ` [PATCH v7 0/4] remove use of RTE_MARKER fields in libraries Tyler Retzlaff
2024-03-20 22:01 ` [PATCH v7 1/4] net/i40e: use inline prefetch function Tyler Retzlaff
2024-03-26 10:16 ` Morten Brørup
2024-03-27 18:14 ` Tyler Retzlaff
2024-03-27 19:45 ` Morten Brørup
2024-03-20 22:01 ` [PATCH v7 2/4] mbuf: remove rte marker fields Tyler Retzlaff
2024-03-21 10:32 ` Bruce Richardson
2024-03-21 15:31 ` Tyler Retzlaff
2024-03-21 16:19 ` Morten Brørup
2024-03-26 11:12 ` Morten Brørup
2024-03-20 22:01 ` [PATCH v7 3/4] security: " Tyler Retzlaff
2024-03-26 10:28 ` Morten Brørup
2024-03-27 19:59 ` Tyler Retzlaff
2024-03-20 22:01 ` [PATCH v7 4/4] cryptodev: " Tyler Retzlaff
2024-03-26 10:31 ` Morten Brørup
2024-03-27 19:56 ` [PATCH v8 0/4] remove use of RTE_MARKER fields in libraries Tyler Retzlaff
2024-03-27 19:56 ` [PATCH v8 1/4] net/i40e: use inline prefetch function Tyler Retzlaff
2024-03-27 19:56 ` [PATCH v8 2/4] mbuf: remove rte marker fields Tyler Retzlaff
2024-03-27 19:56 ` [PATCH v8 3/4] security: " Tyler Retzlaff
2024-03-27 19:56 ` [PATCH v8 4/4] cryptodev: " Tyler Retzlaff
2024-04-02 20:08 ` [PATCH v9 0/4] remove use of RTE_MARKER fields in libraries Tyler Retzlaff
2024-04-02 20:08 ` [PATCH v9 1/4] net/i40e: use inline prefetch function Tyler Retzlaff
2024-04-02 20:08 ` [PATCH v9 2/4] mbuf: remove rte marker fields Tyler Retzlaff
2024-04-02 20:45 ` Stephen Hemminger
2024-04-02 20:51 ` Tyler Retzlaff
2024-04-02 20:08 ` [PATCH v9 3/4] security: " Tyler Retzlaff
2024-04-02 20:08 ` [PATCH v9 4/4] cryptodev: " Tyler Retzlaff
2024-04-03 17:53 ` [PATCH v10 0/4] remove use of RTE_MARKER fields in libraries Tyler Retzlaff
2024-04-03 17:53 ` [PATCH v10 1/4] net/i40e: use inline prefetch function Tyler Retzlaff
2024-04-03 21:49 ` Stephen Hemminger
2024-04-03 17:53 ` [PATCH v10 2/4] mbuf: remove rte marker fields Tyler Retzlaff
2024-04-03 19:32 ` Morten Brørup
2024-04-03 22:45 ` Tyler Retzlaff
2024-04-03 21:49 ` Stephen Hemminger
2024-04-03 17:53 ` [PATCH v10 3/4] security: " Tyler Retzlaff
2024-04-03 21:50 ` Stephen Hemminger
2024-04-03 17:53 ` [PATCH v10 4/4] cryptodev: " Tyler Retzlaff
2024-04-03 21:50 ` Stephen Hemminger
2024-04-04 17:51 ` [PATCH v11 0/4] remove use of RTE_MARKER fields in libraries Tyler Retzlaff
2024-04-04 17:51 ` [PATCH v11 1/4] net/i40e: use inline prefetch function Tyler Retzlaff
2024-04-04 17:51 ` [PATCH v11 2/4] mbuf: remove rte marker fields Tyler Retzlaff
2024-04-04 17:51 ` [PATCH v11 3/4] security: " Tyler Retzlaff
2024-04-04 17:51 ` [PATCH v11 4/4] cryptodev: " Tyler Retzlaff
2024-06-19 15:01 ` [PATCH v12 0/4] remove use of RTE_MARKER fields in libraries David Marchand
2024-06-19 15:01 ` [PATCH v12 1/4] net/i40e: use mbuf prefetch helper David Marchand
2024-06-19 15:01 ` [PATCH v12 2/4] mbuf: remove marker fields David Marchand
2024-06-19 15:01 ` [PATCH v12 3/4] security: " David Marchand
2024-06-19 15:01 ` [PATCH v12 4/4] cryptodev: " David Marchand
2024-06-19 17:30 ` [PATCH v12 0/4] remove use of RTE_MARKER fields in libraries David Marchand
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=7561963.alqRGMn8q6@thomas \
--to=thomas@monjalon.net \
--cc=Yuying.Zhang@intel.com \
--cc=ajit.khaparde@broadcom.com \
--cc=andrew.boyer@amd.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=bruce.richardson@intel.com \
--cc=chenbox@nvidia.com \
--cc=dev@dpdk.org \
--cc=drc@linux.vnet.ibm.com \
--cc=dsosnowski@nvidia.com \
--cc=fengchengwen@huawei.com \
--cc=haijie1@huawei.com \
--cc=hyonkim@cisco.com \
--cc=jerinj@marvell.com \
--cc=jingjing.wu@intel.com \
--cc=johndale@cisco.com \
--cc=kevin.laatz@intel.com \
--cc=kirankumark@marvell.com \
--cc=konstantin.v.ananyev@yandex.ru \
--cc=matan@nvidia.com \
--cc=maxime.coquelin@redhat.com \
--cc=mb@smartsharesystems.com \
--cc=mczekaj@marvell.com \
--cc=ndabilpuram@marvell.com \
--cc=orika@nvidia.com \
--cc=roretzla@linux.microsoft.com \
--cc=ruifeng.wang@arm.com \
--cc=skori@marvell.com \
--cc=skoteshwar@marvell.com \
--cc=somnath.kotur@broadcom.com \
--cc=suanmingm@nvidia.com \
--cc=viacheslavo@nvidia.com \
--cc=yisen.zhuang@huawei.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).