From: "Robin Jarry" <rjarry@redhat.com>
To: "Morten Brørup" <mb@smartsharesystems.com>,
"Vladimir Medvedkin" <medvedkinv@gmail.com>,
stephen@networkplumber.org
Cc: <dev@dpdk.org>, "Sunil Kumar Kori" <skori@marvell.com>,
"Rakesh Kudurumalla" <rkudurumalla@marvell.com>,
"Vladimir Medvedkin" <vladimir.medvedkin@intel.com>,
"Wisam Jaddo" <wisamm@nvidia.com>,
"Cristian Dumitrescu" <cristian.dumitrescu@intel.com>,
"Konstantin Ananyev" <konstantin.v.ananyev@yandex.ru>,
"Akhil Goyal" <gakhil@marvell.com>,
"Fan Zhang" <fanzhang.oss@gmail.com>,
"Bruce Richardson" <bruce.richardson@intel.com>,
"Yipeng Wang" <yipeng1.wang@intel.com>,
"Sameh Gobriel" <sameh.gobriel@intel.com>,
"Nithin Dabilpuram" <ndabilpuram@marvell.com>,
"Kiran Kumar K" <kirankumark@marvell.com>,
"Satha Rao" <skoteshwar@marvell.com>,
"Harman Kalra" <hkalra@marvell.com>,
"Ankur Dwivedi" <adwivedi@marvell.com>,
"Anoob Joseph" <anoobj@marvell.com>,
"Tejasree Kondoj" <ktejasree@marvell.com>,
"Gagandeep Singh" <g.singh@nxp.com>,
"Hemant Agrawal" <hemant.agrawal@nxp.com>,
"Ajit Khaparde" <ajit.khaparde@broadcom.com>,
"Somnath Kotur" <somnath.kotur@broadcom.com>,
"Chas Williams" <chas3@att.com>,
"Min Hu (Connor)" <humin29@huawei.com>,
"Potnuri Bharat Teja" <bharat@chelsio.com>,
"Sachin Saxena" <sachin.saxena@nxp.com>,
"Ziyang Xuan" <xuanziyang2@huawei.com>,
"Xiaoyun Wang" <cloud.wangxiaoyun@huawei.com>,
"Jie Hai" <haijie1@huawei.com>,
"Yisen Zhuang" <yisen.zhuang@huawei.com>,
"Jingjing Wu" <jingjing.wu@intel.com>,
"Dariusz Sosnowski" <dsosnowski@nvidia.com>,
"Viacheslav Ovsiienko" <viacheslavo@nvidia.com>,
"Bing Zhao" <bingz@nvidia.com>, "Ori Kam" <orika@nvidia.com>,
"Suanming Mou" <suanmingm@nvidia.com>,
"Matan Azrad" <matan@nvidia.com>,
"Chaoyong He" <chaoyong.he@corigine.com>,
"Devendra Singh Rawat" <dsinghrawat@marvell.com>,
"Alok Prasad" <palok@marvell.com>,
"Andrew Rybchenko" <andrew.rybchenko@oktetlabs.ru>,
"Jiawen Wu" <jiawenwu@trustnetic.com>,
"Jian Wang" <jianwang@trustnetic.com>,
"Thomas Monjalon" <thomas@monjalon.net>,
"Ferruh Yigit" <ferruh.yigit@amd.com>,
"Jiayu Hu" <hujiayu.hu@foxmail.com>,
"Pavan Nikhilesh" <pbhagavatula@marvell.com>,
"Maxime Coquelin" <maxime.coquelin@redhat.com>,
"Chenbo Xia" <chenbox@nvidia.com>
Subject: Re: IPv6 APIs rework
Date: Fri, 19 Jul 2024 13:09:30 +0200 [thread overview]
Message-ID: <D2TGW93BE36N.3G2FPPOUKJOLM@redhat.com> (raw)
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F5AE@smartserver.smartshare.dk>
Morten Brørup, Jul 19, 2024 at 12:46:
> When passing an IPv4 address as a value, alignment does matter; it
> must be 4 byte aligned.
I was expecting the compiler to do what is necessary to copy the data to
an aligned register before jumping to the function.
> On a CPU with 128 bit registers, I would probably also pass an IPv6
> address as a value. With such a CPU, the parameter type should be
> uint128_t or rte_be128_t, depending on byte order.
I don't think there is a portable/standard uint128_t yet. Everything
I could find is either GCC or linux specific.
> There's a 3rd option:
> Have an IPv6 type that is simply an array of 16 bytes with no explicitly specified alignment:
>
> struct rte_ipv6_addr {
> unsigned char addr_bytes[RTE_IPV6_ADDR_LEN];
> };
>
> Or:
>
> typedef struct rte_ipv6_addr {
> unsigned char addr_bytes[RTE_IPV6_ADDR_LEN];
> } rte_ipv6_addr_t;
>
> If used as is, it will be unaligned.
>
> And if alignment offers improved performance for some use cases,
> explicit alignment attributes can be added to the type in those use
> cases.
>
> Not using an uint128_t type (or a union of other types than unsigned
> char) will also avoid byte order issues.
>
> I guess Stephen was right to begin with. :-)
Having the type as a union (as is the POSIX type) makes casting to
integers a lot less tedious and makes the structure overall more
flexible.
We could completely add an unaligned be128 member to the union by the
way. I don't see what is wrong with having sub union members.
About your concern with byte order, since the union members have
explicit rte_be*_t types, I don't think confusion can happen. I have
also renamed the members, replacing the "u" prefix with "a" so that it
does not indicate that it should be used as a host integer.
struct __rte_aligned(1) rte_ipv6_addr {
union {
unsigned char a[16];
unaligned_be16_t a16[8];
unaligned_be32_t a32[4];
unaligned_be64_t a64[2];
unaligned_be128_t a128[1];
};
} __rte_packed;
next prev parent reply other threads:[~2024-07-19 11:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-18 15:03 IPv6 APIs rework Robin Jarry
2024-07-18 20:27 ` Morten Brørup
2024-07-18 21:15 ` Stephen Hemminger
2024-07-18 21:40 ` Robin Jarry
2024-07-18 21:25 ` Vladimir Medvedkin
2024-07-18 21:34 ` Robin Jarry
2024-07-19 8:25 ` Konstantin Ananyev
2024-07-19 9:12 ` Morten Brørup
2024-07-19 10:02 ` Robin Jarry
2024-07-19 10:09 ` Bruce Richardson
2024-07-19 10:46 ` Morten Brørup
2024-07-19 11:09 ` Robin Jarry [this message]
2024-07-19 15:47 ` Morten Brørup
2024-07-19 17:07 ` Stephen Hemminger
2024-07-20 17:43 ` Robin Jarry
2024-07-20 20:26 ` Stephen Hemminger
2024-07-20 20:33 ` Robin Jarry
2024-07-21 16:12 ` Morten Brørup
2024-07-21 21:51 ` Robin Jarry
2024-07-22 9:31 ` Morten Brørup
2024-07-19 10:41 ` Medvedkin, Vladimir
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=D2TGW93BE36N.3G2FPPOUKJOLM@redhat.com \
--to=rjarry@redhat.com \
--cc=adwivedi@marvell.com \
--cc=ajit.khaparde@broadcom.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=anoobj@marvell.com \
--cc=bharat@chelsio.com \
--cc=bingz@nvidia.com \
--cc=bruce.richardson@intel.com \
--cc=chaoyong.he@corigine.com \
--cc=chas3@att.com \
--cc=chenbox@nvidia.com \
--cc=cloud.wangxiaoyun@huawei.com \
--cc=cristian.dumitrescu@intel.com \
--cc=dev@dpdk.org \
--cc=dsinghrawat@marvell.com \
--cc=dsosnowski@nvidia.com \
--cc=fanzhang.oss@gmail.com \
--cc=ferruh.yigit@amd.com \
--cc=g.singh@nxp.com \
--cc=gakhil@marvell.com \
--cc=haijie1@huawei.com \
--cc=hemant.agrawal@nxp.com \
--cc=hkalra@marvell.com \
--cc=hujiayu.hu@foxmail.com \
--cc=humin29@huawei.com \
--cc=jianwang@trustnetic.com \
--cc=jiawenwu@trustnetic.com \
--cc=jingjing.wu@intel.com \
--cc=kirankumark@marvell.com \
--cc=konstantin.v.ananyev@yandex.ru \
--cc=ktejasree@marvell.com \
--cc=matan@nvidia.com \
--cc=maxime.coquelin@redhat.com \
--cc=mb@smartsharesystems.com \
--cc=medvedkinv@gmail.com \
--cc=ndabilpuram@marvell.com \
--cc=orika@nvidia.com \
--cc=palok@marvell.com \
--cc=pbhagavatula@marvell.com \
--cc=rkudurumalla@marvell.com \
--cc=sachin.saxena@nxp.com \
--cc=sameh.gobriel@intel.com \
--cc=skori@marvell.com \
--cc=skoteshwar@marvell.com \
--cc=somnath.kotur@broadcom.com \
--cc=stephen@networkplumber.org \
--cc=suanmingm@nvidia.com \
--cc=thomas@monjalon.net \
--cc=viacheslavo@nvidia.com \
--cc=vladimir.medvedkin@intel.com \
--cc=wisamm@nvidia.com \
--cc=xuanziyang2@huawei.com \
--cc=yipeng1.wang@intel.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 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.