net: skbuff: hide csum_not_inet when CONFIG_IP_SCTP not set
authorJakub Kicinski <kuba@kernel.org>
Mon, 17 Apr 2023 15:53:47 +0000 (08:53 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Apr 2023 12:04:30 +0000 (13:04 +0100)
SCTP is not universally deployed, allow hiding its bit
from the skb.

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/core/dev.c
net/sched/act_csum.c

index 513f03b..98d6b48 100644 (file)
@@ -983,7 +983,9 @@ struct sk_buff {
        __u8                    decrypted:1;
 #endif
        __u8                    slow_gro:1;
+#if IS_ENABLED(CONFIG_IP_SCTP)
        __u8                    csum_not_inet:1;
+#endif
 
 #ifdef CONFIG_NET_SCHED
        __u16                   tc_index;       /* traffic control index */
@@ -5060,7 +5062,19 @@ static inline void skb_reset_redirect(struct sk_buff *skb)
 
 static inline bool skb_csum_is_sctp(struct sk_buff *skb)
 {
+#if IS_ENABLED(CONFIG_IP_SCTP)
        return skb->csum_not_inet;
+#else
+       return 0;
+#endif
+}
+
+static inline void skb_reset_csum_not_inet(struct sk_buff *skb)
+{
+       skb->ip_summed = CHECKSUM_NONE;
+#if IS_ENABLED(CONFIG_IP_SCTP)
+       skb->csum_not_inet = 0;
+#endif
 }
 
 static inline void skb_set_kcov_handle(struct sk_buff *skb,
index 8aea682..3fc4dba 100644 (file)
@@ -3315,8 +3315,7 @@ int skb_crc32c_csum_help(struct sk_buff *skb)
                                                  skb->len - start, ~(__u32)0,
                                                  crc32c_csum_stub));
        *(__le32 *)(skb->data + offset) = crc32c_csum;
-       skb->ip_summed = CHECKSUM_NONE;
-       skb->csum_not_inet = 0;
+       skb_reset_csum_not_inet(skb);
 out:
        return ret;
 }
index 95e9304..8ed2850 100644 (file)
@@ -376,8 +376,7 @@ static int tcf_csum_sctp(struct sk_buff *skb, unsigned int ihl,
 
        sctph->checksum = sctp_compute_cksum(skb,
                                             skb_network_offset(skb) + ihl);
-       skb->ip_summed = CHECKSUM_NONE;
-       skb->csum_not_inet = 0;
+       skb_reset_csum_not_inet(skb);
 
        return 1;
 }