freebsd-skq/sys
adrian 9f48c0215b Migrate the fast-frames transmit support away from using the txa_private
field and into a separate fast-frames staging pointer in ieee80211_node.

The A-MPDU TX path allows txa_private to be used by drivers.  So it will
clash with any attempt to use fast-frames.  Now, fast-frames is not really
anything special - it's just a custom ethernet frame type that contains
two MSDUs into one MPDU.  So all the NIC has to support doing is transmitting
up to a 4KiB frame with an arbitrary ethertype and bam! Fast-frames.
However, using txa_private means we can /either/ do fast-frames or A-MPDU TX,
so fast frames has been turned off in the Atheros HAL for 11n chipsets.
This is a bit silly - it actually means that 802.11 performance to/from
11abg Atheros chips is actually better than between an 11abg atheros device
and an 11n Atheros device.

So:

* create a new mbuf staging queue for fast frames.  It only queues a single
  frame in the staging queue (and there's a top-level ic staging queue
  used for expiry/tracking) so it's just an mbuf pointer per TID.

* Still use the ampdu TX packet counter to determine whether to do
  aggregation or not.  It'll double count if we start doing both A-MPDU TX
  and fast frames, but that's not all that important right now.

* Initialise the pps tracker so ticks isn't zero.  This ensures that
  fast-frames actually gets used - without it, the ticks math overflows
  and the pps math always sets txa_pps=0.  This is the same bug that
  plagued A-MPDU TX starting logic.

This actually allows fast-frames transmit to occur between the AR9331
(in 11n HT/20 mode) and AR9170 (if_otus) in 11bg mode.

Now, this is a great big no-op on atheros 11n hardware, so don't worry.
It may mean you start seeing more reliable fast-frames transmission on
11abg hardware which may expose some more amusing bugs.

TODO:

* further testing and debugging of all of this before flipping on
  fast-frames in if_ath (for 11n) and if_otus.
2015-09-28 00:59:07 +00:00
..
amd64 Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't 2015-09-26 07:18:05 +00:00
arm Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't 2015-09-26 07:18:05 +00:00
arm64 Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't 2015-09-26 07:18:05 +00:00
boot Set the #address-cells and #size-cells for the I2C controllers in RPi2. 2015-09-27 18:21:22 +00:00
bsm
cam Add to CTL initial support for CDROMs and removable devices. 2015-09-27 13:47:28 +00:00
cddl MFV r288063: make dataset property de-registration operation O(1) 2015-09-25 01:05:44 +00:00
compat Fixes a panic triggered by threaded Linux applications when running 2015-09-02 14:04:13 +00:00
conf Install kernel debug data under /usr/lib/debug 2015-09-24 16:55:22 +00:00
contrib Add an initial driver for the AR9170 series draft-11n hardware from 2015-09-26 07:08:35 +00:00
crypto const'ify an arg that we don't update... 2015-07-29 23:37:15 +00:00
ddb Make kstack_pages a tunable on arm, x86, and powepc. On i386, the 2015-08-10 17:18:21 +00:00
dev Fix what looks like a consistent copy&paste error. 2015-09-27 12:19:36 +00:00
fs Ensure that when a blockable open of fifo returns success, a valid 2015-09-20 21:18:33 +00:00
gdb CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten 2015-05-22 17:05:21 +00:00
geom geom_dev: Use kenv 'dumpdev' in the same way as rc/etc.d/dumpon 2015-09-23 21:08:52 +00:00
gnu Fixing a memory leak on module unloading. 2015-09-11 22:43:35 +00:00
i386 Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't 2015-09-26 07:18:05 +00:00
isa
kern - Collapse vfs_vmio_truncate & vfs_vmio_release into a single function. 2015-09-27 05:16:06 +00:00
kgssapi
libkern Add the __aeabi_memclr8 symbol, clang 3.7 uses this. 2015-09-21 18:35:32 +00:00
mips Exploit r288122 to address a cosmetic issue. Since PV chunk pages don't 2015-09-26 07:18:05 +00:00
modules Enable parallel subdirectory building with sys/modules/netgraph 2015-09-27 07:40:19 +00:00
net Eliminate nd6_nud_hint() and its TCP bindings. 2015-09-27 05:29:34 +00:00
net80211 Migrate the fast-frames transmit support away from using the txa_private 2015-09-28 00:59:07 +00:00
netgraph Add support for PPP-Max-Payload PPPoE tag (RFC4638). 2015-09-11 09:15:27 +00:00
netinet Eliminate nd6_nud_hint() and its TCP bindings. 2015-09-27 05:29:34 +00:00
netinet6 Eliminate nd6_nud_hint() and its TCP bindings. 2015-09-27 05:29:34 +00:00
netipsec Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
netnatm
netpfil Simplify the way of attaching IPv6 link-layer header. 2015-09-16 14:26:28 +00:00
netsmb
nfs Wait up to 10 seconds for late-initializing network interfaces to arrive. 2015-09-26 13:55:55 +00:00
nfsclient Remove some oldnfs remnants. 2015-04-18 16:08:06 +00:00
nfsserver
nlm
ofed Fix build broken by r287861. 2015-09-16 15:40:08 +00:00
opencrypto Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
pc98 Add missing ofw_machdep.h. Make x86 ofw_machdep.h work pc98 too. 2015-08-28 15:41:09 +00:00
powerpc Use tabs for indend. 2015-09-20 01:35:51 +00:00
rpc Increase group limit for kerberized NFSv4 2015-09-26 16:30:16 +00:00
security fd: make 'rights' a manadatory argument to fget* functions 2015-07-05 19:05:16 +00:00
sparc64 Add support for weak symbols to the kernel linkers. It means that 2015-09-20 01:27:59 +00:00
sys Make the __bitcount*() functions unconditionally available, by moving 2015-09-26 07:30:45 +00:00
teken Sync HPA and VPA implementations with CUP. 2015-08-24 07:49:27 +00:00
tools
ufs Do not consume extra reference. This is a bug in r287479. 2015-09-05 12:28:18 +00:00
vm The conversion of kmem_alloc_attr() from operating on a vm map to a vmem 2015-09-26 22:57:10 +00:00
x86 dmar_ctx_dtr() does not exist since r284869. Remove the static function 2015-09-22 16:50:59 +00:00
xdr
xen xen: allow disabling PV disks and nics 2015-08-21 15:53:08 +00:00
Makefile Kill EoL whitespace. 2015-05-29 14:03:07 +00:00