ARM network trouble after recent mbuf changes
Andre Oppermann
andre at freebsd.org
Tue Aug 27 13:44:24 UTC 2013
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 at bsdimp.com <mailto:imp at 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 at freebsd.org <mailto:freebsd-arm at freebsd.org> mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org
> <mailto:freebsd-arm-unsubscribe at freebsd.org>"
>
>
More information about the freebsd-arm
mailing list