The flowid and hashtype should be copied from the originating packet

when fragmenting IP packets to preserve the order of the packets in a
stream. Else the resulting fragments can be sent out of order when the
hardware supports multiple transmit rings.

Reviewed by:	glebius @
MFC after:	1 week
Sponsored by:	Mellanox Technologies
This commit is contained in:
Hans Petter Selasky 2015-02-02 17:32:50 +00:00
parent 2bb086bf48
commit 609752f04f

View File

@ -789,6 +789,10 @@ ip_fragment(struct ip *ip, struct mbuf **m_frag, int mtu,
IPSTAT_INC(ips_odropped);
goto done;
}
/* make sure the flowid is the same for the fragmented mbufs */
M_HASHTYPE_SET(m, M_HASHTYPE_GET(m0));
m->m_pkthdr.flowid = m0->m_pkthdr.flowid;
/* copy multicast flag, if any */
m->m_flags |= (m0->m_flags & M_MCAST);
/*
* In the first mbuf, leave room for the link header, then