Date: Wed, 3 Jun 2009 18:12:17 -0700 From: Kip Macy <kmacy@freebsd.org> To: Robert Watson <rwatson@freebsd.org> Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r193363 - user/kmacy/releng_7_2_fcs/sys/dev/cxgb Message-ID: <3c1674c90906031812r3d5940ffybc1144257359b18d@mail.gmail.com> In-Reply-To: <alpine.BSF.2.00.0906030829150.52806@fledge.watson.org> References: <200906030206.n5326nlY035216@svn.freebsd.org> <alpine.BSF.2.00.0906030829150.52806@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 3, 2009 at 12:30 AM, Robert Watson <rwatson@freebsd.org> wrote: > On Wed, 3 Jun 2009, Kip Macy wrote: > >> =A0clear next pointers and set M_PKTHDR when needed > > Without looking at the context in detail, in general, you need to allocat= e > mbufs intended to be headers as that from inception, or use M_MOVE_PKTHDR= (). > MAC, for example, allocates an mbuf tag with each PKTHDR mbuf so that > there's always storage for the MAC label on a packet, and if you hand ass= ign > the M_PKTHDR flag to mbufs, that alloation will be missed. =A0This is onl= y a > problem if you later inject that header into the stack, but that's usuall= y > the point of adding headers so I'm guessing that can happen here? :-) The problem is that by doing that I end up taking cache misses on the mbuf twice. How does MAC support deferred initialization? I can just defer the actual mbuf allocation if need be. -Kip -Kip > > Robert N M Watson > Computer Laboratory > University of Cambridge > >> >> Modified: >> =A0user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c >> >> Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c =A0 Wed Jun =A03 >> 01:59:42 2009 =A0 =A0 =A0 =A0(r193362) >> +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c =A0 Wed Jun =A03 >> 02:06:49 2009 =A0 =A0 =A0 =A0(r193363) >> @@ -2678,6 +2678,8 @@ get_packet(adapter_t *adap, unsigned int >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flags =3D M_PKTHDR; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (fl->zone !=3D zone_pack) >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0m_cljset(m0, cl, fl->type= ); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 m0->m_flags |=3D flags; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 m0->m_next =3D m0->m_nextpkt =3D NULL; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0m0->m_pkthdr.len =3D m0->m_len =3D len; >> =A0 =A0 =A0 =A0} >> =A0 =A0 =A0 =A0switch(sopeop) { >> > --=20 When bad men combine, the good must associate; else they will fall one by one, an unpitied sacrifice in a contemptible struggle. Edmund Burke
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3c1674c90906031812r3d5940ffybc1144257359b18d>