linux_dsm_epyc7002/drivers/net/wireless/ath/ath10k
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
..
bmi.c ath10k: separate result parameter in ath10k_bmi_execute() 2014-03-21 17:40:53 +02:00
bmi.h ath10k: fix ath10k_bmi_read32 macro 2014-05-23 11:29:23 +03:00
ce.c ath10k: sanitize tx ring index access properly 2014-07-15 11:19:45 +03:00
ce.h ath10k: abort incomplete scatter-gather pci tx properly 2014-05-27 12:32:10 +03:00
core.c Merge tag 'for-linville-20140717' of git://github.com/kvalo/ath 2014-07-18 13:44:50 -04:00
core.h ath10k: add implementation for configure max amsdu, ampdu 2014-07-14 15:44:48 +03:00
debug.c ath10k: add implementation for configure max amsdu, ampdu 2014-07-14 15:44:48 +03:00
debug.h ath10k: fix alignment in ath10k_dbg() 2014-02-14 13:19:55 +02:00
hif.h ath10k: replace send_head() with tx_sg() 2014-02-28 11:59:06 +02:00
htc.c ath10k: workaround boot issues with KVM/PCI-passthrough 2014-07-21 20:44:39 +03:00
htc.h ath10k: simplify HTC command submitting 2013-09-16 19:47:46 +03:00
htt_rx.c ath10k: handle attention flags correctly when using A-MSDU 2014-07-25 11:51:07 +03:00
htt_tx.c ath10k: prevent some tx flushing failures 2014-07-21 21:02:04 +03:00
htt.c ath10k: fix core start sequence 2014-05-23 11:00:08 +03:00
htt.h ath10k: add implementation for configure max amsdu, ampdu 2014-07-14 15:44:48 +03:00
hw.h ath10k: advertise only firmware API 2 files 2014-03-28 14:22:21 +02:00
Kconfig ath10k: add DFS_CERTIFIED option 2014-01-10 11:39:57 +02:00
mac.c ath10k: don't advertise IBSS iftype for 10.x 2014-07-25 11:15:50 +03:00
mac.h ath10k: simplify tx helpers 2014-07-22 18:53:52 +03:00
Makefile
pci.c ath10k: prevent endless pci rx loop 2014-07-22 21:31:08 +03:00
pci.h ath10k: fix bmi exchange tx/rx race 2014-07-15 11:18:58 +03:00
rx_desc.h ath10k: document decap modes 2013-09-26 10:12:23 +03:00
targaddrs.h
trace.c
trace.h ath10k: add trace event for WMI_DEBUG_MESG_EVENTID 2014-01-10 11:49:33 +02:00
txrx.c ath10k: fix Rx aggregation reordering 2014-07-25 11:15:39 +03:00
txrx.h ath10k: fix Rx aggregation reordering 2014-07-25 11:15:39 +03:00
wmi.c ath10k: simplify tx helpers 2014-07-22 18:53:52 +03:00
wmi.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00