Date: Tue, 14 Feb 2012 21:55:41 -0800 From: Adrian Chadd <adrian@freebsd.org> To: Monthadar Al Jaberi <monthadar@gmail.com> Cc: freebsd-wireless@freebsd.org Subject: Re: Fragment number of first fragment != 0 Message-ID: <CAJ-VmonyxfF72xV7Ji8AfcqoHJEqS3mD1HYqewm-o21zKgqUHQ@mail.gmail.com> In-Reply-To: <CA%2BsBSo%2BQaAQcXbddBVpb_=kNQzU-FwaabHq6Pz-LKrtad7r-Ww@mail.gmail.com> References: <CA%2BsBSoKCFzntOBKw-OsT2FxFkhhTsc7PAnsTns-6EHhkmjfbQQ@mail.gmail.com> <CAJ-VmomRZ0KDHxTRnUJ=zcbHvxtHxZeKxJgYvbCS2ZdDbbgaqg@mail.gmail.com> <CAJ-Vmokh3jztyKnf8ZwCMDOQK_gzNDj-41OgOHXsX=9AAX6%2B9w@mail.gmail.com> <CA%2BsBSo%2BQaAQcXbddBVpb_=kNQzU-FwaabHq6Pz-LKrtad7r-Ww@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Oddly, I can't get any fragments to transmit: * ieee80211_fragment() fragments the frame (correctly or not, I'm not paying attention); * the fragments are chained together via m->m_nextpkt; * but the first call to IFQ_DEQUEUE() in ath_start() removes the m->m_nextpkt reference, completely destroying the fragment chain; * .. and then ath_txfrag_setup() finds it has no fragments to operate on, as m0->m_nextpkt is NULL; * .. so the mbuf is dropped on the floor. I'm also not yet convinced that we're not leaking the fragment mbufs. IFQ_DEQUEUE() has been used in ath_start() since sam introduced vap functionality in 2008 or 2009. The _IF_DEQUEUE() macro behaviour (of clearing m->m_nextpkt) So, how exactly again are we supposed to handle net80211 fragments correctly? :-) Confused, Adrian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonyxfF72xV7Ji8AfcqoHJEqS3mD1HYqewm-o21zKgqUHQ>