From: Simon Horman <simon.horman@corigine.com>
To: Alexander Lobakin <aleksander.lobakin@intel.com>
Cc: Gavin Li <gavinl@nvidia.com>,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, roopa@nvidia.com,
eng.alaamohamedsoliman.am@gmail.com, bigeasy@linutronix.de,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
gavi@nvidia.com, roid@nvidia.com, maord@nvidia.com,
saeedm@nvidia.com
Subject: Re: [PATCH RESEND net-next v4 0/4] net/mlx5e: Add GBP VxLAN HW offload support
Date: Wed, 8 Mar 2023 21:13:31 +0100 [thread overview]
Message-ID: <ZAjsa538mpnEQ/QI@corigine.com> (raw)
In-Reply-To: <531bac44-23ba-d4f3-f350-8146b6fb063a@intel.com>
On Wed, Mar 08, 2023 at 02:34:28PM +0100, Alexander Lobakin wrote:
> From: Gavin Li <gavinl@nvidia.com>
> Date: Wed, 8 Mar 2023 10:22:36 +0800
>
> >
> > On 3/8/2023 12:58 AM, Alexander Lobakin wrote:
> >> External email: Use caution opening links or attachments
> >>
> >>
> >> From: Gavin Li <gavinl@nvidia.com>
> >> Date: Tue, 7 Mar 2023 17:19:35 +0800
> >>
> >>> On 3/6/2023 10:47 PM, Alexander Lobakin wrote:
> >>>> External email: Use caution opening links or attachments
> >>>>
> >>>>
> >>>> From: Gavin Li <gavinl@nvidia.com>
> >>>> Date: Mon, 6 Mar 2023 05:02:58 +0200
> >>>>
> >>>>> Patch-1: Remove unused argument from functions.
> >>>>> Patch-2: Expose helper function vxlan_build_gbp_hdr.
> >>>>> Patch-3: Add helper function for encap_info_equal for tunnels with
> >>>>> options.
> >>>>> Patch-4: Add HW offloading support for TC flows with VxLAN GBP
> >>>>> encap/decap
> >>>>> in mlx ethernet driver.
> >>>>>
> >>>>> Gavin Li (4):
> >>>>> vxlan: Remove unused argument from vxlan_build_gbp_hdr( ) and
> >>>>> vxlan_build_gpe_hdr( )
> >>>>> ---
> >>>>> changelog:
> >>>>> v2->v3
> >>>>> - Addressed comments from Paolo Abeni
> >>>>> - Add new patch
> >>>>> ---
> >>>>> vxlan: Expose helper vxlan_build_gbp_hdr
> >>>>> ---
> >>>>> changelog:
> >>>>> v1->v2
> >>>>> - Addressed comments from Alexander Lobakin
> >>>>> - Use const to annotate read-only the pointer parameter
> >>>>> ---
> >>>>> net/mlx5e: Add helper for encap_info_equal for tunnels with
> >>>>> options
> >>>>> ---
> >>>>> changelog:
> >>>>> v3->v4
> >>>>> - Addressed comments from Alexander Lobakin
> >>>>> - Fix vertical alignment issue
> >>>>> v1->v2
> >>>>> - Addressed comments from Alexander Lobakin
> >>>>> - Replace confusing pointer arithmetic with function call
> >>>>> - Use boolean operator NOT to check if the function return value is
> >>>>> not zero
> >>>>> ---
> >>>>> net/mlx5e: TC, Add support for VxLAN GBP encap/decap flows offload
> >>>>> ---
> >>>>> changelog:
> >>>>> v3->v4
> >>>>> - Addressed comments from Simon Horman
> >>>>> - Using cast in place instead of changing API
> >>>> I don't remember me acking this. The last thing I said is that in order
> >>>> to avoid cast-aways you need to use _Generic(). 2 times. IIRC you said
> >>>> "Ack" and that was the last message in that thread.
> >>>> Now this. Without me in CCs, so I noticed it accidentally.
> >>>> ???
> >>> Not asked by you but you said you were OK if I used cast-aways. So I did
> >>> the
> >>>
> >>> change in V3 and reverted back to using cast-away in V4.
> >> My last reply was[0]:
> >>
> >> "
> >> You wouldn't need to W/A it each time in each driver, just do it once in
> >> the inline itself.
> >> I did it once in __skb_header_pointer()[0] to be able to pass data
> >> pointer as const to optimize code a bit and point out explicitly that
> >> the function doesn't modify the packet anyhow, don't see any reason to
> >> not do the same here.
> >> Or, as I said, you can use macros + __builtin_choose_expr() or _Generic.
> >> container_of_const() uses the latter[1]. A __builtin_choose_expr()
> >> variant could rely on the __same_type() macro to check whether the
> >> pointer passed from the driver const or not.
> >>
> >> [...]
> >>
> >> [0]
> >> https://elixir.bootlin.com/linux/v6.2-rc8/source/include/linux/skbuff.h#L3992
> >> [1]
> >> https://elixir.bootlin.com/linux/v6.2-rc8/source/include/linux/container_of.h#L33
> >> "
> >>
> >> Where did I say here I'm fine with W/As in the drivers? I mentioned two
> >> options: cast-away in THE GENERIC INLINE, not the driver, or, more
> >> preferred, following the way of container_of_const().
> >> Then your reply[1]:
> >>
> >> "ACK"
> >>
> >> What did you ack then if you picked neither of those 2 options?
> >
> > I had fixed it with "cast-away in THE GENERIC INLINE" in V3 and got
> > comments and concern
> >
> > from Simon Horman. So, it was reverted.
> >
> > "But I really do wonder if this patch masks rather than fixes the
> > problem."----From Simon.
> >
> > I thought you were OK to revert the changes based on the reply.
>
> No I wasn't.
> Yes, it masks, because you need to return either const or non-const
> depending on the input pointer qualifier. container_of_const(), telling
> this 4th time.
>
> >
> > From my understanding, the function always return a non-const pointer
> > regardless the type of the
> >
> > input one, which is slightly different from your examples.
>
> See above.
>
> >
> > Any comments, Simon?
> >
> > If both or you are OK with option #1, I'll follow.
I'd like suggest moving on from the who said what aspect of this conversation.
Clearly there has been some misunderstanding. Let's move on.
Regarding the more technical topic of constness.
Unless I am mistaken function in question looks like this:
static inline void *ip_tunnel_info_opts(const struct ip_tunnel_info *info)
{
return info + 1;
}
My view is that if the input is const, the output should be const;
conversely, if the output is non-const then the input should be non-const.
It does seem to me that container_of_const has this property.
And from that perspective may be the basis of a good solution.
This is my opinion. I do understand that others may have different opinions.
next prev parent reply other threads:[~2023-03-08 20:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-06 3:02 [PATCH RESEND net-next v4 0/4] net/mlx5e: Add GBP VxLAN HW offload support Gavin Li
2023-03-06 3:02 ` [PATCH RESEND net-next v4 1/4] vxlan: Remove unused argument from vxlan_build_gbp_hdr( ) and vxlan_build_gpe_hdr( ) Gavin Li
2023-03-06 3:03 ` [PATCH RESEND net-next v4 2/4] vxlan: Expose helper vxlan_build_gbp_hdr Gavin Li
2023-03-06 3:03 ` [PATCH RESEND net-next v4 3/4] net/mlx5e: Add helper for encap_info_equal for tunnels with options Gavin Li
2023-03-06 3:03 ` [PATCH RESEND net-next v4 4/4] net/mlx5e: TC, Add support for VxLAN GBP encap/decap flows offload Gavin Li
2023-03-06 15:06 ` Simon Horman
2023-03-07 9:22 ` Gavin Li
2023-03-06 14:47 ` [PATCH RESEND net-next v4 0/4] net/mlx5e: Add GBP VxLAN HW offload support Alexander Lobakin
2023-03-07 9:19 ` Gavin Li
2023-03-07 16:58 ` Alexander Lobakin
2023-03-08 2:22 ` Gavin Li
2023-03-08 13:34 ` Alexander Lobakin
2023-03-08 20:13 ` Simon Horman [this message]
2023-03-09 11:57 ` Gavin Li
2023-03-09 16:33 ` Alexander Lobakin
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=ZAjsa538mpnEQ/QI@corigine.com \
--to=simon.horman@corigine.com \
--cc=aleksander.lobakin@intel.com \
--cc=bigeasy@linutronix.de \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eng.alaamohamedsoliman.am@gmail.com \
--cc=gavi@nvidia.com \
--cc=gavinl@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maord@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=roid@nvidia.com \
--cc=roopa@nvidia.com \
--cc=saeedm@nvidia.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).