X86 device, which network chip should be chosen for "headache-free" functioning?

i don't see any version...

kiki@debian:~$ /sbin/modinfo e1000e
filename:       /lib/modules/5.10.0-14-amd64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
license:        GPL v2
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
alias:          pci:v00008086d0000550Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000550Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000550Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000550Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001A1Dsv*sd*bc*sc*i*
alias:          pci:v00008086d00001A1Csv*sd*bc*sc*i*
alias:          pci:v00008086d00001A1Fsv*sd*bc*sc*i*
alias:          pci:v00008086d00001A1Esv*sd*bc*sc*i*
alias:          pci:v00008086d000015F5sv*sd*bc*sc*i*
alias:          pci:v00008086d000015F4sv*sd*bc*sc*i*
alias:          pci:v00008086d000015FAsv*sd*bc*sc*i*
alias:          pci:v00008086d000015F9sv*sd*bc*sc*i*
alias:          pci:v00008086d000015FCsv*sd*bc*sc*i*
alias:          pci:v00008086d000015FBsv*sd*bc*sc*i*
alias:          pci:v00008086d00000D55sv*sd*bc*sc*i*
alias:          pci:v00008086d00000D53sv*sd*bc*sc*i*
alias:          pci:v00008086d00000D4Dsv*sd*bc*sc*i*
alias:          pci:v00008086d00000D4Csv*sd*bc*sc*i*
alias:          pci:v00008086d00000D4Fsv*sd*bc*sc*i*
alias:          pci:v00008086d00000D4Esv*sd*bc*sc*i*
alias:          pci:v00008086d000015E2sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E1sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E0sv*sd*bc*sc*i*
alias:          pci:v00008086d000015DFsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BCsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BBsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BEsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BDsv*sd*bc*sc*i*
alias:          pci:v00008086d000015D6sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D7sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B7sv*sd*bc*sc*i*
alias:          pci:v00008086d00001570sv*sd*bc*sc*i*
alias:          pci:v00008086d0000156Fsv*sd*bc*sc*i*
alias:          pci:v00008086d000015A3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A2sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A1sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001559sv*sd*bc*sc*i*
alias:          pci:v00008086d0000155Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001503sv*sd*bc*sc*i*
alias:          pci:v00008086d00001502sv*sd*bc*sc*i*
alias:          pci:v00008086d000010F0sv*sd*bc*sc*i*
alias:          pci:v00008086d000010EFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001525sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010DEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010F5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010E5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000294Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010C3sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C2sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001501sv*sd*bc*sc*i*
alias:          pci:v00008086d00001049sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010C4sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BBsv*sd*bc*sc*i*
alias:          pci:v00008086d00001098sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001096sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010F6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D3sv*sd*bc*sc*i*
alias:          pci:v00008086d0000109Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Dsv*sd*bc*sc*i*
alias:          pci:v00008086d000010B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DAsv*sd*bc*sc*i*
alias:          pci:v00008086d000010D9sv*sd*bc*sc*i*
alias:          pci:v00008086d00001060sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010A4sv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Esv*sd*bc*sc*i*
depends:        ptp
retpoline:      Y
intree:         Y
name:           e1000e
vermagic:       5.10.0-14-amd64 SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         Debian Secure Boot CA
sig_key:        4B:6E:F5:AB:CA:66:98:25:17:8E:05:2C:84:66:7C:CB:C0:53:1F:8C
sig_hashalgo:   sha256
signature:      A3:75:E4:D7:3C:E2:C5:E0:93:BB:5A:6B:BA:E0:5A:BA:FF:D3:94:A1:
		DD:8E:A4:5A:45:E6:9C:95:88:BF:B1:02:DF:54:D1:11:94:9F:AA:BC:
		30:20:CD:3C:A2:F5:E1:1A:EB:73:40:B1:6F:14:3D:E0:43:ED:66:92:
		94:52:20:B6:DC:92:10:17:A4:14:8A:5B:2A:4D:0A:AA:CC:00:0F:37:
		F0:26:B1:8E:88:63:EC:0B:DD:F2:CD:C0:F2:2A:DE:85:81:7A:7C:14:
		75:4A:20:60:21:F8:2C:52:77:FE:FE:15:48:A1:00:8B:2F:2A:09:6B:
		70:91:B2:CB:D9:54:5D:80:A9:8C:3E:74:FC:52:9E:BE:6C:44:F4:4D:
		7C:3C:15:C7:1A:B6:81:31:00:3D:A8:7D:6A:10:CD:AF:02:CE:4B:B5:
		25:B9:1A:67:B2:20:4E:5E:D9:14:B8:74:C7:53:ED:B1:F4:F3:EA:BC:
		68:A8:D9:73:BC:EE:72:4A:60:BD:4D:4B:2D:73:18:16:89:6D:F2:A1:
		09:D9:52:AF:71:A1:A9:50:90:11:35:11:2B:55:29:08:3A:76:6F:FB:
		4B:A9:33:77:EA:A8:CC:E0:5C:88:65:33:6E:7D:D8:CF:B3:93:58:1B:
		68:9F:B7:8E:44:5D:75:91:78:60:D6:F6:C1:A5:91:FB
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm:           TxIntDelay:Transmit Interrupt Delay (array of int)
parm:           TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm:           RxIntDelay:Receive Interrupt Delay (array of int)
parm:           RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm:           InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm:           IntMode:Interrupt Mode (array of int)
parm:           SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm:           KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm:           WriteProtectNVM:Write-protect NVM [WARNING: disabling this can lead to corrupted NVM] (array of int)
parm:           CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)
kiki@debian:~$

no luck with this command too :

kiki@debian:~$ /sbin/modinfo -F version e1000e
kiki@debian:~$ 

nothing here too

kiki@debian:~$ sudo dmesg | grep e1000e
[    1.462751] e1000e: Intel(R) PRO/1000 Network Driver
[    1.462752] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.468895] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    1.546475] e1000e 0000:00:19.0 0000:00:19.0 (uninitialized): registered PHC clock
[    1.615304] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 50:65:f3:2f:61:07
[    1.615307] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection
[    1.615351] e1000e 0000:00:19.0 eth0: MAC: 11, PHY: 12, PBA No: FFFFFF-0FF
[    1.817105] e1000e 0000:00:19.0 eno1: renamed from eth0
[    6.393822] e1000e 0000:00:19.0 eno1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
kiki@debian:~$ 

look how stable is the curve during the nperf.com test, with debian 11 installed :

image

Back with openwrt on the device now.

Any reason why we are with the driver version 3.2.6-k for e1000e, while the latest version available from intel is 3.8.4 ??

Edit :
I just switched my LAN/WAN cables, and this time i set ETH0 as the WAN (the USB3 adapter) and ETH1 as the LAN interface (Intel I217-LM), after several tests i don't have the connexion reset anymore !
But at least one big roller coaster in the curve all the time.
image

With speedtest.net still no problem, I wonder if there is not a smoothing of the curve that hides the ups and downs :

Looks like it could be a problem between traffic going from one NIC to the other one ?

Back on the Lenovo M920q with the I219-LM this time.
Cables switched :
I219-LM = WAN = eth0
Usb3 adapter = LAN = eth1

image

The curve is ok, no big roller coaster here. Looks like making the intel NIC the WAN interface is a good workaround, as you don't have to tinker the settings and disable some features. if someone can explain why, it would be interesting...

btw i don't have a RTL8111 usb3 NIC, but a RTL8153, this model

root@OpenWrt:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux 5.4.188 xhci-hcd xHCI Host Controller
Bus 002 Device 002: ID 0bda:8153 Realtek USB 10/100/1000 LAN
Bus 002 Device 001: ID 1d6b:0003 Linux 5.4.188 xhci-hcd xHCI Host Controller
root@OpenWrt:~#

Does anyone know if we can find some oem intel X550-T2 based cards, used and for cheap ?
Maybe HP/DELL/Lenovo...have product codes that I could search for
up to now, all i could find is 210€ for a used card in my country.

Any specific reason for going for the X550 ?
The X540 and X520 are cheaper.

Not sure if any of those are multi gig, but you are probably aware, and don't mind.

I'm using a HPE X540-AT2, and it serves me well, although the kernel I'm
currently on (Fedora 35, 5.15.14), seem to have hw offloading broken, the card
maxes out my 1285Lv4 routing at ~800mbit.

I'm using both ports on the card, one for LAN, the 2nd for WAN.

Broadcom's cheaper here too, look for the 57810S / 57810A, note it exists with dual RJ45s
and SFP+s.

There's also the Supermicro AOC-STG-I2T and HPE 561T.

Because of the multi gigabit 10G/5G/2.5G/1G. My ISP has some offers at 2.5Gbps, and some offers at 8Gbps for which I am not yet eligible in my region, so it may be in 1 or 2 years?

X540 and X520 are 10G/1G

i read somewhere also that the X550 consumme less power, something like 40%. i don't remember where...

at least for the 8G, you'll need a 10G card anyway, I'd assume.

My ISP's offering 10/10 since a couple of years, but I'm not going there any time soon :wink:

here is where i found the info about the power consumption :

One may also notice quickly that the heatsinks on these cards are much smaller than on the X540 generations of cards. The X550 is Intel’s newer generation that is much better on power/ thermals while adding new features. To give some sense, the X540 version of this card is rated at 14.28W with both ports operating at 10Gbase-T speeds. This card is rated at 8.16W. That is around a 43% decrease in power which is a massive generational improvement.

i love the fact they put a score on the aesthetics :wink:

i just received the Pcie Riser and my 4x ports card. i made a mistake and ordered a 4x 1Gbps (Realtek) card instead of the 4x 2.5Gbps one :rage: :rage: the seller used 1 page to sell 2 different cards with the same 1st picture advertising the 2.5gbps card :rage: :rage:

we'll see the result tonight

Well, this quad port Realtek card is really to be avoided.
First test :
ETH0 = WAN = Intel I219 Nic
ETH1 = LAN = Realtek R8111h Nic

"Hadrware unit hang" during the uploading test...the Nic didn't want to initialize i had to reboot the PC.

Second test :
ETH4 = WAN = Realtek R8111h Nic
ETH1 = LAN = Realtek R8111h Nic
it works but i can hardly reach 844Mbps.
image

The card is a PCIe 1.1 this is probably one of the reason ? idk

i also tried with SW offloading enabled, here is the result, it hardly reached the 940Mbps :
image

In both tests the cpu load on 2 cores went up to 43%, the others were around 15/20%

maybe i could try another driver for this Nic (RTL8111H) ??

root@OpenWrt:~# ethtool -i eth2
driver: r8169
version:
firmware-version: rtl8168h-2_0.0.2 02/26/15
expansion-rom-version:
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no
root@OpenWrt:~#

The card Specs :

Specification

• Integrated 10/100/1000M transceiver
• Supports Giga Lite (500M) mode
• Auto-Negotiation with Next Page capability
• Supports PCI Express 1.1
• Supports pair swap/polarity/skew correction
• Crossover Detection & Auto-Correction
• Supports 1-Lane 2.5Gbps PCI Express Bus
• Supports hardware ECC (Error Correction Code) function
• Supports hardware CRC (Cyclic Redundancy Check) function
• Transmit/Receive on-chip buffer support
• Supports PCI MSI (Message Signaled Interrupt) and MSI-X
• Fully compliant with IEEE802.3, 802.3u and 802.3ab
• Supports IEEE 802.1P layer 2 Priority Encoding
• Supports 802.1Q VLAN tagging
• Supports IEEE 802.3az-2010(EEE)
• Supports Full Duplex flow control (IEEE.802.3x)
• Supports jumbo frame to 9K bytes
• Supports quad core Receive-Side Scaling(RSS)
• Supports Protocol Offload(ARP&NS)
• Supports Microsoft WPI (Wake Packet Indication)
• Wake-On-LAN and "RealWoW"Technology (remote wake-up) support
• Supports ECMA-393 ProxZzzy Standard for sleeping hosts

i compared with ETHTOOL the settings for both NICs and i found that in the 8111h TSO and some other settings enabled for the intel NIC are actualy disabled in the Realtek NIC

i tried to enable TSO and GSO but it doesn't work ? this tool only works with intel NICs ??

root@OpenWrt:~# ethtool -K eth1 tso on
Could not change any device features
root@OpenWrt:~# ethtool -K eth1 gso on
Could not change any device features

These parameters are not [fixed] so why i can't enable them ??

Most likely your ISP will give you a 10Gbit XGS-PON connection and then limit your speed in their backend.

well finally i could fix this problem with the folowing command :

root@OpenWrt:~# ethtool -K eth1 sg on
Actual changes:
scatter-gather: on
        tx-scatter-gather: on
tcp-segmentation-offload: on
        tx-tcp-segmentation: on
        tx-tcp-mangleid-segmentation: on
        tx-tcp6-segmentation: on
generic-segmentation-offload: on
root@OpenWrt:~# 

it automagicaly enabled all the settings i wanted, but unfortunately nothing changed during the speedtest...

Now with the I350-T4 bought on Ebay.

root@OpenWrt:~# ethtool -i eth0
driver: igb
version: 5.6.0-k
firmware-version: 1.63, 0x80000e85, 0.385.33
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
root@OpenWrt:~#

eth0 = LAN = Intel I350
eth3 = WAN = Intel I350

image

It is much better !!
And during the test the cpu load was less than 5%

Just for reference, iperf3 and iperf3 --reverse (that's what I can test easily, as the baytrail-d server only has a single NIC), 'server' running on a j1900 with RTL8168g/8111g, XID 4c0, IRQ 91 client a faster system with RTL8168f/8111f, XID 480, IRQ 27, values consistently between 940 and 944 MBit/s.

1 Like

Btw., just testing another j1900 with I211 (igb) network cards now, routing is easily possible at ~940 MBit/s (without even breaking ~25-30% load on any core), with sqm the limit seems to be more around 830 MBit/s (one core fully loaded, after tweaking irqbalance and packet steering).

which driver did you use ? the default r8169 ?

Someone made an x86 package for the r8168 that I would have liked to test here but unfortunately it's for the 4.9 kernel so i can't install it.