mirror_ubuntu-kernels/drivers/net/wireless
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
..
ath ath10k: handle attention flags correctly when using A-MSDU 2014-07-25 11:51:07 +03:00
b43 b43: enable 5 GHz support for N-PHY devices 2014-07-23 13:08:36 -04:00
b43legacy
brcm80211 bcma: extract antenna gains from SPROM correctly 2014-07-18 13:45:24 -04:00
cw1200 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2014-06-25 15:26:36 -04:00
hostap net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
ipw2x00 drivers/net/wireless/ipw2x00/libipw_module.c: remove unnecessary null test before kfree 2014-07-01 14:26:26 -04:00
iwlegacy mac80211: support more than one band in scan request 2014-06-25 09:10:42 +02:00
iwlwifi iwlwifi: mvm: teardown TDLS peers during chan-switch and AP DCM 2014-07-22 22:08:47 +03:00
libertas LIBERTAS_CS: ioport_map/unmap relies on HAS_IOPORT_MAP 2014-06-19 15:49:27 -04:00
libertas_tf
mwifiex mwifiex: card reset: enable rescan of non-removable card 2014-07-22 13:53:17 -04:00
orinoco PCMCIA_HERMES: ioport_map/unmap relies on HAS_IOPORT_MAP 2014-06-19 15:49:27 -04:00
p54 p54: use request_firmware_direct() for optional EEPROM override 2014-06-25 15:40:40 -04:00
prism54
rsi rsi: fix memory leaks and error handling in rsi_91x_usb 2014-07-01 14:26:26 -04:00
rt2x00 wireless: rt2x00: add new rt2800usb devices 2014-07-15 16:00:03 -04:00
rtl818x rtl818x_pci: fix pci probe returns success when it fails 2014-07-01 14:26:27 -04:00
rtlwifi rtlwifi/rtl8723be: Replace magic number by macro 2014-06-25 15:40:35 -04:00
ti wlcore/wl18xx/wl12xx: convert bitmaps to unsigned longs 2014-07-15 16:00:02 -04:00
zd1211rw wireless: zd1211rw: new url for fw, remove experimental 2014-07-15 16:00:17 -04:00
adm8211.c
adm8211.h
airo_cs.c
airo.c
airo.h
at76c50x-usb.c mac80211: support more than one band in scan request 2014-06-25 09:10:42 +02:00
at76c50x-usb.h at76c50x: fix scan does not work with latest mac80211 2014-06-05 14:15:08 -04:00
atmel_cs.c
atmel_pci.c
atmel.c
atmel.h
Kconfig
mac80211_hwsim.c mac80211_hwsim: fix compiler warning on MIPS 2014-07-23 13:08:35 -04:00
mac80211_hwsim.h
Makefile
mwl8k.c
ray_cs.c ray_cs: replace del_timer by del_timer_sync 2014-04-22 15:06:28 -04:00
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: constify MAC addresses in cfg80211 ops 2014-05-19 17:34:42 +02:00
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h