[OpenWrt-Devel,RFC,v3] lantiq: net: add fragmented skb support to xrx200 ethernet
diff mbox series

Message ID 3776b6a6-6104-213f-91ad-34b34c651c96@gmail.com
State Superseded
Headers show
Series
  • [OpenWrt-Devel,RFC,v3] lantiq: net: add fragmented skb support to xrx200 ethernet
Related show

Commit Message

Petr Cvek Feb. 13, 2019, 11:27 p.m. UTC
setup:
	iperf3 -s	#on lantiq
	./run.sh testX	#on host

	everything_interrupts.log	#cat /proc/interrupts (you may change the SMP
affinity)
	running on experimental 1000Hz build, not much change in speed


As illustrated in vanilla.log, the default xrx200 ethernet driver seems
to be really slow in lantiq->host traffic (xDSL download). That seems to
be (at least) partially caused by making unnecessary linear skbs in the
network stack. These patches (and the ICU SMP ones) can increase the
lantiq->host UDP speed to an almost twice as big value and effectively
increase the speed of TCP in the both ways too.

The changes from "[RFC] [PATCH v2] lantiq: net: ethernet driver with
fragments" are:

I've had to increase the DMA descriptor count as there is now more than
one descriptors for one packet. With the original 64 there would be
frequent queue stops, which decreased the speed. With 128 now they are
not so much frequent (with 192 even less, almost nonexistant).

The main problem is in the TX housekeeping task, where the budgeted
cycle of descriptor and skb freeing cannot keep up with xmit function.
With a simple computation (I hope it is correct :-D ):

1Gbps / (1500*8 bits) = ~83k, the number of packets which needs to be
freed (it will be more descriptors)

one run cannot free more than budgeted packets (32), so the housekeeping
task would had to be called:

83k / 32 => one every 400 microseconds

That's probably nearly impossible. With 1000Hz system the tx
housekeeping seemed to be called once about every 3 miliseconds.

If the housekeeping gets called after longer time the ring buffer will
get actually stuck (it is transmitted, but not yet cleaned) and the
queue is stopped until next tx housekeeping is called.

I've hacked the housekeeping to ignore budget, so whole possible (=
completed and not owned by DMA) ring buffer is freed.

I've added dma_unmap_single for tx housekeeping and frags mapping fail
path. Interestingly the nonpresence in the original driver was OK for
the kernel.


Additionally I've changed TX DMA interrupts from an end-of-descriptor to
end-of-packet events.

The DMA patch tries to change some DMA settings, namely DMA_POLL. I
don't have a lantiq technical datasheet (it would be appreciated though
:-D), but I assume it is how often does the controller check RAM for
DMA_OWN flag. On 0x10 (instead of 0x4) it seems to slighty increase the
speed (it is probably using less RAM bus bandwidth). BTW it seems CPOLL
register is not dependent on channel settings, so it doesn't have to be
on for loop (as in patch). The burst size is set to 8 words (which match
32B alignment in the ethernet driver).

P.S. the xrx200 network speed on localhost is only up to 500Mbit/s.

Petr
+ : ':::::::[' configuration vanilla ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51814 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.2 MBytes   178 Mbits/sec   27   72.1 KBytes       
[  4]   1.00-2.00   sec  20.6 MBytes   173 Mbits/sec   29   70.7 KBytes       
[  4]   2.00-3.00   sec  20.8 MBytes   174 Mbits/sec   35   60.8 KBytes       
[  4]   3.00-4.00   sec  20.8 MBytes   174 Mbits/sec   29   73.5 KBytes       
[  4]   4.00-5.00   sec  20.8 MBytes   174 Mbits/sec   32   70.7 KBytes       
[  4]   5.00-6.00   sec  20.7 MBytes   174 Mbits/sec   35   69.3 KBytes       
[  4]   6.00-7.00   sec  20.8 MBytes   174 Mbits/sec   36   60.8 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   175 Mbits/sec   29   59.4 KBytes       
[  4]   8.00-9.00   sec  20.8 MBytes   175 Mbits/sec   41   46.7 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   175 Mbits/sec   28   50.9 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec  321             sender
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51862 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.63 MBytes  80.7 Mbits/sec                  
[  4]   1.00-2.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   2.00-3.00   sec  9.52 MBytes  79.9 Mbits/sec                  
[  4]   3.00-4.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   4.00-5.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   5.00-6.00   sec  9.66 MBytes  81.0 Mbits/sec                  
[  4]   6.00-7.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   7.00-8.00   sec  9.70 MBytes  81.4 Mbits/sec                  
[  4]   8.00-9.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   9.00-10.00  sec  9.79 MBytes  82.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51957 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2292  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  136434.385 ms  1349/1417 (95%)  
[  4] Sent 1417 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 46317 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.7 MBytes   124 Mbits/sec  0.077 ms  0/1885 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.072 ms  0/1942 (0%)  
[  4]   2.00-3.00   sec  15.0 MBytes   126 Mbits/sec  0.074 ms  0/1924 (0%)  
[  4]   3.00-4.00   sec  14.3 MBytes   120 Mbits/sec  0.080 ms  0/1825 (0%)  
[  4]   4.00-5.00   sec  14.4 MBytes   120 Mbits/sec  0.079 ms  0/1837 (0%)  
[  4]   5.00-6.00   sec  14.8 MBytes   124 Mbits/sec  0.065 ms  0/1888 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1956 (0%)  
[  4]   7.00-8.00   sec  15.2 MBytes   128 Mbits/sec  0.095 ms  0/1948 (0%)  
[  4]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.092 ms  0/1932 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.095 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   149 MBytes   125 Mbits/sec  0.085 ms  0/19082 (0%)  
[  4] Sent 19082 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 48172 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.5 MBytes   491 Mbits/sec  7494  
[  4]   1.00-2.00   sec  60.6 MBytes   508 Mbits/sec  7756  
[  4]   2.00-3.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   3.00-4.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7556  
[  4]   5.00-6.00   sec  60.5 MBytes   508 Mbits/sec  7744  
[  4]   6.00-7.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   7.00-8.00   sec  59.1 MBytes   496 Mbits/sec  7565  
[  4]   8.00-9.00   sec  60.4 MBytes   507 Mbits/sec  7730  
[  4]   9.00-10.00  sec  59.9 MBytes   502 Mbits/sec  7664  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  2051749.337 ms  64268/64294 (1e+02%)  
[  4] Sent 64294 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 35361 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.097 ms  0/1830 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.101 ms  0/1830 (0%)  
[  4]   2.00-3.00   sec  14.3 MBytes   120 Mbits/sec  0.072 ms  0/1827 (0%)  
[  4]   3.00-4.00   sec  14.2 MBytes   119 Mbits/sec  0.081 ms  0/1819 (0%)  
[  4]   4.00-5.00   sec  14.3 MBytes   120 Mbits/sec  0.070 ms  0/1834 (0%)  
[  4]   5.00-6.00   sec  14.3 MBytes   120 Mbits/sec  0.085 ms  0/1833 (0%)  
[  4]   6.00-7.00   sec  14.3 MBytes   120 Mbits/sec  0.082 ms  0/1835 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.109 ms  0/1836 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.080 ms  0/1822 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.090 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   143 MBytes   120 Mbits/sec  0.104 ms  0/18298 (0%)  
[  4] Sent 18298 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53231 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   1.00-2.00   sec   107 MBytes   896 Mbits/sec  13675  
[  4]   2.00-3.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   3.00-4.00   sec   107 MBytes   898 Mbits/sec  13700  
[  4]   4.00-5.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   5.00-6.00   sec   108 MBytes   902 Mbits/sec  13762  
[  4]   6.00-7.00   sec   107 MBytes   899 Mbits/sec  13719  
[  4]   7.00-8.00   sec   108 MBytes   902 Mbits/sec  13760  
[  4]   8.00-9.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   9.00-10.00  sec   107 MBytes   902 Mbits/sec  13756  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec  5762140.265 ms  210/220 (95%)  
[  4] Sent 220 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 34296 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.084 ms  0/1835 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.075 ms  0/1835 (0%)  
[  4]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec  0.062 ms  0/1858 (0%)  
[  4]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.060 ms  0/1935 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1958 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   122 Mbits/sec  0.078 ms  0/1861 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   120 Mbits/sec  0.100 ms  0/1837 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.098 ms  0/1835 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.085 ms  0/1821 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.110 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   145 MBytes   122 Mbits/sec  0.101 ms  0/18606 (0%)  
[  4] Sent 18606 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52130 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52132 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52134 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.47 MBytes  62.6 Mbits/sec   73   17.0 KBytes       
[  6]   0.00-1.00   sec  7.21 MBytes  60.5 Mbits/sec   78   19.8 KBytes       
[  9]   0.00-1.00   sec  7.14 MBytes  59.9 Mbits/sec   76   31.1 KBytes       
[SUM]   0.00-1.00   sec  21.8 MBytes   183 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.95 MBytes  66.7 Mbits/sec   61   12.7 KBytes       
[  6]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec   99   35.4 KBytes       
[  9]   1.00-2.00   sec  7.08 MBytes  59.4 Mbits/sec   78   32.5 KBytes       
[SUM]   1.00-2.00   sec  20.9 MBytes   175 Mbits/sec  238             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   73   31.1 KBytes       
[  6]   2.00-3.00   sec  8.95 MBytes  75.1 Mbits/sec   64   22.6 KBytes       
[  9]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   81   18.4 KBytes       
[SUM]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec  218             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.71 MBytes  56.3 Mbits/sec   80   11.3 KBytes       
[  6]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   76   17.0 KBytes       
[  9]   3.00-4.00   sec  6.28 MBytes  52.7 Mbits/sec   77   42.4 KBytes       
[SUM]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec  233             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.59 MBytes  55.3 Mbits/sec   94   12.7 KBytes       
[  6]   4.00-5.00   sec  7.58 MBytes  63.6 Mbits/sec   63   28.3 KBytes       
[  9]   4.00-5.00   sec  6.84 MBytes  57.3 Mbits/sec   62   11.3 KBytes       
[SUM]   4.00-5.00   sec  21.0 MBytes   176 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.76 MBytes  73.5 Mbits/sec   57   22.6 KBytes       
[  6]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   80   38.2 KBytes       
[  9]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   90   7.07 KBytes       
[SUM]   5.00-6.00   sec  21.3 MBytes   179 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.33 MBytes  61.5 Mbits/sec   72   18.4 KBytes       
[  6]   6.00-7.00   sec  7.02 MBytes  58.9 Mbits/sec   66   35.4 KBytes       
[  9]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec   67   17.0 KBytes       
[SUM]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec  205             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  8.45 MBytes  70.9 Mbits/sec   72   25.5 KBytes       
[  6]   7.00-8.00   sec  6.71 MBytes  56.3 Mbits/sec   82   35.4 KBytes       
[  9]   7.00-8.00   sec  5.90 MBytes  49.5 Mbits/sec   74   17.0 KBytes       
[SUM]   7.00-8.00   sec  21.1 MBytes   177 Mbits/sec  228             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  6.46 MBytes  54.2 Mbits/sec   77   36.8 KBytes       
[  6]   8.00-9.00   sec  6.90 MBytes  57.9 Mbits/sec   78   11.3 KBytes       
[  9]   8.00-9.00   sec  7.89 MBytes  66.2 Mbits/sec   68   11.3 KBytes       
[SUM]   8.00-9.00   sec  21.3 MBytes   178 Mbits/sec  223             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.59 MBytes  55.3 Mbits/sec   79   38.2 KBytes       
[  6]   9.00-10.00  sec  8.76 MBytes  73.5 Mbits/sec   58   24.0 KBytes       
[  9]   9.00-10.00  sec  5.72 MBytes  48.0 Mbits/sec   77   7.07 KBytes       
[SUM]   9.00-10.00  sec  21.1 MBytes   177 Mbits/sec  214             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  72.4 MBytes  60.7 Mbits/sec  738             sender
[  4]   0.00-10.00  sec  72.0 MBytes  60.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  73.5 MBytes  61.7 Mbits/sec  744             sender
[  6]   0.00-10.00  sec  73.2 MBytes  61.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  66.0 MBytes  55.4 Mbits/sec  750             sender
[  9]   0.00-10.00  sec  65.6 MBytes  55.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   212 MBytes   178 Mbits/sec  2232             sender
[SUM]   0.00-10.00  sec   211 MBytes   177 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52178 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52180 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52182 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.03 MBytes  33.8 Mbits/sec                  
[  6]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  9]   0.00-1.00   sec  2.79 MBytes  23.4 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.72 MBytes  81.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.30 MBytes  27.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.80 MBytes  82.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   3.00-4.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.57 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.22 MBytes  18.6 Mbits/sec                  
[  6]   4.00-5.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  9]   4.00-5.00   sec  2.28 MBytes  19.2 Mbits/sec                  
[SUM]   4.00-5.00   sec  6.88 MBytes  57.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.30 MBytes  27.7 Mbits/sec                  
[  6]   5.00-6.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  9]   5.00-6.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.85 MBytes  82.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  2.99 MBytes  25.1 Mbits/sec                  
[  6]   6.00-7.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[SUM]   6.00-7.00   sec  8.87 MBytes  74.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.14 MBytes  26.3 Mbits/sec                  
[  6]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.64 MBytes  80.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.65 MBytes  81.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.21 MBytes  26.9 Mbits/sec                  
[  9]   9.00-10.00  sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.68 MBytes  81.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36791 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51969 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 39473 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  6]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  9]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[SUM]   0.00-1.00   sec   114 MBytes   958 Mbits/sec  14613  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  6]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  9]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[SUM]   4.00-5.00   sec   114 MBytes   956 Mbits/sec  14592  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  9]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14628  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  6]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  9]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[SUM]   9.00-10.00  sec   114 MBytes   955 Mbits/sec  14568  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.391 ms  0/3 (0%)  
[  4] Sent 3 datagrams
[  6]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.281 ms  0/3 (0%)  
[  6] Sent 3 datagrams
[  9]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.181 ms  0/3 (0%)  
[  9] Sent 3 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   958 Mbits/sec  9052841.285 ms  0/9 (0%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 43263 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 49331 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60542 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.156 ms  0/630 (0%)  
[  6]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.170 ms  0/630 (0%)  
[  9]   0.00-1.00   sec  4.91 MBytes  41.2 Mbits/sec  0.237 ms  0/629 (0%)  
[SUM]   0.00-1.00   sec  14.8 MBytes   124 Mbits/sec  0.188 ms  0/1889 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.92 MBytes  41.3 Mbits/sec  0.173 ms  0/630 (0%)  
[  6]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.191 ms  0/629 (0%)  
[  9]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.192 ms  0/629 (0%)  
[SUM]   1.00-2.00   sec  14.8 MBytes   124 Mbits/sec  0.185 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.96 MBytes  41.6 Mbits/sec  0.246 ms  0/635 (0%)  
[  6]   2.00-3.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[  9]   2.00-3.00   sec  4.95 MBytes  41.5 Mbits/sec  0.232 ms  0/634 (0%)  
[SUM]   2.00-3.00   sec  14.9 MBytes   125 Mbits/sec  0.215 ms  0/1905 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.189 ms  0/636 (0%)  
[  6]   3.00-4.00   sec  4.96 MBytes  41.6 Mbits/sec  0.121 ms  0/635 (0%)  
[  9]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.195 ms  0/636 (0%)  
[SUM]   3.00-4.00   sec  14.9 MBytes   125 Mbits/sec  0.168 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.180 ms  0/636 (0%)  
[  6]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.185 ms  0/636 (0%)  
[  9]   4.00-5.00   sec  4.96 MBytes  41.6 Mbits/sec  0.132 ms  0/635 (0%)  
[SUM]   4.00-5.00   sec  14.9 MBytes   125 Mbits/sec  0.166 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.178 ms  0/636 (0%)  
[  6]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.209 ms  0/636 (0%)  
[  9]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[SUM]   5.00-6.00   sec  14.9 MBytes   125 Mbits/sec  0.185 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.141 ms  0/628 (0%)  
[  6]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.211 ms  0/628 (0%)  
[  9]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.152 ms  0/629 (0%)  
[SUM]   6.00-7.00   sec  14.7 MBytes   124 Mbits/sec  0.168 ms  0/1885 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.92 MBytes  41.3 Mbits/sec  0.290 ms  0/630 (0%)  
[  6]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.167 ms  0/629 (0%)  
[  9]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.367 ms  0/629 (0%)  
[SUM]   7.00-8.00   sec  14.8 MBytes   124 Mbits/sec  0.275 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.93 MBytes  41.4 Mbits/sec  0.147 ms  0/631 (0%)  
[  6]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.170 ms  0/628 (0%)  
[  9]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.137 ms  0/628 (0%)  
[SUM]   8.00-9.00   sec  14.7 MBytes   124 Mbits/sec  0.151 ms  0/1887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.97 MBytes  41.7 Mbits/sec  0.215 ms  0/636 (0%)  
[  6]   9.00-10.00  sec  4.98 MBytes  41.7 Mbits/sec  0.150 ms  0/637 (0%)  
[  9]   9.00-10.00  sec  4.96 MBytes  41.6 Mbits/sec  0.272 ms  0/635 (0%)  
[SUM]   9.00-10.00  sec  14.9 MBytes   125 Mbits/sec  0.212 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.227 ms  0/6335 (0%)  
[  4] Sent 6335 datagrams
[  6]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.183 ms  0/6331 (0%)  
[  6] Sent 6331 datagrams
[  9]   0.00-10.00  sec  49.4 MBytes  41.5 Mbits/sec  0.261 ms  0/6327 (0%)  
[  9] Sent 6327 datagrams
[SUM]   0.00-10.00  sec   148 MBytes   124 Mbits/sec  0.224 ms  0/18993 (0%)  

iperf Done.

Patch
diff mbox series

diff -aurN a/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h b/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h
--- a/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h	2019-01-26 09:37:07.000000000 +0100
+++ b/arch/mips/include/asm/mach-lantiq/xway/xway_dma.h	2019-02-13 23:17:07.560073774 +0100
@@ -19,7 +19,7 @@ 
 #define LTQ_DMA_H__
 
 #define LTQ_DESC_SIZE		0x08	/* each descriptor is 64bit */
-#define LTQ_DESC_NUM		0x40	/* 64 descriptors / channel */
+#define LTQ_DESC_NUM		0x80	/* 128 descriptors / channel */
 
 #define LTQ_DMA_OWN		BIT(31) /* owner bit */
 #define LTQ_DMA_C		BIT(30) /* complete bit */