Commit 1676ebba authored by Alice Mikityanska's avatar Alice Mikityanska Committed by Jakub Kicinski
Browse files

net/ipv6: Remove jumbo_remove step from TX path



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: default avatarAlice Mikityanska <alice@isovalent.com>
Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260205133925.526371-5-alice.kernel@fastmail.im


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 81be30c1
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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) {
+1 −4
Original line number Diff line number Diff line
@@ -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;