[Cerowrt-devel] HT40+ performance issues and AMPDUs

Dave Taht dave.taht at gmail.com
Thu Feb 20 13:07:29 EST 2014


0) Are these settings actually correct?

        list ht_capab   SHORT-GI-40
        list ht_capab   TX-STBC
        list ht_capab   RX-STBC1
        list ht_capab   DSSS_CCK-40
        option htmode   HT40+

for hardware with dual antennas 2x2 as cero has?

1) I had turned HT40+ off by default in 3.10.28-14. You can turn it on
via the gui
or config file, so long as you adhere to the correct channel numbers
for your country.

2) Performance from HT40+ is still worse than I expected (but a good deal better
than it was pre-instruction-trap-fix)

In poking at this I see one oddity in that we are never seeing ampdus queued
in hardware, OR completed on system idle...

I'm willing to believe this is a bug in the reporting system rather
than reality.

root at dave:/sys/kernel/debug/ieee80211/phy1/ath9k# cat xmit
                            BE         BK        VI        VO

MPDUs Queued:                0          0         0         5
MPDUs Completed:         20090          0         0         5
MPDUs XRetried:              0          0         0         0
Aggregates:                  0          0         0         0
AMPDUs Queued HW:            0          0         0         0
AMPDUs Queued SW:        20090          0         0         0
AMPDUs Completed:            0          0         0         0
AMPDUs Retried:              0          0         0         0
AMPDUs XRetried:             0          0         0         0
TXERR Filtered:              0          0         0         0
FIFO Underrun:               0          0         0         0
TXOP Exceeded:               0          0         0         0
TXTIMER Expiry:              0          0         0         0
DESC CFG Error:              0          0         0         0
DATA Underrun:               0          0         0         0
DELIM Underrun:              0          0         0         0
TX-Pkts-All:             20090          0         0         5
TX-Bytes-All:         11089496          0         0       770
HW-put-tx-buf:               1          0         0         1
HW-tx-start:             20090          0         0         5
HW-tx-proc-desc:         20090          0         0         5
TX-Failed:                   0          0         0         0

This is on a box that has been idle, with nothing attached to it.

Elsewhere on other test runs I HAVE seen ampdus, with traffic, but
nothing queued
in the queued hw statistic:

                            BE         BK        VI        VO

MPDUs Queued:                0          0         0       110
MPDUs Completed:          1643          0         3       130
MPDUs XRetried:              0          0         0         0
Aggregates:              38198          0         0         0
AMPDUs Queued HW:            0          0         0         0
AMPDUs Queued SW:       241225          0        61        20
AMPDUs Completed:       239582          0        58         0
AMPDUs Retried:           3229          0         0         0
AMPDUs XRetried:             0          0         0         0
TXERR Filtered:              0          0         0         0
FIFO Underrun:               0          0         0         0
TXOP Exceeded:               0          0         0         0
TXTIMER Expiry:              0          0         0         0
DESC CFG Error:              0          0         0         0
DATA Underrun:               0          0         0         0
DELIM Underrun:              0          0         0         0
TX-Pkts-All:            241225          0        61       130
TX-Bytes-All:        144207885          0      8502      7793
HW-put-tx-buf:               1          0         1         1
HW-tx-start:             61881          0        61       130
HW-tx-proc-desc:         61895          0        61       130
TX-Failed:                   0          0         0         0

I bumped up the default be_qlen to 128 again and under my test conditions
(boxes about 2 feet away from each other, but other radios contending on the
 same channel elsewhere), and get about 60MBit out of it.

I see it occilate between MCS13 and MCS15. At MCS13 ~60Mbit kind of makes sense.

type         rate     throughput  ewma prob   this prob  retry   this succ/attem
HT20/LGI     MCS0            5.9      100.0       100.0      1              0(
HT20/LGI     MCS1           11.9      100.0       100.0      0              0(
HT20/LGI     MCS2           17.7      100.0       100.0      0              0(
HT20/LGI     MCS3           23.4      100.0       100.0      0              0(
HT20/LGI     MCS4           34.7      100.0       100.0      0              0(
HT20/LGI     MCS5           45.4       96.5       100.0      2              0(
HT20/LGI     MCS6           50.5       97.7       100.0      5              0(
HT20/LGI     MCS7           50.8       80.2       100.0      0              0(
HT20/LGI     MCS8           11.9      100.0       100.0      4              0(
HT20/LGI     MCS9           23.4      100.0       100.0      0              0(
HT20/LGI     MCS10          34.7      100.0       100.0      0              0(
HT20/LGI     MCS11          45.4      100.0       100.0      0              0(
HT20/LGI     MCS12          67.1       95.7       100.0      0              0(
HT20/LGI     MCS13          84.9      100.0       100.0      0              0(
HT20/LGI     MCS14          95.8      100.0       100.0      0              0(
HT20/LGI     MCS15          14.1       12.2         0.0      0              0(
HT40/LGI     MCS0           12.3      100.0       100.0      0              0(
HT40/LGI     MCS1           24.5      100.0       100.0      0              0(
HT40/LGI     MCS2           36.0      100.0       100.0      0              0(
HT40/LGI     MCS3           47.3       96.2       100.0      0              0(
HT40/LGI     MCS4           69.2      100.0       100.0      0              0(
HT40/LGI     MCS5           88.3      100.0       100.0      0              0(
HT40/LGI     MCS6          100.0       93.6       100.0      3              0(
HT40/LGI     MCS7          105.7       86.6        66.6      4              0(
HT40/LGI     MCS8           24.5      100.0       100.0      0              0(
HT40/LGI     MCS9           47.3       95.7       100.0      0              0(
HT40/LGI     MCS10          69.2      100.0       100.0      0              0(
HT40/LGI     MCS11          88.3      100.0       100.0      6              0(
HT40/LGI     MCS12         128.7       98.8       100.0      5              1(
HT40/LGI  t  MCS13         141.4       81.8       100.0      5              1(
HT40/LGI     MCS14          77.9       38.8       100.0      5              0(
HT40/LGI     MCS15          64.6       29.6         0.0      5              0(
HT40/SGI     MCS0           13.7      100.0       100.0      0              0(
HT40/SGI     MCS1           27.1      100.0       100.0      0              0(
HT40/SGI     MCS2           39.6      100.0       100.0      0              0(
HT40/SGI     MCS3           52.0      100.0       100.0      5              0(
HT40/SGI     MCS4           75.8      100.0       100.0      6              0(
HT40/SGI     MCS5           96.2      100.0       100.0      3              0(
HT40/SGI     MCS6          108.7       99.5       100.0      4              0(
HT40/SGI   P MCS7          119.3       90.2       100.0      4              0(
HT40/SGI     MCS8           27.1      100.0       100.0      0              0(
HT40/SGI     MCS9           52.0      100.0       100.0      0              0(
HT40/SGI     MCS10          75.8      100.0       100.0      0              0(
HT40/SGI     MCS11          96.2       95.9       100.0      6              0(
HT40/SGI     MCS12         125.1       80.8       100.0      5              0(
HT40/SGI T   MCS13         144.6       77.9        79.6      5            125(15
HT40/SGI     MCS14          28.6       13.4         0.0      5              0(
HT40/SGI     MCS15          58.8       25.3         0.0      5              0(

Total packet count::    ideal 267597      lookaround 4212
Average A-MPDU length: 11.1

I've seen the average AMPDU length peak at about 19 under these conditions.

So, under benchmark conditions my empirically derived value for qlen_be is
too low for maximum throughput. I am considering doubling it to 24 and also
doing some tweaks to debloat to use a larger quantum and target for wifi...

But if the hw AMPDU problem is a real problem, I'll sit on it.

Amusingly the ath10k device I'm using to drive the tests doesn't seem to support
running on other channels besides 36 at the moment...

-- 
Dave Täht

Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html



More information about the Cerowrt-devel mailing list