[LEDE-DEV] [PATCH] ar71xx: Add GRO support to ag71xx
Florian Fainelli
f.fainelli at gmail.com
Sun Sep 3 19:10:02 PDT 2017
Le 09/03/17 à 15:46, rosenp at gmail.com a écrit :
> That's...way better than I expected given how minimal my changes are.
>
> For some context, the ag71xx driver is special in that it does not seem
> to do any hardware offloading to the NIC.
>
> As far as I understand this change, GRO takes 1500 MTU packets and
> packs then into 64Kb blocks which the kernel then processes.
>
> I would be curious if anyone can do latency comparisons before this
> change and after. I do know this driver to have lower latency than
> others due to lack of offloads.
>
> I guess all that's left is to add GSO support to the driver. That seems
> like a lot more work than a three line change though. ¯\_(ツ)_/¯
You could look into adding software TSO:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/net/ethernet/marvell/mv643xx_eth.c?id=3ae8f4e0b98b640aadf410c21185ccb6b5b02351
this makes a huge difference with mv643xx_eth. There were a number of
fixes on top of this initial commit but I would be curious to see what
it gives you with ag71xx
>
> On Sun, 2017-09-03 at 23:16 +0200, Christian Lamparter wrote:
>> On Sunday, September 3, 2017 11:35:46 AM CEST Rosen Penev wrote:
>>> On a TL-WN710N, this patch increases iperf performance from ~92.5
>>> to ~93.5 mbps. Keep in mind the WN710N is a 100mbps device. I
>>> expect greater numbers from gigabit devices.
>>>
>>> Signed-off-by: Rosen Penev <rosenp at gmail.com>
>>> ---
>>
>> I've done a quick test of the patch on my WD Range Extender.
>> (It has a Atheros AR9344 rev 2 SoC @ CPU:560.000MHz, DDR:400.000MHz
>> The PHY is a AR8035, which supports 1 GBit/s Links)
>>
>> The range extender (DUT) was running iperf3 server in both tests.
>> Another desktop PC was acting as the iperf3 client.
>>
>> without the patch:
>>
>> Connecting to host range-extender, port 5201
>> [ 4] local 192.168.8.7 port 51518 connected to 192.168.8.204 port
>> 5201
>> [ ID] Interval Transfer Bandwidth Retr Cwnd
>> [ 4] 0.00-1.00 sec 23.5 MBytes 197 Mbits/sec 0 105
>> KBytes
>> [ 4] 1.00-2.00 sec 23.7 MBytes 199 Mbits/sec 0 105
>> KBytes
>> [ 4] 2.00-3.00 sec 23.6 MBytes 198 Mbits/sec 0 105
>> KBytes
>> [ 4] 3.00-4.00 sec 23.0 MBytes 193 Mbits/sec 0 105
>> KBytes
>> [ 4] 4.00-5.00 sec 23.4 MBytes 197 Mbits/sec 0 105
>> KBytes
>> [ 4] 5.00-6.00 sec 23.3 MBytes 195 Mbits/sec 0 105
>> KBytes
>> [ 4] 6.00-7.00 sec 23.4 MBytes 196 Mbits/sec 0 105
>> KBytes
>> [ 4] 7.00-8.00 sec 23.6 MBytes 198 Mbits/sec 0 105
>> KBytes
>> [ 4] 8.00-9.00 sec 23.1 MBytes 194 Mbits/sec 0 105
>> KBytes
>> [ 4] 9.00-10.00 sec 22.1 MBytes 185 Mbits/sec 0 105
>> KBytes
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> [ ID] Interval Transfer Bandwidth Retr
>> [ 4] 0.00-10.00 sec 233 MBytes 195
>> Mbits/sec 0 sender
>> [ 4] 0.00-10.00 sec 232 MBytes 195
>> Mbits/sec receiver
>>
>> iperf Done.
>>
>> with the patch (gro enabled - this is done by default):
>>
>> Connecting to host range-extender, port 5201
>> [ 4] local 192.168.8.7 port 52004 connected to 192.168.8.204 port
>> 5201
>> [ ID] Interval Transfer Bandwidth Retr Cwnd
>> [ 4] 0.00-1.00 sec 32.7 MBytes 274 Mbits/sec 0 106
>> KBytes
>> [ 4] 1.00-2.00 sec 32.6 MBytes 274 Mbits/sec 0 106
>> KBytes
>> [ 4] 2.00-3.00 sec 32.4 MBytes 272 Mbits/sec 0 106
>> KBytes
>> [ 4] 3.00-4.00 sec 32.3 MBytes 271 Mbits/sec 0 106
>> KBytes
>> [ 4] 4.00-5.00 sec 32.5 MBytes 273 Mbits/sec 0 106
>> KBytes
>> [ 4] 5.00-6.00 sec 32.5 MBytes 273 Mbits/sec 0 106
>> KBytes
>> [ 4] 6.00-7.00 sec 32.6 MBytes 273 Mbits/sec 0 106
>> KBytes
>> [ 4] 7.00-8.00 sec 32.4 MBytes 272 Mbits/sec 0 106
>> KBytes
>> [ 4] 8.00-9.00 sec 32.6 MBytes 273 Mbits/sec 0 106
>> KBytes
>> [ 4] 9.00-10.00 sec 31.4 MBytes 264 Mbits/sec 0 106
>> KBytes
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> [ ID] Interval Transfer Bandwidth Retr
>> [ 4] 0.00-10.00 sec 324 MBytes 272
>> Mbits/sec 0 sender
>> [ 4] 0.00-10.00 sec 324 MBytes 272
>> Mbits/sec receiver
>>
>> iperf Done.
>>
>> (range-extender) # ethtool -K eth0 gro off
>>
>> Connecting to host range-extender, port 5201
>> [ 4] local 192.168.8.7 port 52120 connected to 192.168.8.204 port
>> 5201
>> [ ID] Interval Transfer Bandwidth Retr Cwnd
>> [ 4] 0.00-1.00 sec 24.8 MBytes 208 Mbits/sec 0 105
>> KBytes
>> [ 4] 1.00-2.00 sec 23.6 MBytes 198 Mbits/sec 0 105
>> KBytes
>> [ 4] 2.00-3.00 sec 24.5 MBytes 206 Mbits/sec 0 105
>> KBytes
>> [ 4] 3.00-4.00 sec 23.9 MBytes 201 Mbits/sec 0 105
>> KBytes
>> [ 4] 4.00-5.00 sec 24.6 MBytes 207 Mbits/sec 0 105
>> KBytes
>> [ 4] 5.00-6.00 sec 24.7 MBytes 207 Mbits/sec 0 105
>> KBytes
>> [ 4] 6.00-7.00 sec 24.5 MBytes 206 Mbits/sec 0 105
>> KBytes
>> [ 4] 7.00-8.00 sec 24.0 MBytes 201 Mbits/sec 0 105
>> KBytes
>> [ 4] 8.00-9.00 sec 24.3 MBytes 204 Mbits/sec 0 105
>> KBytes
>> [ 4] 9.00-10.00 sec 24.5 MBytes 206 Mbits/sec 0 105
>> KBytes
>> - - - - - - - - - - - - - - - - - - - - - - - - -
>> [ ID] Interval Transfer Bandwidth Retr
>> [ 4] 0.00-10.00 sec 244 MBytes 204
>> Mbits/sec 0 sender
>> [ 4] 0.00-10.00 sec 243 MBytes 204
>> Mbits/sec receiver
>>
>> iperf Done.
>>
>> So, the throughput went from 195 Mbits/sec to 272 Mbits/sec.
>> The gain would be (272 Mbps - 195 Mbps) / 195 Mbps = 0.3949 ~ 40%
>>
>> Regards,
>> Christian
>
> _______________________________________________
> Lede-dev mailing list
> Lede-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
>
--
Florian
More information about the Lede-dev
mailing list