Date: Tue, 27 Aug 2013 06:42:02 -0700 From: Adrian Chadd <adrian@freebsd.org> To: Warner Losh <imp@bsdimp.com> Cc: freebsd-arm <freebsd-arm@freebsd.org>, Andre Oppermann <andre@freebsd.org> Subject: Re: ARM network trouble after recent mbuf changes Message-ID: <CAJ-Vmok9igK-DbR1reM8isz6Q-LDOfZVxB_1M59npjE5g%2BRAsA@mail.gmail.com> In-Reply-To: <40769440-B167-4817-9855-1CAB09081AF8@bsdimp.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>
next in thread | previous in thread | raw e-mail | index | archive | help
+1 -adrian On 27 August 2013 06:24, Warner Losh <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 mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmok9igK-DbR1reM8isz6Q-LDOfZVxB_1M59npjE5g%2BRAsA>