All of lore.kernel.org
 help / color / mirror / Atom feed
* [ath9k-devel] [PATCH/RFC] ath9k PER/ratecontrol
@ 2011-04-28  9:36 Andreas Hofmann
  2011-04-28  9:36 ` [ath9k-devel] [PATCH] ath9k/rc.c: Change poll-interval to 2000 in ath9k-ratetables Andreas Hofmann
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Andreas Hofmann @ 2011-04-28  9:36 UTC (permalink / raw)
  To: ath9k-devel


Hello folks,

I am currently running wireless video transmissions over RTP, using 2
embedded linux devices with kernel 2.6.37 and AR9280 wireless-cards. The
link was not reliable enough and I found out that a small change to the
ratecontrol-algorithm improves the situation. Now I want to notice other
people, who might have the same problem and request for comments on
that change.

I noticed that the connection was rather error-prone, when the slightest
change to the wireless-channel was made (e.g. waving around in the area
around the antennas) picture errors were becoming visible. Also tests
with iperf over UDP confirmed that the PER on the wireless link was
quite high (sometimes over 3%).

When looking at the debugfs-output, my suspicion was that the packet
errors were caused due to frequent switching between different
MCSs. Here is an example iperf result with at -64 dBm signal strength:

# iperf -c 192.168.50.2 -u -b  50m -n 100m
------------------------------------------------------------
Client connecting to 192.168.50.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  124 KByte (default)
------------------------------------------------------------
[  3] local 192.168.50.1 port 47997 connected with 192.168.50.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-22.3 sec   100 MBytes  37.6 Mbits/sec
[  3] Sent 71332 datagrams
[  3] Server Report:
[  3]  0.0-22.3 sec  98.4 MBytes  37.0 Mbits/sec   0.450 ms 1128/71331 (1.6%)
[  3]  0.0-22.3 sec  1 datagrams received out-of-order

Here is also the debugfs rc_stats output:

HT40      0  13.5:          0          0          0          0
HT40      1  27.5:          0          0          0          0
HT40      2  40.5:          0          0          0          0
HT40      3  54.0:          0          0          0          0
HT40      4  81.5:          1          0          0          0
HT40      5 108.0:          0          0          0          0
HT40      6 121.5:          0          0          0          0
HT40      7 135.0:          0          0          0          0
HT40      7 150.0:          0          0          0          0
HT40      8  27.0:          0          0          0          0
HT40      9  54.0:          0          0          0          0
HT40     10  81.0:          0          0          0          0
HT40     11 108.0:        980         16          2          7
HT40     12 162.0:       9040        499         20         13
HT40     13 216.0:      14386       1131        196          4
HT40     14 243.0:      17058       1685        220         10
HT40     15 270.0:      12355       1589        235          2



I noticed in the ath-ratecontrol-implementation, that a rather short
interval for MCS probing is used by default, other MCSs are probed
every 50 ms. Changing that interval in the rate-table to a higher value
(2000 ms) did lower the PER. Video errors were significantly reduced and
iperf-tests confirmed a PER constantly under 1%. However, on links with
lower quality/signal strength, the overall achieved data rate was
lowered as well, since the algorithm does not try to go for higher rates
as agressively. On good links the maximum rate is reached nevertheless.

Here is a corresponding iperf result at -64 dBm signal strength (exactly the same setup as with the previous test, only different poll-interval):

# iperf -c 192.168.50.2 -u -b 50m -n 100m
------------------------------------------------------------
Client connecting to 192.168.50.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  124 KByte (default)
------------------------------------------------------------
[  3] local 192.168.50.1 port 50212 connected with 192.168.50.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-24.5 sec   100 MBytes  34.2 Mbits/sec
[  3] Sent 71332 datagrams
[  3] Server Report:
[  3]  0.0-24.4 sec  99.3 MBytes  34.1 Mbits/sec   0.512 ms  476/71331 (0.67%)
[  3]  0.0-24.4 sec  1 datagrams received out-of-order

Debugfs rc_stats output:

HT40      0  13.5:          0          0          0          0
HT40      1  27.5:          0          0          0          0
HT40      2  40.5:          0          0          0          0
HT40      3  54.0:          0          0          0          0
HT40      4  81.5:          1          0          0          0
HT40      5 108.0:          0          0          0          0
HT40      6 121.5:          0          0          0          0
HT40      7 135.0:          0          0          0          0
HT40      7 150.0:          0          0          0          0
HT40      8  27.0:          0          0          0          0
HT40      9  54.0:          0          0          0          0
HT40     10  81.0:          0          0          0          0
HT40     11 108.0:          0          4          2         12
HT40     12 162.0:          1          4          2         11
HT40     13 216.0:       7274         10          2          5
HT40     14 243.0:      22383        147         14          6
HT40     15 270.0:      37154       1024         88          6


Is this an elegant solution or does the short default-interval have some deeper
purpose which I am missing?

Kind regards,
 Andreas

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-04-29 19:07 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-28  9:36 [ath9k-devel] [PATCH/RFC] ath9k PER/ratecontrol Andreas Hofmann
2011-04-28  9:36 ` [ath9k-devel] [PATCH] ath9k/rc.c: Change poll-interval to 2000 in ath9k-ratetables Andreas Hofmann
2011-04-29  7:00 ` [ath9k-devel] [PATCH/RFC] ath9k PER/ratecontrol Mohammed Shafi
2011-04-29 13:30   ` Andreas Hofmann
2011-04-29 13:36     ` Mohammed Shafi
2011-04-29 13:37       ` Mohammed Shafi
2011-04-29  7:19 ` Adrian Chadd
2011-04-29  7:21   ` Mohammed Shafi
2011-04-29 10:27     ` Adrian Chadd
2011-04-29 12:00       ` Mohammed Shafi
2011-04-29 11:20 ` Felix Fietkau
2011-04-29 13:31   ` Andreas Hofmann
2011-04-29 13:35     ` Adrian Chadd
2011-04-29 19:07     ` Felix Fietkau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.