[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6d317ad7-84f4-4cfe-b7d5-22eafada0f17@intel.com>
Date: Wed, 4 Dec 2024 13:59:25 +0100
From: Mateusz Polchlopek <mateusz.polchlopek@...el.com>
To: Petr Machata <petrm@...dia.com>, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, "Paolo
Abeni" <pabeni@...hat.com>, <netdev@...r.kernel.org>
CC: Simon Horman <horms@...nel.org>, Ido Schimmel <idosch@...dia.com>,
<mlxsw@...dia.com>, Andrew Lunn <andrew+netdev@...n.ch>, Menglong Dong
<menglong8.dong@...il.com>, Guillaume Nault <gnault@...hat.com>, "Alexander
Lobakin" <aleksander.lobakin@...el.com>, Breno Leitao <leitao@...ian.org>
Subject: Re: [PATCH net-next v1 04/11] vxlan: vxlan_rcv(): Extract
vxlan_hdr(skb) to a named variable
On 12/3/2024 3:30 PM, Petr Machata wrote:
> Having a named reference to the VXLAN header is more handy than having to
> conjure it anew through vxlan_hdr() on every use. Add a new variable and
> convert several open-coded sites.
>
> Additionally, convert one "unparsed" use to the new variable as well. Thus
> the only "unparsed" uses that remain are the flag-clearing and the header
> validity check at the end.
>
> Signed-off-by: Petr Machata <petrm@...dia.com>
> Reviewed-by: Ido Schimmel <idosch@...dia.com>
> ---
>
> Notes:
> CC: Andrew Lunn <andrew+netdev@...n.ch>
> CC: Menglong Dong <menglong8.dong@...il.com>
> CC: Guillaume Nault <gnault@...hat.com>
> CC: Alexander Lobakin <aleksander.lobakin@...el.com>
> CC: Breno Leitao <leitao@...ian.org>
>
> drivers/net/vxlan/vxlan_core.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c
> index 4905ed1c5e20..257411d1ccca 100644
> --- a/drivers/net/vxlan/vxlan_core.c
> +++ b/drivers/net/vxlan/vxlan_core.c
> @@ -1667,6 +1667,7 @@ static bool vxlan_ecn_decapsulate(struct vxlan_sock *vs, void *oiph,
> static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
> {
> struct vxlan_vni_node *vninode = NULL;
> + const struct vxlanhdr *vh;
> struct vxlan_dev *vxlan;
> struct vxlan_sock *vs;
> struct vxlanhdr unparsed;
> @@ -1685,11 +1686,11 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
> goto drop;
>
> unparsed = *vxlan_hdr(skb);
> + vh = vxlan_hdr(skb);
> /* VNI flag always required to be set */
> - if (!(unparsed.vx_flags & VXLAN_HF_VNI)) {
> + if (!(vh->vx_flags & VXLAN_HF_VNI)) {
> netdev_dbg(skb->dev, "invalid vxlan flags=%#x vni=%#x\n",
> - ntohl(vxlan_hdr(skb)->vx_flags),
> - ntohl(vxlan_hdr(skb)->vx_vni));
> + ntohl(vh->vx_flags), ntohl(vh->vx_vni));
> reason = SKB_DROP_REASON_VXLAN_INVALID_HDR;
> /* Return non vxlan pkt */
> goto drop;
> @@ -1701,7 +1702,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
> if (!vs)
> goto drop;
>
> - vni = vxlan_vni(vxlan_hdr(skb)->vx_vni);
> + vni = vxlan_vni(vh->vx_vni);
>
> vxlan = vxlan_vs_find_vni(vs, skb->dev->ifindex, vni, &vninode);
> if (!vxlan) {
> @@ -1713,7 +1714,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
> * used by VXLAN extensions if explicitly requested.
> */
> if (vxlan->cfg.flags & VXLAN_F_GPE) {
> - if (!vxlan_parse_gpe_proto(vxlan_hdr(skb), &protocol))
> + if (!vxlan_parse_gpe_proto(vh, &protocol))
> goto drop;
> unparsed.vx_flags &= ~VXLAN_GPE_USED_BITS;
> raw_proto = true;
Overall that's cool refactor but I wonder - couldn't it be somehow
merged with patch03? You touch vxlan_rcv function and the same
pieces of code in both patches, so maybe you can do that there?
Squash those two patches into one? It seems that in this patch you
change something you already changed in prev patch - maybe
it should be done in patch03? Or do I miss something?
Powered by blists - more mailing lists