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?

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;
 

Reply via email to