Fragment number of first fragment != 0

Adrian Chadd adrian at freebsd.org
Wed Feb 15 05:55:43 UTC 2012


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


More information about the freebsd-wireless mailing list