On Fri, Jul 07, 2023 at 11:48:13AM +0300, Alexander Bluhm wrote:
> Hi,
>
> When we preserve M_TCP_TSO we also must keep ph_mss. In lo(4)
> LRO/TSO this logic was missing. As this may be relevant only for
> weird pf configs that forward from loopback and ifconfig tcplro is
> disabled by default, it is not relevant yet.
>
> ok?
>
ok mvs@
> bluhm
>
> Index: net/if.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if.c,v
> retrieving revision 1.705
> diff -u -p -r1.705 if.c
> --- net/if.c 7 Jul 2023 08:05:02 -0000 1.705
> +++ net/if.c 7 Jul 2023 08:47:21 -0000
> @@ -782,6 +782,7 @@ int
> if_input_local(struct ifnet *ifp, struct mbuf *m, sa_family_t af)
> {
> int keepflags, keepcksum;
> + uint16_t keepmss;
>
> #if NBPFILTER > 0
> /*
> @@ -807,9 +808,11 @@ if_input_local(struct ifnet *ifp, struct
> keepcksum = m->m_pkthdr.csum_flags & (M_IPV4_CSUM_OUT |
> M_TCP_CSUM_OUT | M_UDP_CSUM_OUT | M_ICMP_CSUM_OUT |
> M_TCP_TSO);
> + keepmss = m->m_pkthdr.ph_mss;
> m_resethdr(m);
> m->m_flags |= M_LOOP | keepflags;
> m->m_pkthdr.csum_flags = keepcksum;
> + m->m_pkthdr.ph_mss = keepmss;
> m->m_pkthdr.ph_ifidx = ifp->if_index;
> m->m_pkthdr.ph_rtableid = ifp->if_rdomain;
>
>