mirror_ubuntu-kernels/drivers
Janusz Dziedzic 0ccb7a3485 ath10k: handle attention flags correctly when using A-MSDU
In case of A-MSDU RX we should check attention flags
correctly to be sure we report correct FCS status for
A-MSDU subframes. Without a patch we could report A-MSDU
subframes with wrong FCS as a correct to the stack, next
get a lot of DUP ACK TCP packets. Finally TP drop is seen
and this drop depends on FCS errors ratio for A-MSDU frame.

Example test case when TP drop is seen:
- ath10k configured as an AP
- used ath10k station
- forced A-MSDU (7 frames) on STA
- other traffic on channel (often FCS errors)
- monitor iface added on AP
- TCP STA -> AP traffic (iperf)

a) Iperf logs for case without the patch:

echo "1 64" > htt_max_amsdu_ampdu // disable A-MSDU
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec  56.6 MBytes  95.0 Mbits/sec
[  3]  5.0-10.0 sec  60.4 MBytes   101 Mbits/sec
[  3] 10.0-15.0 sec  60.2 MBytes   101 Mbits/sec
[  3] 15.0-20.0 sec  60.2 MBytes   101 Mbits/sec
[  3] 20.0-25.0 sec  63.8 MBytes   107 Mbits/sec
[  3] 25.0-30.0 sec  64.9 MBytes   109 Mbits/sec

echo "7 64" > htt_max_amsdu_ampdu  // set 7 A-MSDU subframes
[  3] 30.0-35.0 sec  40.0 MBytes  67.1 Mbits/sec
[  3] 35.0-40.0 sec  35.9 MBytes  60.2 Mbits/sec
[  3] 40.0-45.0 sec  36.9 MBytes  61.9 Mbits/sec
[  3] 45.0-50.0 sec  37.9 MBytes  63.5 Mbits/sec
[  3] 50.0-55.0 sec  34.5 MBytes  57.9 Mbits/sec
[  3] 55.0-60.0 sec  25.4 MBytes  42.6 Mbits/sec
[  3] 60.0-65.0 sec  48.2 MBytes  81.0 Mbits/sec
[  3] 65.0-70.0 sec  28.8 MBytes  48.2 Mbits/sec
[  3] 70.0-75.0 sec  29.2 MBytes  49.1 Mbits/sec
[  3] 75.0-80.0 sec  22.9 MBytes  38.4 Mbits/sec
[  3] 80.0-85.0 sec  26.4 MBytes  44.2 Mbits/sec
[  3] 85.0-90.0 sec  31.5 MBytes  52.8 Mbits/sec

b) Iperf logs for case with patch:

echo "1 64" > htt_max_amsdu_ampdu // disable A-MSDU
[  3] local 192.168.12.2 port 57512 connected with 192.168.12.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec  60.8 MBytes   102 Mbits/sec
[  3]  5.0-10.0 sec  62.2 MBytes   104 Mbits/sec
[  3] 10.0-15.0 sec  60.9 MBytes   102 Mbits/sec

echo "7 64" > htt_max_amsdu_ampdu  // set 7 A-MSDU subframes
[  3] 15.0-20.0 sec  68.1 MBytes   114 Mbits/sec
[  3] 20.0-25.0 sec  80.5 MBytes   135 Mbits/sec
[  3] 25.0-30.0 sec  83.0 MBytes   139 Mbits/sec
[  3] 30.0-35.0 sec  79.1 MBytes   133 Mbits/sec
[  3] 35.0-40.0 sec  77.1 MBytes   129 Mbits/sec
[  3] 40.0-45.0 sec  77.4 MBytes   130 Mbits/sec

Reported-by: Denton Gentry <denton.gentry@gmail.com>
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2014-07-25 11:51:07 +03:00
..
accessibility
acpi Merge branch 'pm-sleep' 2014-06-12 13:43:08 +02:00
amba
ata Merge branch 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2014-06-09 14:58:36 -07:00
atm atm: fore200e.c: Cleaning up uninitialized variables 2014-06-02 17:11:03 -07:00
auxdisplay
base More ACPI and power management updates for 3.16-rc1 2014-06-12 13:14:19 -07:00
bcma bcma: add support for BCM43217 found in Tenda W322E (14e4:43a9) 2014-07-18 13:45:24 -04:00
block Merge git://git.infradead.org/users/willy/linux-nvme 2014-06-15 15:58:03 -10:00
bluetooth Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE motherboard 2014-07-21 15:07:08 +03:00
bus ARM: SoC driver changes 2014-06-02 16:35:49 -07:00
cdrom Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-06-11 08:41:17 -07:00
char Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-06-12 10:30:18 -07:00
clk This pull request contains the second half the of the clk changes for 2014-06-15 16:02:20 -10:00
clocksource Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-04 15:57:20 -07:00
connector Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00
cpufreq Merge branch 'pm-cpufreq' 2014-06-12 13:43:02 +02:00
cpuidle Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-12 20:11:38 -07:00
crypto crypto/nx: disable NX on little endian builds 2014-06-11 17:03:19 +10:00
dca
devfreq PM / devfreq: remove checks for CONFIG_EXYNOS_ASV 2014-05-24 22:33:51 +09:00
dio
dma Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-06-10 10:28:45 -07:00
edac PCI changes for the v3.16 merge window: 2014-06-02 12:15:19 -07:00
eisa
extcon
firewire sound updates for 3.16-rc1 2014-06-04 09:08:25 -07:00
firmware Merge branch 'arm64-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-05 13:15:32 -07:00
fmc
gpio gpio: of: Fix handling for deferred probe for -gpio suffix 2014-06-12 09:57:00 +02:00
gpu Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-06-12 11:32:30 -07:00
hid Most of this is cleaning up various driver sysfs permissions so we can 2014-06-11 16:09:14 -07:00
hsi hsi: omap_ssi_port: use normal module refcounting 2014-06-05 00:59:05 +02:00
hv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
hwmon hwmon: vexpress: Use devm helper for hwmon device registration 2014-06-12 08:36:50 -07:00
hwspinlock
i2c Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into next 2014-06-06 12:26:57 -07:00
ide
idle
iio Staging driver patches for 3.16-rc1 2014-06-03 08:34:00 -07:00
infiniband Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-06-12 22:38:32 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-06-09 18:46:02 -07:00
iommu IOMMU Updates for Linux v3.16 2014-06-06 11:48:46 -07:00
ipack
irqchip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-04 15:59:13 -07:00
isdn isdn/capi: fix (middleware) device nodes 2014-06-04 23:13:41 -07:00
leds Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2014-06-12 13:08:09 -07:00
lguest
macintosh
mailbox
mcb mcb: Add support for shared PCI IRQs 2014-05-27 17:38:11 -07:00
md . Add dm_accept_partial_bio interface to DM core to allow DM targets 2014-06-12 13:33:29 -07:00
media Merge branch 'topic/omap3isp' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2014-06-12 23:04:28 -07:00
memory
memstick
message mptfusion: fix msgContext in mptctl_hp_hostinfo 2014-05-28 18:14:16 +02:00
mfd This pull-request contains some misplaced patches from Tony 2014-06-12 12:42:32 -07:00
misc Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-03 15:48:23 -07:00
mmc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
mtd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-06-12 10:30:18 -07:00
net ath10k: handle attention flags correctly when using A-MSDU 2014-07-25 11:51:07 +03:00
nfc NFC: trf7970a: Add support for Felica Type 3 tags 2014-05-26 01:28:28 +02:00
ntb
nubus kernel/printk: use symbolic defines for console loglevels 2014-06-04 16:54:17 -07:00
of Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
oprofile
parisc
parport parport: convert use of typedef ctl_table to struct ctl_table 2014-06-06 16:08:15 -07:00
pci PCI changes for the v3.16 merge window (part 2): 2014-06-12 13:20:24 -07:00
pcmcia pcmcia: Use pci_is_bridge() to simplify code 2014-05-27 14:58:24 -06:00
phy
pinctrl This is the bulk of pin control changes for the v3.16 2014-06-03 11:20:32 -07:00
platform Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2014-06-10 16:58:32 -07:00
pnp Merge branches 'pnp', 'powercap', 'pm-runtime' and 'pm-opp' 2014-06-03 23:13:00 +02:00
power ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
powercap
pps
ps3
ptp
pwm pwm: Changes for v3.16-rc1 2014-06-11 14:06:55 -07:00
rapidio rapidio/tsi721: use pci_enable_msix_exact() instead of pci_enable_msix() 2014-06-06 16:08:13 -07:00
regulator Most of this is cleaning up various driver sysfs permissions so we can 2014-06-11 16:09:14 -07:00
remoteproc
reset ARM: SoC driver changes 2014-06-02 16:35:49 -07:00
rpmsg
rtc rtc: s5m: consolidate two device type switch statements 2014-06-10 15:34:47 -07:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
sbus
scsi SCSI for-linus on 20140613 2014-06-14 19:49:48 -05:00
sfi
sh SH Driver Update for v3.16 2014-06-06 11:44:09 -07:00
sn
soc soc: qcom: fix of_device_id table 2014-05-26 21:27:09 +02:00
spi Merge remote-tracking branch 'spi/topic/workqueue' into spi-next 2014-06-02 17:08:43 +01:00
spmi
ssb ssb: extract power info from SPROM revs 4 and 5 2014-07-18 13:45:24 -04:00
staging Merge branch 'topic/omap3isp' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2014-06-12 23:04:28 -07:00
target Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-06-12 22:38:32 -07:00
tc
thermal Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2014-06-11 14:26:21 -07:00
tty Merge commit '3cf2f34' into sched/core, to fix build error 2014-06-12 13:46:37 +02:00
uio uio: fix vma io range check in mmap 2014-05-27 14:11:06 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
uwb uwb: fix variable set but not used warnings 2014-05-27 15:18:48 -07:00
vfio A handful of VFIO bug fixes for v3.16 2014-06-07 20:12:15 -07:00
vhost Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2014-06-12 22:38:32 -07:00
video This pull-request merely contains some very basic build/run-time bug fixes. 2014-06-12 12:45:50 -07:00
virt
virtio
vlynq
vme
w1 Merge commit '3cf2f34' into sched/core, to fix build error 2014-06-12 13:46:37 +02:00
watchdog watchdog: add Intel MID watchdog driver support 2014-06-10 21:48:16 +02:00
xen Merge commit '3cf2f34' into sched/core, to fix build error 2014-06-12 13:46:37 +02:00
zorro
Kconfig soc: Introduce drivers/soc place-holder for SOC specific drivers 2014-05-23 11:37:46 -05:00
Makefile Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00