ipvlan: Prepare ipvlan_process_v4_outbound() to future .flowi4_tos conversion.
authorGuillaume Nault <gnault@redhat.com>
Wed, 30 Oct 2024 12:43:11 +0000 (13:43 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sun, 3 Nov 2024 22:28:37 +0000 (14:28 -0800)
Use ip4h_dscp() to get the DSCP from the IPv4 header, then convert the
dscp_t value to __u8 with inet_dscp_to_dsfield().

Then, when we'll convert .flowi4_tos to dscp_t, we'll just have to drop
the inet_dscp_to_dsfield() call.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/f48335504a05b3587e0081a9b4511e0761571ca5.1730292157.git.gnault@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ipvlan/ipvlan_core.c

index b1afcb8740de123ee87f699f373b1ce55ae285bd..fd591ddb3884df2046b816bd57f0814f7f5c4dfc 100644 (file)
@@ -3,6 +3,7 @@
  */
 
 #include <net/inet_dscp.h>
+#include <net/ip.h>
 
 #include "ipvlan.h"
 
@@ -422,7 +423,7 @@ static noinline_for_stack int ipvlan_process_v4_outbound(struct sk_buff *skb)
        int err, ret = NET_XMIT_DROP;
        struct flowi4 fl4 = {
                .flowi4_oif = dev->ifindex,
-               .flowi4_tos = ip4h->tos & INET_DSCP_MASK,
+               .flowi4_tos = inet_dscp_to_dsfield(ip4h_dscp(ip4h)),
                .flowi4_flags = FLOWI_FLAG_ANYSRC,
                .flowi4_mark = skb->mark,
                .daddr = ip4h->daddr,