Skip site navigation (1)Skip section navigation (2)
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>