opnsense-src/sys
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
..
amd64 Print the %rip value for uprintf_signal. 2012-10-14 17:08:46 +00:00
arm Loop reading the RTC registers until the same values are obtained 2012-10-07 20:36:46 +00:00
boot Since the introduction of the new advanced boot menu (r222417), options like 2012-10-14 06:52:49 +00:00
bsm
cam Add explicit check for not set time inside cam_periph_freeze_after_event(). 2012-10-14 08:50:05 +00:00
cddl Revert previous commit... 2012-10-10 08:36:38 +00:00
compat Revert previous commit... 2012-10-10 08:36:38 +00:00
conf Import a FreeBSD port of the FUSE Linux module. 2012-10-13 23:54:26 +00:00
contrib Fix defines in r241245. We actually don't define FreeBSD. 2012-10-14 15:03:06 +00:00
crypto Revert previous commit... 2012-10-10 08:36:38 +00:00
ddb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
dev Break the RX processing up into smaller chunks of 128 frames each. 2012-10-14 20:31:38 +00:00
fs Grammar fixes. 2012-10-14 18:13:33 +00:00
gdb Update the ddb and gdb backends for the new 'trace_thread' hook. 2012-04-12 21:34:58 +00:00
geom NULL-ify last previously used pointer instead of last possible pointer. 2012-10-10 20:41:37 +00:00
gnu/fs Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
i386 MFamd64: add machdep.uprintf_signal. 2012-10-14 17:09:50 +00:00
ia64 Eliminate a stale comment. It describes another use case for the pmap in 2012-09-28 05:30:59 +00:00
isa - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
kern Add a KPI to allow to reserve some amount of space in the numvnodes 2012-10-14 19:43:37 +00:00
kgssapi Add missing break statement to make sure all 3DES etypes really are treated 2011-10-10 09:13:07 +00:00
libkern s/ is is / is /g 2012-09-14 22:00:03 +00:00
mips Correct an error in pmap_pv_reclaim(). It can legitimately encounter 2012-10-14 03:40:08 +00:00
modules Import a FreeBSD port of the FUSE Linux module. 2012-10-13 23:54:26 +00:00
net Revert previous commit... 2012-10-10 08:36:38 +00:00
net80211 Revert previous commit... 2012-10-10 08:36:38 +00:00
netatalk Fix typos 2012-02-28 15:07:05 +00:00
netgraph Add NG_NETFLOW_V9INFO_TYPE command to be able to request netflowv9-specific 2012-10-11 16:15:18 +00:00
netinet Fix a miss from r241344: in ip_mloopback() we need to go to 2012-10-14 15:08:07 +00:00
netinet6 Cleanup documentation: cloning route support has been removed in r186119. 2012-10-13 09:31:01 +00:00
netipsec Add missing break 2012-09-18 08:00:43 +00:00
netipx Convert all users of IF_ADDR_LOCK to use new locking macros that specify 2012-01-05 19:00:36 +00:00
netnatm
netncp Add characters mapping for codepages used in Germany. 2012-06-01 03:59:08 +00:00
netpfil Revert previous commit... 2012-10-10 08:36:38 +00:00
netsmb Change a duplicated check to clarify that we really want to set a 2012-07-10 21:02:59 +00:00
nfs Revert previous commit... 2012-10-10 08:36:38 +00:00
nfsclient Do not leave invalid pages in the object after the short read for a 2012-08-14 11:45:47 +00:00
nfsserver Revert previous commit... 2012-10-10 08:36:38 +00:00
nlm Fix grammar. 2012-08-16 13:01:56 +00:00
ofed The drbr(9) API appeared to be so unclear, that most drivers in 2012-09-28 18:28:27 +00:00
opencrypto Revert previous commit... 2012-10-10 08:36:38 +00:00
pc98 Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
pci intpm: add ATI IXP400 pci id 2012-04-16 10:33:46 +00:00
powerpc Eliminate a stale comment. It describes another use case for the pmap in 2012-09-28 05:30:59 +00:00
rpc rpc: convert all uid and gid variables to u_int. 2012-10-04 04:15:18 +00:00
security Check vplabel for NULL before dereferencing it. Fixes a panic 2012-05-03 15:51:34 +00:00
sparc64 Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
sys Add a KPI to allow to reserve some amount of space in the numvnodes 2012-10-14 19:43:37 +00:00
teken Link the demo application against ncursesw to make Unicode work. 2011-10-13 14:20:27 +00:00
tools Revert previous commit... 2012-10-10 08:36:38 +00:00
ufs Fix up kernel sources to be ready for a 64-bit ino_t. 2012-09-27 23:30:49 +00:00
vm Move vm_page_requeue() to the only file that uses it. 2012-10-13 20:19:43 +00:00
x86 Add an unified macro to deny ability from the compiler to reorder 2012-10-09 14:32:30 +00:00
xdr
xen blkif interface comment cleanups. No functional changes 2012-02-29 17:47:01 +00:00
Makefile Add sys/ofed to the 'make cscope' target. 2012-03-20 18:05:15 +00:00