]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/ipv6: Remove jumbo_remove step from TX path
authorAlice Mikityanska <alice@isovalent.com>
Thu, 5 Feb 2026 13:39:17 +0000 (15:39 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Feb 2026 04:50:12 +0000 (20:50 -0800)
Now that the kernel doesn't insert HBH for BIG TCP IPv6 packets, remove
unnecessary steps from the GSO TX path, that used to check and remove
HBH.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260205133925.526371-5-alice.kernel@fastmail.im
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dev.c
net/ipv6/ip6_offload.c

index 43de5af0d6ecd6473e3ceff0e1db99d1aaf5ce5f..ac6bcb2a07840671b0910ab1d2a5b588feaeebf0 100644 (file)
@@ -3813,8 +3813,7 @@ static netdev_features_t gso_features_check(const struct sk_buff *skb,
             (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4 &&
              vlan_get_protocol(skb) == htons(ETH_P_IPV6))) &&
            skb_transport_header_was_set(skb) &&
-           skb_network_header_len(skb) != sizeof(struct ipv6hdr) &&
-           !ipv6_has_hopopt_jumbo(skb))
+           skb_network_header_len(skb) != sizeof(struct ipv6hdr))
                features &= ~(NETIF_F_IPV6_CSUM | NETIF_F_TSO6 | NETIF_F_GSO_UDP_L4);
 
        return features;
@@ -3917,8 +3916,7 @@ int skb_csum_hwoffload_help(struct sk_buff *skb,
 
        if (features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) {
                if (vlan_get_protocol(skb) == htons(ETH_P_IPV6) &&
-                   skb_network_header_len(skb) != sizeof(struct ipv6hdr) &&
-                   !ipv6_has_hopopt_jumbo(skb))
+                   skb_network_header_len(skb) != sizeof(struct ipv6hdr))
                        goto sw_checksum;
 
                switch (skb->csum_offset) {
index c44bb5812484ef581931b4a896f958aa452f46ce..bd7f780e37a5f986cf4957a8d69514f7f42378b9 100644 (file)
@@ -94,7 +94,7 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
        struct sk_buff *segs = ERR_PTR(-EINVAL);
        struct ipv6hdr *ipv6h;
        const struct net_offload *ops;
-       int proto, err;
+       int proto;
        struct frag_hdr *fptr;
        unsigned int payload_len;
        u8 *prevhdr;
@@ -104,9 +104,6 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb,
        bool gso_partial;
 
        skb_reset_network_header(skb);
-       err = ipv6_hopopt_jumbo_remove(skb);
-       if (err)
-               return ERR_PTR(err);
        nhoff = skb_network_header(skb) - skb_mac_header(skb);
        if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h))))
                goto out;