Summary
On Linux 6.18.40, an AQC113-based Thunderbolt 3 NIC adapter
(Ubiquiti UACC-Adapter-RJ45-USBC-10GE) achieves ~600 Mbps when
connected through a Dell WD22TB4 Thunderbolt 4 dock. The same adapter
achieves full 10 GbE when plugged directly into the laptop's Thunderbolt
port. Windows achieves full 10 GbE through the dock. PCIe topology and
link speeds are identical between Linux and Windows in both scenarios,
pointing to a driver-level issue.
Hardware
- Laptop: Framework 13 AMD (Strix Halo / Ryzen AI)
- USB4: AMD USB4 Router [1022:151c / 1022:151d]
- Host TB: Intel Goshen Ridge TB4 [8086:0b26 rev 03]
- Dock: Dell WD22TB4 Thunderbolt 4 Dock
- Adapter: Ubiquiti UACC-Adapter-RJ45-USBC-10GE
(Intel JHL7440 TB3 bridge [8086:15ef rev 06] +
Aquantia AQC113 [1d6a:04c0 rev 03])
- Switch: Connected to 10 GbE switch
Kernel and driver
Kernel: 6.18.40
Driver: in-tree atlantic (intree: Y)
Module params: aq_itr, aq_itr_tx, aq_itr_rx (no other params exposed)
dmesg
[ 5.427263] thunderbolt 1-2: Dell WD22TB4 Thunderbolt Dock
[ 6.158888] thunderbolt 1-0:2.1: new retimer found, vendor=0x1da0 device=0x8833
[ 6.994932] thunderbolt 1-2:1.1: new retimer found, vendor=0x1da0 device=0x8833
[ 7.521693] thunderbolt 1-502: Ubiquiti Inc. UACC-Adapter-RJ45-USBC-10GE
[ 244.475274] atlantic 0000:84:00.0: enabling device (0000 -> 0002)
[ 244.559142] atlantic: Detect ATL2FW 1030025
[ 244.738977] atlantic 0000:84:00.0 enp132s0: renamed from eth1
[ 253.006960] atlantic 0000:84:00.0 enp132s0: atlantic: link change old 0 new 10000
The NIC reports a 10 Gbps Ethernet link in both direct and dock
scenarios. The limitation is not at the network layer.
PCIe topology
PCIe path to NIC - direct connection (Linux and Windows identical):
AMD USB4 Bridge 00:01.1 x1 @ 2.5 GT/s
JHL7440 root 01:00.0 x4 @ 2.5 GT/s (TB tunnel)
JHL7440 port 1 02:01.0 x4 @ 8.0 GT/s
AQC113 NIC 03:00.0 x4 @ 8.0 GT/s (downgraded from 16)
PCIe path to NIC - via dock (Linux and Windows identical):
AMD USB4 Bridge 00:01.2 x1 @ 2.5 GT/s
Goshen Ridge root 60:00.0 x4 @ 2.5 GT/s
Goshen Ridge port 2 61:02.0 x4 @ 2.5 GT/s
JHL7440 root 82:00.0 x4 @ 2.5 GT/s (TB tunnel)
JHL7440 port 1 83:01.0 x4 @ 8.0 GT/s
AQC113 NIC 84:00.0 x4 @ 8.0 GT/s (downgraded from 16)
The NIC's own PCIe link (x4 @ 8 GT/s between JHL7440 port 1 and the
AQC113) is identical across all four combinations of OS and connection
method. The extra hop in the dock path is the Goshen Ridge TB4 switch,
but this is also present and identical in the working Windows dock case.
lspci -vvnn for AQC113 (dock scenario)
84:00.0 Ethernet controller [0200]: Aquantia Corp. AQtion AQC113
NBase-T/IEEE 802.3an [1d6a:04c0] (rev 03)
LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM not supported
LnkSta: Speed 8GT/s (downgraded), Width x4
LnkCtl2: Target Link Speed: 16GT/s
MaxPayload 128 bytes, MaxReadReq 512 bytes
Kernel driver in use: atlantic
Kernel modules: atlantic
Comparison across all four scenarios
Scenario OS JHL7440 port 1 AQC113 LnkSta Throughput
Direct Linux x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Direct Windows x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Via dock Windows x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Via dock Linux x4 @ 8 GT/s x4 @ 8 GT/s ~600 Mbps
The hardware PCIe configuration is identical in all four cases. The
only variable that correlates with the degraded throughput is Linux
via the dock.
Things already tried
- ethtool -C enp132s0 rx-usecs 0 tx-usecs 0 (disable coalescing)
- ethtool -G enp132s0 rx 4096 tx 4096 (larger ring buffers)
- modprobe atlantic aq_itr=0 (disable ITR via param)
None of the above recovered throughput.
Questions
-
Is there a known issue with the atlantic driver when the AQC113 is
behind multiple PCIe switches, specifically a TB4 + TB3 bridge chain?
-
Could MaxPayload size negotiation across six bridge hops cause a
throughput ceiling? The NIC supports 512 bytes but is operating at
128 bytes. Would it help to force a higher value via setpci?
-
Is there additional debug output (ring stats, DMA stats, firmware
counters) that would help isolate whether the bottleneck is in the
TX path, RX path, or interrupt handling?
Attachments
dock-output.txt - full lspci -tv and lspci -vvnn, dock scenario
direct-output.txt - full lspci -tv and lspci -vvnn, direct scenario
windows-dock.txt - HWiNFO64 PCI report, dock scenario (Windows)
windows-direct.txt - HWiNFO64 PCI report, direct scenario (Windows)
windows-direct.txt
windows-dock.txt
direct-output.txt
dock-output.txt
Summary
On Linux 6.18.40, an AQC113-based Thunderbolt 3 NIC adapter
(Ubiquiti UACC-Adapter-RJ45-USBC-10GE) achieves ~600 Mbps when
connected through a Dell WD22TB4 Thunderbolt 4 dock. The same adapter
achieves full 10 GbE when plugged directly into the laptop's Thunderbolt
port. Windows achieves full 10 GbE through the dock. PCIe topology and
link speeds are identical between Linux and Windows in both scenarios,
pointing to a driver-level issue.
Hardware
(Intel JHL7440 TB3 bridge [8086:15ef rev 06] +
Aquantia AQC113 [1d6a:04c0 rev 03])
Kernel and driver
Kernel: 6.18.40
Driver: in-tree atlantic (intree: Y)
Module params: aq_itr, aq_itr_tx, aq_itr_rx (no other params exposed)
dmesg
[ 5.427263] thunderbolt 1-2: Dell WD22TB4 Thunderbolt Dock
[ 6.158888] thunderbolt 1-0:2.1: new retimer found, vendor=0x1da0 device=0x8833
[ 6.994932] thunderbolt 1-2:1.1: new retimer found, vendor=0x1da0 device=0x8833
[ 7.521693] thunderbolt 1-502: Ubiquiti Inc. UACC-Adapter-RJ45-USBC-10GE
[ 244.475274] atlantic 0000:84:00.0: enabling device (0000 -> 0002)
[ 244.559142] atlantic: Detect ATL2FW 1030025
[ 244.738977] atlantic 0000:84:00.0 enp132s0: renamed from eth1
[ 253.006960] atlantic 0000:84:00.0 enp132s0: atlantic: link change old 0 new 10000
The NIC reports a 10 Gbps Ethernet link in both direct and dock
scenarios. The limitation is not at the network layer.
PCIe topology
PCIe path to NIC - direct connection (Linux and Windows identical):
AMD USB4 Bridge 00:01.1 x1 @ 2.5 GT/s
JHL7440 root 01:00.0 x4 @ 2.5 GT/s (TB tunnel)
JHL7440 port 1 02:01.0 x4 @ 8.0 GT/s
AQC113 NIC 03:00.0 x4 @ 8.0 GT/s (downgraded from 16)
PCIe path to NIC - via dock (Linux and Windows identical):
AMD USB4 Bridge 00:01.2 x1 @ 2.5 GT/s
Goshen Ridge root 60:00.0 x4 @ 2.5 GT/s
Goshen Ridge port 2 61:02.0 x4 @ 2.5 GT/s
JHL7440 root 82:00.0 x4 @ 2.5 GT/s (TB tunnel)
JHL7440 port 1 83:01.0 x4 @ 8.0 GT/s
AQC113 NIC 84:00.0 x4 @ 8.0 GT/s (downgraded from 16)
The NIC's own PCIe link (x4 @ 8 GT/s between JHL7440 port 1 and the
AQC113) is identical across all four combinations of OS and connection
method. The extra hop in the dock path is the Goshen Ridge TB4 switch,
but this is also present and identical in the working Windows dock case.
lspci -vvnn for AQC113 (dock scenario)
84:00.0 Ethernet controller [0200]: Aquantia Corp. AQtion AQC113
NBase-T/IEEE 802.3an [1d6a:04c0] (rev 03)
LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM not supported
LnkSta: Speed 8GT/s (downgraded), Width x4
LnkCtl2: Target Link Speed: 16GT/s
MaxPayload 128 bytes, MaxReadReq 512 bytes
Kernel driver in use: atlantic
Kernel modules: atlantic
Comparison across all four scenarios
Scenario OS JHL7440 port 1 AQC113 LnkSta Throughput
Direct Linux x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Direct Windows x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Via dock Windows x4 @ 8 GT/s x4 @ 8 GT/s 10 GbE
Via dock Linux x4 @ 8 GT/s x4 @ 8 GT/s ~600 Mbps
The hardware PCIe configuration is identical in all four cases. The
only variable that correlates with the degraded throughput is Linux
via the dock.
Things already tried
None of the above recovered throughput.
Questions
Is there a known issue with the atlantic driver when the AQC113 is
behind multiple PCIe switches, specifically a TB4 + TB3 bridge chain?
Could MaxPayload size negotiation across six bridge hops cause a
throughput ceiling? The NIC supports 512 bytes but is operating at
128 bytes. Would it help to force a higher value via setpci?
Is there additional debug output (ring stats, DMA stats, firmware
counters) that would help isolate whether the bottleneck is in the
TX path, RX path, or interrupt handling?
Attachments
dock-output.txt - full lspci -tv and lspci -vvnn, dock scenario
direct-output.txt - full lspci -tv and lspci -vvnn, direct scenario
windows-dock.txt - HWiNFO64 PCI report, dock scenario (Windows)
windows-direct.txt - HWiNFO64 PCI report, direct scenario (Windows)
windows-direct.txt
windows-dock.txt
direct-output.txt
dock-output.txt