Adrian Chadd 516f67965a Break the RX processing up into smaller chunks of 128 frames each.
Right now processing a full 512 frame queue takes quite a while (measured
on the order of milliseconds.) Because of this, the TX processing ends up
sometimes preempting the taskqueue:

* userland sends a frame
* it goes in through net80211 and out to ath_start()
* ath_start() will end up either direct dispatching or software queuing a
  frame.

If TX had to wait for RX to finish, it would add quite a few ms of
additional latency to the packet transmission.  This in the past has
caused issues with TCP throughput.

Now, as part of my attempt to bring sanity to the TX/RX paths, the first
step is to make the RX processing happen in smaller 'parts'. That way
when TX is pushed into the ath taskqueue, there won't be so much latency
in the way of things.

The bigger scale change (which will come much later) is to actually
process the frames in the ath_intr taskqueue but process _frames_ in
the ath driver taskqueue.  That would reduce the latency between
processing and requeuing new descriptors. But that'll come later.

The actual work:

* Add ATH_RX_MAX at 128 (static for now);
* break out of the processing loop if npkts reaches ATH_RX_MAX;
* if we processed ATH_RX_MAX or more frames during the processing loop,
  immediately reschedule another RX taskqueue run.  This will handle
  the further frames in the taskqueue.

This should have very minimal impact on the general throughput case,
unless the scheduler is being very very strange or the ath taskqueue
ends up spending a lot of time on non-RX operations (such as TX
completion.)
2012-10-14 20:31:38 +00:00
..
2012-10-10 08:36:38 +00:00
2012-10-10 08:36:38 +00:00
2012-10-10 08:36:38 +00:00
2012-10-14 18:13:33 +00:00
2012-10-14 17:09:50 +00:00
2012-09-14 22:00:03 +00:00
2012-10-10 08:36:38 +00:00
2012-10-10 08:36:38 +00:00
2012-09-18 08:00:43 +00:00
2012-10-10 08:36:38 +00:00
2012-10-10 08:36:38 +00:00
2012-10-10 08:36:38 +00:00
2012-08-16 13:01:56 +00:00
2012-10-10 08:36:38 +00:00
2012-04-16 10:33:46 +00:00
2012-10-10 08:36:38 +00:00