I'm running armbian 10.5 (kernel 5.8.6-rockchip64) on my new NanoPi R2S.
I configured it as a router: lan0 (USB ethernet) is the LAN interface, eth0 (real ethernet) is the wan interface, ip forwarding enabled.
On the LAN subnet I put a iperf3 client, on the WAN subnet I put a iperf3 server.
Launching iperf -c _server_ip_ on the client is ok, I can reach 830Mbps, but launching iperf with -R (reverse) makes the lan0 interface to reset/disconnect.
I can find the following logs in the kernel:
Sep 8 20:53:32 gw kernel: [ 611.981696] ------------[ cut here ]------------
Sep 8 20:53:32 gw kernel: [ 611.981726] NETDEV WATCHDOG: lan0 (r8152): transmit queue 0 timed out
Sep 8 20:53:32 gw kernel: [ 611.981801] WARNING: CPU: 2 PID: 0 at net/sched/sch_generic.c:442 dev_watchdog+0x39c/0x3a8
Sep 8 20:53:32 gw kernel: [ 611.981805] Modules linked in: rfkill r8152 zstd hantro_vpu(C) v4l2_h264 videobuf2_dma_contig v4l2_mem2mem videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc cpufreq_dt zram usb_f_acm u_serial g_serial libcomposite ip_tables x_tables autofs4 realtek dwmac_rk stmmac_platform stmmac mdio_xpcs gpio_syscon
Sep 8 20:53:32 gw kernel: [ 611.981852] CPU: 2 PID: 0 Comm: swapper/2 Tainted: G C 5.8.6-rockchip64 #20.08.2
Sep 8 20:53:32 gw kernel: [ 611.981855] Hardware name: FriendlyElec NanoPi R2S (DT)
Sep 8 20:53:32 gw kernel: [ 611.981860] pstate: 00000005 (nzcv daif -PAN -UAO BTYPE=--)
[...]
ep 8 20:53:32 gw kernel: [ 611.982020] ---[ end trace e54bbedf61757c5e ]---
Sep 8 20:53:32 gw kernel: [ 611.982037] r8152 5-1:1.0 lan0: Tx timeout
Sep 8 20:53:32 gw kernel: [ 612.493756] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:53:33 gw kernel: [ 613.005840] r8152 5-1:1.0 lan0: set_registers -110
Sep 8 20:53:33 gw kernel: [ 613.517849] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:53:34 gw kernel: [ 614.029766] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:53:34 gw kernel: [ 614.029864] r8152 5-1:1.0 lan0: set_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030080] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:53:34 gw kernel: [ 614.030158] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:53:34 gw kernel: [ 614.030242] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:53:34 gw kernel: [ 614.030327] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:53:34 gw kernel: [ 614.030462] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030556] r8152 5-1:1.0 lan0: set_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030646] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030738] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030842] r8152 5-1:1.0 lan0: set_registers -71
Sep 8 20:53:34 gw kernel: [ 614.030933] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.031495] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.032057] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.032617] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.033167] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.033752] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.034620] r8152 5-1:1.0 lan0: get_registers -71
[...]
Sep 8 20:53:34 gw kernel: [ 614.634100] r8152 5-1:1.0 lan0: get_registers -71
Sep 8 20:53:34 gw kernel: [ 614.634203] r8152 5-1:1.0 lan0: set_registers -71
Sep 8 20:53:34 gw kernel: [ 614.776602] usb 5-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
Sep 8 20:53:34 gw kernel: [ 614.808673] r8152 5-1:1.0 lan0: DT mac addr c6:e2:3a:1f:f8:99
Sep 8 20:53:35 gw kernel: [ 614.952573] usb 5-1: reset SuperSpeed Gen 1 USB device number 2 using xhci-hcd
Sep 8 20:53:35 gw kernel: [ 614.984657] r8152 5-1:1.0 lan0: DT mac addr c6:e2:3a:1f:f8:99
Sep 8 20:53:35 gw kernel: [ 615.835867] r8152 5-1:1.0 lan0: skb_to_sgvec fail -90
Sep 8 20:53:58 gw kernel: [ 638.860994] r8152 5-1:1.0 lan0: Tx timeout
Sep 8 20:53:59 gw kernel: [ 639.373068] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:53:59 gw kernel: [ 639.885132] r8152 5-1:1.0 lan0: set_registers -110
Sep 8 20:54:00 gw kernel: [ 640.397198] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:54:00 gw kernel: [ 640.909109] r8152 5-1:1.0 lan0: get_registers -110
Sep 8 20:54:00 gw kernel: [ 640.909219] r8152 5-1:1.0 lan0: set_registers -71
Sep 8 20:54:00 gw kernel: [ 640.909435] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:54:00 gw kernel: [ 640.909519] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:54:00 gw kernel: [ 640.909576] r8152 5-1:1.0 lan0: Tx status -2
Sep 8 20:54:00 gw kernel: [ 640.909672] r8152 5-1:1.0 lan0: Tx status -2
After some seconds, the interface is back running again, but when I re-launch iperf3 from the client, the interface hangs again.
I tried to execute
echo 0bda:8153:k > /sys/module/usbcore/parameters/quirks
as suggested here, but no improvements.
Any ideas?
Thank you.