bb-qq / r8152

Synology DSM driver for Realtek RTL8152/RTL8153/RTL8156 based adapters
GNU General Public License v2.0
2.19k stars 190 forks source link

Working great on DS220+ and Plugable USBC-E2500 (without jumbo frames) #434

Open briankelly opened 1 month ago

briankelly commented 1 month ago

Just wanted to share some thanks for this project!

All is working great with standard frames (1500 mtu), but I ran into some inconsistencies when using jumbo frames (9000 mtu).

I bought this USB 2.5 Gbps adapter a few years back and figured I'd give a try today with my DS220+ running DSM 7.2. I'm not sure which version of the r8152 chipset it's using, but probably the older version.

Plugable USBC-E2500 USB-C/A dongle

I followed the readme to install the r8152-geminilake-2.18.1-1_7.2.spk package on my DS220+.

Output of uname -a & lsusb command

$ uname -a
Linux KellyNAS 4.4.302+ #69057 SMP Fri Jan 12 17:02:28 CST 2024 x86_64 GNU/Linux synology_geminilake_220+

$ lsusb | grep -A1 usb2
|__usb2          1d6b:0003:0404 09  3.00 5000MBit/s 0mA 1IF  (Linux 4.4.302+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
  |__2-2         0bda:8156:3100 00  3.20 5000MBit/s 256mA 1IF  (Realtek USB 10/100/1G/2.5G LAN 001000001)

Output of potentially relevant dmesg log

[ 3498.202059] r8152 2-2:1.0 eth2: chip rev 14 [ 3499.014521] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 3530.195720] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 3530.202884] r8152 2-2:1.0 eth2: carrier on [ 3957.128232] r8152 2-2:1.0 eth2: carrier off [ 3961.990623] r8152 2-2:1.0 eth2: carrier on [ 4062.325117] r8152 2-2:1.0 eth2: carrier off [ 4520.738712] r8152 2-2:1.0 eth2: carrier on [ 4673.786588] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 4677.638176] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 4677.645342] r8152 2-2:1.0 eth2: carrier on [ 4967.868068] Synotify use 16384 event queue size [ 6063.564157] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready [ 6067.468852] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready [ 6067.476046] r8152 2-2:1.0 eth2: carrier on [ 6865.276491] Synotify use 16384 event queue size [ 6960.085258] perf interrupt took too long (2507 > 2500), lowering kernel.perf_event_max_sample_rate to 50000



The DS220+ is running DSM 7.2.1-69057 Update 5.

I'm using a cheap 2.5 gbps switch ([Sodola 4X2.5G+2X10G SFP+(Managed)](https://www.amazon.com/dp/B0CK268RXR)) and a mix of CAT 5e and CAT 6. Client PC is a Ryzen 5800X3D / X570 chipset with Intel Killer E3100G 2.5G LAN. [ASRock X570S PG Riptide mobo](https://pg.asrock.com/mb/AMD/X570S%20PG%20Riptide/index.asp)

Screenshot of 75% progress of a 213 GB copy using SMB to the DS220+.

<img width="338" alt="image" src="https://github.com/user-attachments/assets/a139f45c-6809-44f3-ade0-0ccbb9ea5225">

I started off with iperf3 tests, which ran great even with Jumbo frames... but then things regressed at some point, and I could only get 1 gbps receiving (2.5 gbps still seemed to work for sending).

I went back to 1500 mtu on both the DS220+ and my client PC and things picked back up to be 2 gbps+ in both directions.

Here's a screenshot of Resource Monitor > Network from the DS220+ that shows my testing:
<img width="1389" alt="image" src="https://github.com/user-attachments/assets/fd7c9150-7597-40f5-b78f-7846dc8e2e2d">

You can see the initial iperf3 tests with jumbo frames on. Then, perf dropped.

The final large receive graph is from the aforementioned 213 GB copy from my client win11 box with jumbo frames disabled on the DS220+ and my client.
bb-qq commented 1 month ago

Could you attach the iperf logs? I would like to see what kind of difference there is in the logs for different MTU settings.