[TRACKING] Framework 13 AMD supplied Realtek USB-C 2.5Gbit NIC frequent resets in Left hand Extension slots

I was recently testing the supplied framework USB-C to Ethernet adaptor card (transparent one) with the AMD Framework. I get frequent disconnects and resets of the BUS leading to flapping of the NIC. This is particularly problematic when i.e running Firmware updates to connected routers etc (I encountered it when running tftp flash).

The behavior is more stable when the expansion card is in the back right expansion slot.

I also have never been able to achieve reasonable speeds from this NIC chipset. Even when connected at 2.5Gbit with a 10G capable 803.bz port on a switch I am only able to push sub 930mbit transfers through the adapter.

I have collected dmesg and journal output. But am wondering if others are seeing the same terrible performance from the supplied NIC. I am a bit disapointed, as in my collection of dozens of USB NIC adapters this is by far the flakiest I have encountered and leaves me wishing there was a real PHY MAC breakout on the FW.

Conversly Thunderbolt networking at 20GBit seems fine over the rear ports. But that’s not helpful when you need an RJ45.

It might be worth reaching out to Support about this! I’ve got the same NIC, roughly the same laptop, on Linux and Windows and I can readily push 2300MBit – even on the left ports – reliably.

1 Like

Thanks for the reference point. This is with an 6.7rc kernel and firmware blobs from next ; so it’s possible it’s something in an update. What is your working kernel version / distro-blob combination so I can test?

This may be bug worthy. Haven’t tested it recently on Fedora, mostly Ubuntu, so it would be interesting to do some comparison testing with older kernels, see if the behavior reflects similar there.

I know you how to do this stuff, so I look forward to seeing what you find and I will then circle back for my own testing on 6.6.6-200 - seriously though, thank you very much for pushing on this with the RC kernel. It’s greatly appreciated. :slight_smile:

Which distro and kernel by chance? @jwp is doing awesome things by helping us to stay ahead of things as we move past the 6.6.6 kernel.

Yeah it’s on my list of things to circle back on over x-mas. Will get you some actual metrics from flent/iperf3 and similar once I’ve got a bit of time.

Sounds like @DHowett was mentioning windows - which I believe likely works fine RTL are particularly well known for having opaque driver stacks in linux, but are well known for having badly documented quirks (lots of examples from Openwrt experience with their switch SoC’s)

:tada: :slight_smile:

Sorry about the delay here!

I’ve been using the slightly out-of-date 6.5 series (6.5.13 at the most recent) on Debian unstable. It hasn’t reported loading any firmware–nor do I seem to have any on disk (!).

This one lit up with the r8152 module.

(tycho) ~ % lsmod | grep r8
r8152                 151552  0

iperf3, 12 streams, -R, front left bay

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   235 MBytes   197 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   238 MBytes   199 Mbits/sec    0             sender
[  7]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   238 MBytes   200 Mbits/sec    0             sender
[  9]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec   238 MBytes   200 Mbits/sec    0             sender
[ 11]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 13]   0.00-10.00  sec   234 MBytes   196 Mbits/sec    0             sender
[ 13]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 15]   0.00-10.00  sec   235 MBytes   197 Mbits/sec    0             sender
[ 15]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 17]   0.00-10.00  sec   234 MBytes   196 Mbits/sec    0             sender
[ 17]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 19]   0.00-10.00  sec   234 MBytes   196 Mbits/sec    0             sender
[ 19]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 21]   0.00-10.00  sec   238 MBytes   200 Mbits/sec    0             sender
[ 21]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 23]   0.00-10.00  sec   238 MBytes   199 Mbits/sec    0             sender
[ 23]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 25]   0.00-10.00  sec   234 MBytes   196 Mbits/sec    0             sender
[ 25]   0.00-10.00  sec   232 MBytes   194 Mbits/sec                  receiver
[ 27]   0.00-10.00  sec   233 MBytes   196 Mbits/sec    0             sender
[ 27]   0.00-10.00  sec   231 MBytes   194 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  2.76 GBytes  2.37 Gbits/sec    0             sender
[SUM]   0.00-10.00  sec  2.72 GBytes  2.33 Gbits/sec                  receiver

(similar results without -R and with a single stream)

can you post the modinfo output of r8152 as well as the ethtool and ethtool -K

rtl drivers often don’t ship seperate firmware but rely on a heap of ‘magic’ init inside the driver itself - if you look at the r8152.c directly you’ll see random blobs to init things which is typical realtek.

Absolutely.

modinfo r8152

filename:       /lib/modules/6.5.0-5-amd64/kernel/drivers/net/usb/r8152.ko
version:        v1.12.13
license:        GPL
description:    Realtek RTL8152/RTL8153 Based USB Ethernet Adapters
author:         Realtek linux nic maintainers <nic_swsd@realtek.com>
firmware:       rtl_nic/rtl8156b-2.fw
firmware:       rtl_nic/rtl8156a-2.fw
firmware:       rtl_nic/rtl8153c-1.fw
firmware:       rtl_nic/rtl8153b-2.fw
firmware:       rtl_nic/rtl8153a-4.fw
firmware:       rtl_nic/rtl8153a-3.fw
firmware:       rtl_nic/rtl8153a-2.fw
srcversion:     3897263EC6084D6DCA3A615
alias:          usb:v2357p0601d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0955p09FFd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v13B1p0041d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFpA387d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp721Ed*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp7214d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp720Cd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp7205d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp3082d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp3069d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp3062d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp3054d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp304Fd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v04E8pA101d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v045Ep0C5Ed*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v045Ep0927d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v045Ep07C6d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v045Ep07ABd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8156d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8155d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8153d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8152d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8053d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0BDAp8050d*dc*dsc*dp*ic*isc*ip*in*
depends:        usbcore,mii
retpoline:      Y
intree:         Y
name:           r8152
vermagic:       6.5.0-5-amd64 SMP preempt mod_unload modversions 
sig_id:         PKCS#7
signer:         Debian Secure Boot CA
sig_key:        32:A0:28:7F:84:1A:03:6F:A3:93:C1:E0:65:C4:3A:E6:B2:42:26:43
sig_hashalgo:   sha256
signature:      3B:AC:C9:C4:B2:B4:F0:FF:BA:06:75:B0:01:86:78:99:1A:A7:D5:42:
[...truncated...]
           		6A:2A:5A:D3:65:B8:BB:4B:89:1C:CF:C0:6D:84:8C:80

ethtool +/- -k (assumption: you wanted show-features, not to set features)

Settings for enx9cbf0d002427:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Half 1000baseT/Full
	                        2500baseT/Full
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	                        2500baseT/Full
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	                                     2500baseT/Full
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 2500Mb/s
	Duplex: Full
	Auto-negotiation: on
	Port: MII
	PHYAD: 32
	Transceiver: internal
	Supports Wake-on: pumbg
	Wake-on: g
        Current message level: 0x00007fff (32767)
                               drv probe link timer ifdown ifup rx_err tx_err tx_queued intr tx_done rx_status pktdata hw wol
	Link detected: yes
Features for enx9cbf0d002427:
rx-checksumming: on
tx-checksumming: on
	tx-checksum-ipv4: on
	tx-checksum-ip-generic: off [fixed]
	tx-checksum-ipv6: on
	tx-checksum-fcoe-crc: off [fixed]
	tx-checksum-sctp: off [fixed]
scatter-gather: on
	tx-scatter-gather: on
	tx-scatter-gather-fraglist: on
tcp-segmentation-offload: on
	tx-tcp-segmentation: on
	tx-tcp-ecn-segmentation: off [fixed]
	tx-tcp-mangleid-segmentation: off
	tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]

In the meantime, I’ve restarted testing after pulling rtl8156b-2.fw from Debian unstable. (Sorry, grabbed the wrong binary earlier.)