Date: Fri, 20 Mar 2015 18:57:00 +0100 From: Hans Petter Selasky <hps@selasky.org> To: Karim Fodil-Lemelin <fodillemlinkarim@gmail.com>, freebsd-net <freebsd-net@freebsd.org> Subject: Re: Another fragment question / patch Message-ID: <550C5F6C.3080302@selasky.org> In-Reply-To: <550C3A62.3080403@gmail.com> References: <550C3A62.3080403@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03/20/15 16:18, Karim Fodil-Lemelin wrote: > Hi, > > While reading through a previous comment on this list about fragments > I've noticed that mbuf tags aren't being copied from the leading > fragment (header) to the subsequent fragment packets. In other words, > one would expect that all fragments of a packet are carrying the same > tags that were set on the original packet. I have built a simple test > were I use ipfw with ALTQ and sent large packet (bigger then MTU) off > that BSD machine. I have observed that the leading fragment (m0) packet > is going through the right class although the next fragments are hitting > the default class for unclassified packets. > > Here is a patch that makes things works as expected (all fragments carry > the ALTQ tag): > > diff --git a/freebsd/sys/netinet/ip_output.c > b/freebsd/sys/netinet/ip_output.c > index d650949..7d8f041 100644 > --- a/freebsd/sys/netinet/ip_output.c > +++ b/freebsd/sys/netinet/ip_output.c > @@ -1184,7 +1184,10 @@ smart_frag_failure: > ipstat.ips_odropped++; > goto done; > } > - m->m_flags |= (m0->m_flags & M_MCAST) | M_FRAG; > + > + m->m_flags |= (m0->m_flags & M_COPYFLAGS) | M_FRAG; > + m_tag_copy_chain(m, m0, M_NOWAIT); > + > /* > * In the first mbuf, leave room for the link header, then > * copy the original IP header including options. The > payload > diff --git a/freebsd/sys/sys/mbuf.h b/freebsd/sys/sys/mbuf.h > index 2efff38..6ad8439 100644 > --- a/freebsd/sys/sys/mbuf.h > Hi, I see your point about copying the tags. I'm not sure however that M_COPYFLAGS is correct, because it also copies M_RDONLY, which is not relevant for this case. Can you explain what flags need copying in addition to M_MCAST ? Maybe we need to define these flags separately. Thank you! --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?550C5F6C.3080302>