freebsd-dev/sys
Adrian Chadd bbdf3df1c4 Make sure the final descriptor in an aggregate has rate control information.
This was broken by me when merging the 802.11n aggregate descriptor chain
setup with the default descriptor chain setup, in preparation for supporting
AR9380 NICs.

The corner case here is quite specific - if you queue an aggregate frame
with >1 frames in it, and the last subframe has only one descriptor making
it up, then that descriptor won't have the rate control information
copied into it. Look at what happens inside ar5416FillTxDesc() if
both firstSeg and lastSeg are set to 1.

Then when ar5416ProcTxDesc() goes to fill out ts_rate based on the
transmit index, it looks at the rate control fields in that descriptor
and dutifully sets it to be 0.

It doesn't happen for non-aggregate frames - if they have one descriptor,
the first descriptor already has rate control info.

I removed the call to ath_hal_setuplasttxdesc() when I migrated the
code to use the "new" style aggregate chain routines from the HAL.
But I missed this particular corner case.

This is a bit inefficient with MIPS boards as it involves a few redundant
writes into non-cachable memory.  I'll chase that up when it matters.

Tested:

 * AR9280 STA mode, TCP iperf traffic
 * Rui Paulo <rpaulo@> first reported this and has verified it on
   his AR9160 based AP.

PR:		kern/173636
2012-11-15 03:00:49 +00:00
..
amd64 Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
arm Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
boot boot: use packed attribute for edd_params* structures and their substructures 2012-11-14 11:05:16 +00:00
bsm Add the wait6(2) system call. It takes POSIX waitid()-like process 2012-11-13 12:52:31 +00:00
cam Use information about suported diagnostic pages to avoid reading optional 2012-11-07 23:12:53 +00:00
cddl Add the wait6(2) system call. It takes POSIX waitid()-like process 2012-11-13 12:52:31 +00:00
compat Regen 2012-11-13 12:53:41 +00:00
conf Be more consistent. 2012-11-13 06:07:13 +00:00
contrib Fix build for FreeBSD kernel. 2012-11-13 07:33:45 +00:00
crypto
ddb Small textdump enhancements. 2012-11-01 04:07:08 +00:00
dev Make sure the final descriptor in an aggregate has rate control information. 2012-11-15 03:00:49 +00:00
fs Remove M_USE_RESERVE from the devfs cdp allocator, which is one of two 2012-11-14 19:50:21 +00:00
gdb
geom Provide a device name in the sysctl tree for programs to query the 2012-11-01 17:01:05 +00:00
gnu/fs Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
i386 Fix a minor warning in sys/i386/xen/clock.c. 2012-11-12 20:50:11 +00:00
ia64 Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
isa
kern - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +00:00
kgssapi
libkern Sync strlcpy with userland version. 2012-11-03 04:29:24 +00:00
mips Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
modules Redo r242842, now actually fixing the warnings, as follows: 2012-11-12 22:01:29 +00:00
net Work around a race in bpfread() by validating the hold buffer pointer 2012-11-06 21:07:04 +00:00
net80211 Add some further BAR TX debugging; it was useful when figuring out 2012-10-28 04:18:49 +00:00
netatalk
netgraph Switch the entire IPv4 stack to keep the IP packet header 2012-10-22 21:09:03 +00:00
netinet Initialize hdrlen to 0 to avoid clang warning in NOINET case. 2012-11-10 10:41:00 +00:00
netinet6 if_afdata lock was converted from mutex to rwlock a long ago, so we can 2012-11-14 17:36:06 +00:00
netipsec Do not reduce ip_len by size of IP header in the ip_input() 2012-10-23 08:33:13 +00:00
netipx
netnatm
netncp
netpfil Simplify sending keepalives. 2012-11-09 18:23:38 +00:00
netsmb Fix panic due to page faults while in kernel mode, under conditions of 2012-10-31 03:34:07 +00:00
nfs
nfsclient Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
nfsserver Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
nlm Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
ofed Redo r242842, now actually fixing the warnings, as follows: 2012-11-12 22:01:29 +00:00
opencrypto
pc98 Reduce diffs against i386. 2012-11-10 13:48:41 +00:00
pci Remove duplicate const specifiers in many drivers (I hope I got all of 2012-11-05 19:16:27 +00:00
powerpc Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
rpc Modify the comment to take out the names and URL. 2012-10-25 19:30:58 +00:00
security Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
sparc64 - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +00:00
sys - Implement run-time expansion of the KTR buffer via sysctl. 2012-11-15 00:51:57 +00:00
teken
tools
ufs - Fix a truncation bug with softdep journaling that could leak blocks on 2012-11-14 06:37:43 +00:00
vm Flip the semantic of M_NOWAIT to only require the allocation to not 2012-11-14 20:01:40 +00:00
x86 Provide the reading and display of the Standard Extended Features, 2012-11-01 15:14:37 +00:00
xdr
xen Move the corresponding MTX_SYSINIT() next to their struct mtx declaration 2012-10-26 17:31:35 +00:00
Makefile