Download raw body.
softlro: reduce max packet size by max_linkhdr
Hi,
While debugging with stsp@, we figured out:
SoftLRO produces to large packets in some corner cases. The following
diff reduces the max IP packet size by max_linkhdr as tcp_output() do.
ok?
bye,
Jan
Index: netinet/tcp_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_input.c,v
diff -u -p -r1.457 tcp_input.c
--- netinet/tcp_input.c 24 Jul 2025 21:34:07 -0000 1.457
+++ netinet/tcp_input.c 4 Aug 2025 16:35:28 -0000
@@ -4385,7 +4385,7 @@ tcp_softlro_compare(struct ether_extract
return 0;
/* Check max. IPv4 length. */
- if (head->iplen + tail->iplen > IP_MAXPACKET)
+ if (head->iplen + tail->iplen > IP_MAXPACKET - max_linkhdr)
return 0;
} else if (head->ip6 && tail->ip6) {
/* Check IPv6 addresses. */
@@ -4397,7 +4397,7 @@ tcp_softlro_compare(struct ether_extract
/* Check max. IPv6 length. */
if ((head->iplen - head->iphlen) +
- (tail->iplen - tail->iphlen) > IPV6_MAXPACKET)
+ (tail->iplen - tail->iphlen) > IPV6_MAXPACKET - max_linkhdr)
return 0;
} else {
/* Address family does not match. */
softlro: reduce max packet size by max_linkhdr