Date: Tue, 27 Aug 2013 15:44:12 +0200 From: Andre Oppermann <andre@freebsd.org> To: Adrian Chadd <adrian@freebsd.org> Cc: freebsd-arm <freebsd-arm@freebsd.org> Subject: Re: ARM network trouble after recent mbuf changes Message-ID: <521CAD2C.3080202@freebsd.org> In-Reply-To: <CAJ-Vmok9igK-DbR1reM8isz6Q-LDOfZVxB_1M59npjE5g%2BRAsA@mail.gmail.com> References: <1377550636.1111.156.camel@revolution.hippie.lan> <521BC472.7040804@freebsd.org> <521BD531.4090104@sbcglobal.net> <521C4CD9.4050308@freebsd.org> <40769440-B167-4817-9855-1CAB09081AF8@bsdimp.com> <CAJ-Vmok9igK-DbR1reM8isz6Q-LDOfZVxB_1M59npjE5g%2BRAsA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 27.08.2013 15:42, Adrian Chadd wrote: > +1 Please see my later email with a patch that does all this. :) -- Andre > -adrian > > > On 27 August 2013 06:24, Warner Losh <imp@bsdimp.com <mailto:imp@bsdimp.com>> wrote: > > > On Aug 27, 2013, at 12:53 AM, Andre Oppermann wrote: > > > On 27.08.2013 00:22, Thomas Skibo wrote: > >> On 8/26/13 2:11 PM, Andre Oppermann wrote: > >>> > >>> Can you try this patch see check if it makes a difference on the bitfield? > >> > >> Actually, this works for me. But, I'm worried that somewhere else something is going to > trip over a > >> struct pkthdr not being 64-bit aligned. There are several 64-bit fields in there. > > > > The problem is the disconnect between the definition of MLEN and MHLEN and > > the effective size/padding of struct mbuf. That's the true bug. > > > > On LP64 all is fine. On i386 it turns out to be fine too because doesn't > > care. > > > > MLEN and MHLEN are incorrectly derived. In fact they should be derived from > > stuct mbuf where this padding would be taking into account. However the way > > it is structured right now it that would create a circular dependency. > > > > Please try the patch below to confirm. If it fixes your problem for now > > I'm going to commit as an immediate fix while searching for a better long > > term stable solution. > > > > -- > > Andre > > > > Index: sys/mbuf.h > > =================================================================== > > --- sys/mbuf.h (revision 254953) > > +++ sys/mbuf.h (working copy) > > @@ -94,6 +94,9 @@ > > int32_t mh_len; /* amount of data in this mbuf */ > > uint32_t mh_type:8, /* type of data in this mbuf */ > > mh_flags:24; /* flags; see below */ > > +#if defined(__ILP32__) > > + uint32_t mh_pad; /* pad to 64 bit alignment */ > > +#endif > > }; > > > > /* > > There should be a CTASSERT() here to make sure there's no mismatch... > > Warner > _______________________________________________ > freebsd-arm@freebsd.org <mailto:freebsd-arm@freebsd.org> mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org > <mailto:freebsd-arm-unsubscribe@freebsd.org>" > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?521CAD2C.3080202>