mbufq-less iwn(4)

Gleb Smirnoff glebius at FreeBSD.org
Wed Sep 2 06:03:29 UTC 2015


  Adrian,

On Tue, Sep 01, 2015 at 12:33:53PM -0700, Adrian Chadd wrote:
A> We have to do mbuf queues in drivers for wifi, because of 11n
A> aggregation. So on one hand we want to have if_transmit() apply
A> backpressure through the stack, but there's also going to be some
A> buffering. :P

No, that's not because of 11n aggregation. That's a remnant of
ifnet ifqueue. Note that I'm speaking about queueing in drivers,
not in net80211 stack. Look at the iwn patch, it doesn't remove
any functionality except of enqueueing and dequeueing.

Look at your own ath(4) - there is no software queue there already :)

A> I'd like to see that for ic_transmit().
A> 
A> Other thing - ic_transmit() also needs to handle fragments, like I do
A> with ath. Ie, handing it a list of packets is actually a list of
A> 802.11 fragments, rather than separate MPDUs.
A> 
A> Another thing - we're modifying the mbufs (adding 802.11 data to it)
A> before we pass them to the driver, and if the driver fails to
A> transmit, we can't just pass it back up the net80211 stack to the tcp
A> or udp layer..

Sure, stack probably would need to strip the data. Anyway, that's
a future task.

-- 
Totus tuus, Glebius.


More information about the freebsd-net mailing list