Don't blindly set IP packet length from interface MTU in TSO case.
Remote host can advertise smaller MSS than that of sender so upper stack might have adjusted the MSS which in turn generates IP packets that are less size than that of interface MTU. Reported by: Bjoern Koenig ( bkoenig <> alpha-tierchen dot de ) Tested by: Bjoern Koenig ( bkoenig <> alpha-tierchen dot de ) MFC after: 3 days
This commit is contained in:
parent
de231a063a
commit
0685c824ca
@ -1485,7 +1485,8 @@ fxp_encap(struct fxp_softc *sc, struct mbuf **m_head)
|
||||
* checksum in the first frame driver should compute it.
|
||||
*/
|
||||
ip->ip_sum = 0;
|
||||
ip->ip_len = htons(ifp->if_mtu);
|
||||
ip->ip_len = htons(m->m_pkthdr.tso_segsz + (ip->ip_hl << 2) +
|
||||
(tcp->th_off << 2));
|
||||
tcp->th_sum = in_pseudo(ip->ip_src.s_addr, ip->ip_dst.s_addr,
|
||||
htons(IPPROTO_TCP + (tcp->th_off << 2) +
|
||||
m->m_pkthdr.tso_segsz));
|
||||
|
Loading…
x
Reference in New Issue
Block a user