Skip to content

Instantly share code, notes, and snippets.

@Chester-Gillon
Last active May 18, 2025 18:45
Show Gist options
  • Save Chester-Gillon/7bfe4b86d2ba94aa9a3c3de3dec276b8 to your computer and use it in GitHub Desktop.
Save Chester-Gillon/7bfe4b86d2ba94aa9a3c3de3dec276b8 to your computer and use it in GitHub Desktop.
HP USB-C to RJ45 Adapter G2 usage

0. Introduction

Contains some notes about use of a HP USB-C to RJ45 Adapter G2

1. HP Z4 G4 AlmaLinux 8.10

Using Kernel 4.18.0-553.51.1.el8_10.x86_64

The output of dmesg after plugged into a front panel USB-C port. There was a delay of several minutes before connected to an Ethernet switch and the following output ends with the link coming up:

[May10 13:07] pci 0000:03:00.0: [8086:15d3] type 01 class 0x060400
[  +0.000068] pci 0000:03:00.0: enabling Extended Tags
[  +0.000085] pci 0000:03:00.0: supports D1 D2
[  +0.000002] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000065] pci 0000:03:00.0: 15.752 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x2 link at 0000:00:1c.4 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[  +0.000185] pci 0000:03:00.0: Adding to iommu group 25
[  +0.000116] pci 0000:04:00.0: [8086:15d3] type 01 class 0x060400
[  +0.000068] pci 0000:04:00.0: enabling Extended Tags
[  +0.000085] pci 0000:04:00.0: supports D1 D2
[  +0.000001] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000124] pci 0000:04:00.0: Adding to iommu group 26
[  +0.000034] pci 0000:04:01.0: [8086:15d3] type 01 class 0x060400
[  +0.000054] pci 0000:04:01.0: enabling Extended Tags
[  +0.000079] pci 0000:04:01.0: supports D1 D2
[  +0.000001] pci 0000:04:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000103] pci 0000:04:01.0: Adding to iommu group 27
[  +0.000031] pci 0000:04:02.0: [8086:15d3] type 01 class 0x060400
[  +0.000069] pci 0000:04:02.0: enabling Extended Tags
[  +0.000079] pci 0000:04:02.0: supports D1 D2
[  +0.000001] pci 0000:04:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000156] pci 0000:04:02.0: Adding to iommu group 28
[  +0.000045] pci 0000:04:04.0: [8086:15d3] type 01 class 0x060400
[  +0.000058] pci 0000:04:04.0: enabling Extended Tags
[  +0.000083] pci 0000:04:04.0: supports D1 D2
[  +0.000001] pci 0000:04:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000106] pci 0000:04:04.0: Adding to iommu group 29
[  +0.000038] pci 0000:03:00.0: PCI bridge to [bus 04-08]
[  +0.000008] pci 0000:03:00.0:   bridge window [mem 0x94000000-0x941fffff]
[  +0.000006] pci 0000:03:00.0:   bridge window [mem 0x380000000000-0x3800008fffff 64bit pref]
[  +0.000039] pci 0000:04:00.0: PCI bridge to [bus 05]
[  +0.000008] pci 0000:04:00.0:   bridge window [mem 0x94100000-0x941fffff]
[  +0.000043] pci 0000:04:01.0: PCI bridge to [bus 06]
[  +0.000092] pci 0000:07:00.0: [8086:15d4] type 00 class 0x0c0330
[  +0.000028] pci 0000:07:00.0: reg 0x10: [mem 0x94000000-0x9400ffff]
[  +0.000100] pci 0000:07:00.0: enabling Extended Tags
[  +0.000105] pci 0000:07:00.0: supports D1 D2
[  +0.000001] pci 0000:07:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  +0.000083] pci 0000:07:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:04:02.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[  +0.000071] pci 0000:07:00.0: Adding to iommu group 28
[  +0.000028] pci 0000:04:02.0: ASPM: current common clock configuration is inconsistent, reconfiguring
[  +0.000028] pci 0000:04:02.0: PCI bridge to [bus 07]
[  +0.000008] pci 0000:04:02.0:   bridge window [mem 0x94000000-0x940fffff]
[  +0.000052] pci 0000:04:04.0: PCI bridge to [bus 08]
[  +0.000054] pci_bus 0000:04: Allocating resources
[  +0.000017] pci 0000:04:01.0: bridge window [io  0x1000-0x0fff] to [bus 06] add_size 1000
[  +0.000002] pci 0000:04:01.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 06] add_size 200000 add_align 100000
[  +0.000004] pci 0000:04:01.0: bridge window [mem 0x00100000-0x000fffff] to [bus 06] add_size 200000 add_align 100000
[  +0.000002] pci 0000:04:02.0: bridge window [io  0x1000-0x0fff] to [bus 07] add_size 1000
[  +0.000002] pci 0000:04:02.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 07] add_size 200000 add_align 100000
[  +0.000003] pci 0000:04:04.0: bridge window [io  0x1000-0x0fff] to [bus 08] add_size 1000
[  +0.000002] pci 0000:04:04.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 08] add_size 200000 add_align 100000
[  +0.000003] pci 0000:04:04.0: bridge window [mem 0x00100000-0x000fffff] to [bus 08] add_size 200000 add_align 100000
[  +0.000003] pci 0000:03:00.0: bridge window [io  0x1000-0x0fff] to [bus 04-08] add_size 4000
[  +0.000003] pci 0000:03:00.0: BAR 13: no space for [io  size 0x4000]
[  +0.000002] pci 0000:03:00.0: BAR 13: failed to assign [io  size 0x4000]
[  +0.000003] pci 0000:03:00.0: BAR 13: no space for [io  size 0x4000]
[  +0.000001] pci 0000:03:00.0: BAR 13: failed to assign [io  size 0x4000]
[  +0.000006] pci 0000:04:01.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000001] pci 0000:04:01.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000003] pci 0000:04:01.0: BAR 15: assigned [mem 0x380000000000-0x3800001fffff 64bit pref]
[  +0.000003] pci 0000:04:02.0: BAR 15: assigned [mem 0x380000200000-0x3800003fffff 64bit pref]
[  +0.000002] pci 0000:04:04.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000002] pci 0000:04:04.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000002] pci 0000:04:04.0: BAR 15: assigned [mem 0x380000400000-0x3800005fffff 64bit pref]
[  +0.000002] pci 0000:04:01.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pci 0000:04:01.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pci 0000:04:02.0: BAR 13: no space for [io  size 0x1000]
[  +0.000001] pci 0000:04:02.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pci 0000:04:04.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pci 0000:04:04.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000003] pci 0000:04:04.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000002] pci 0000:04:04.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000001] pci 0000:04:04.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pci 0000:04:04.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pci 0000:04:02.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pci 0000:04:02.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pci 0000:04:01.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000001] pci 0000:04:01.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000002] pci 0000:04:01.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pci 0000:04:01.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pci 0000:04:00.0: PCI bridge to [bus 05]
[  +0.000009] pci 0000:04:00.0:   bridge window [mem 0x94100000-0x941fffff]
[  +0.000017] pci 0000:04:01.0: PCI bridge to [bus 06]
[  +0.000014] pci 0000:04:01.0:   bridge window [mem 0x380000000000-0x3800001fffff 64bit pref]
[  +0.000012] pci 0000:04:02.0: PCI bridge to [bus 07]
[  +0.000009] pci 0000:04:02.0:   bridge window [mem 0x94000000-0x940fffff]
[  +0.000006] pci 0000:04:02.0:   bridge window [mem 0x380000200000-0x3800003fffff 64bit pref]
[  +0.000012] pci 0000:04:04.0: PCI bridge to [bus 08]
[  +0.000014] pci 0000:04:04.0:   bridge window [mem 0x380000400000-0x3800005fffff 64bit pref]
[  +0.000011] pci 0000:03:00.0: PCI bridge to [bus 04-08]
[  +0.000009] pci 0000:03:00.0:   bridge window [mem 0x94000000-0x941fffff]
[  +0.000006] pci 0000:03:00.0:   bridge window [mem 0x380000000000-0x3800008fffff 64bit pref]
[  +0.001953] pcieport 0000:04:01.0: enabling device (0004 -> 0006)
[  +0.000321] pcieport 0000:04:04.0: enabling device (0004 -> 0006)
[  +0.001235] xhci_hcd 0000:07:00.0: xHCI Host Controller
[  +0.000142] xhci_hcd 0000:07:00.0: new USB bus registered, assigned bus number 3
[  +0.001113] xhci_hcd 0000:07:00.0: hcc params 0x200077c1 hci version 0x110 quirks 0x0000000200009810
[  +0.000300] xhci_hcd 0000:07:00.0: xHCI Host Controller
[  +0.000037] xhci_hcd 0000:07:00.0: new USB bus registered, assigned bus number 4
[  +0.000003] xhci_hcd 0000:07:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[  +0.000030] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.18
[  +0.000002] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.000002] usb usb3: Product: xHCI Host Controller
[  +0.000001] usb usb3: Manufacturer: Linux 4.18.0-553.51.1.el8_10.x86_64 xhci-hcd
[  +0.000001] usb usb3: SerialNumber: 0000:07:00.0
[  +0.000140] hub 3-0:1.0: USB hub found
[  +0.000007] hub 3-0:1.0: 2 ports detected
[  +0.000368] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.18
[  +0.000003] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.000002] usb usb4: Product: xHCI Host Controller
[  +0.000001] usb usb4: Manufacturer: Linux 4.18.0-553.51.1.el8_10.x86_64 xhci-hcd
[  +0.000002] usb usb4: SerialNumber: 0000:07:00.0
[  +0.000100] hub 4-0:1.0: USB hub found
[  +0.000008] hub 4-0:1.0: 2 ports detected
[  +0.000495] pci_bus 0000:04: Allocating resources
[  +0.000018] pcieport 0000:04:01.0: bridge window [io  0x1000-0x0fff] to [bus 06] add_size 1000
[  +0.000004] pcieport 0000:04:01.0: bridge window [mem 0x00100000-0x000fffff] to [bus 06] add_size 200000 add_align 100000
[  +0.000003] pcieport 0000:04:02.0: bridge window [io  0x1000-0x0fff] to [bus 07] add_size 1000
[  +0.000002] pcieport 0000:04:04.0: bridge window [io  0x1000-0x0fff] to [bus 08] add_size 1000
[  +0.000002] pcieport 0000:04:04.0: bridge window [mem 0x00100000-0x000fffff] to [bus 08] add_size 200000 add_align 100000
[  +0.000003] pcieport 0000:03:00.0: bridge window [io  0x1000-0x0fff] to [bus 04-08] add_size 4000
[  +0.000004] pcieport 0000:03:00.0: BAR 13: no space for [io  size 0x4000]
[  +0.000002] pcieport 0000:03:00.0: BAR 13: failed to assign [io  size 0x4000]
[  +0.000003] pcieport 0000:03:00.0: BAR 13: no space for [io  size 0x4000]
[  +0.000001] pcieport 0000:03:00.0: BAR 13: failed to assign [io  size 0x4000]
[  +0.000004] pcieport 0000:04:01.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:01.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:04.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:04.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000001] pcieport 0000:04:01.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pcieport 0000:04:01.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pcieport 0000:04:02.0: BAR 13: no space for [io  size 0x1000]
[  +0.000001] pcieport 0000:04:02.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pcieport 0000:04:04.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pcieport 0000:04:04.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000003] pcieport 0000:04:04.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000001] pcieport 0000:04:04.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:04.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pcieport 0000:04:04.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pcieport 0000:04:02.0: BAR 13: no space for [io  size 0x1000]
[  +0.000001] pcieport 0000:04:02.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.000002] pcieport 0000:04:01.0: BAR 14: no space for [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:01.0: BAR 14: failed to assign [mem size 0x00200000]
[  +0.000002] pcieport 0000:04:01.0: BAR 13: no space for [io  size 0x1000]
[  +0.000002] pcieport 0000:04:01.0: BAR 13: failed to assign [io  size 0x1000]
[  +0.322338] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd
[  +0.012587] usb 4-1: New USB device found, idVendor=0bda, idProduct=8153, bcdDevice=32.00
[  +0.000003] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[  +0.000002] usb 4-1: Product: USB 10/100/1000 LAN
[  +0.000001] usb 4-1: Manufacturer: Realtek
[  +0.000001] usb 4-1: SerialNumber: 002CC40EB
[  +0.050204] usbcore: registered new device driver r8152-cfgselector
[  +0.116649] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci_hcd
[  +0.069450] r8152 4-1:1.0: load rtl8153c-1 v2 08/19/21 successfully
[  +0.027621] r8152 4-1:1.0 eth0: v1.12.13
[  +0.000026] usbcore: registered new interface driver r8152
[  +0.017511] usbcore: registered new interface driver cdc_ether
[  +0.027749] r8152 4-1:1.0 enp7s0u1: renamed from eth0
[  +0.019586] IPv6: ADDRCONF(NETDEV_UP): enp7s0u1: link is not ready
[  +0.003400] IPv6: ADDRCONF(NETDEV_UP): enp7s0u1: link is not ready
[May10 13:10] IPv6: ADDRCONF(NETDEV_CHANGE): enp7s0u1: link becomes ready
[  +0.000282] r8152 4-1:1.0 enp7s0u1: carrier on

The ethtool output after had connected to an Ethernet switch:

$ sudo ethtool enp7s0u1
[sudo] password for mr_halfword: 
Settings for enp7s0u1:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Half 1000baseT/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
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/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

An IP address has been allocated by DHCP from the broadband router:

$ ip addr show dev enp7s0u1
7: enp7s0u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 0c:37:96:cc:40:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.81/24 brd 192.168.0.255 scope global dynamic noprefixroute enp7s0u1
       valid_lft 84951sec preferred_lft 84951sec
    inet6 fe80::beb8:2586:4b:278/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

When the adapter was plugged in there were no other front panel USB ports in use. The dmesg output showed PCIe devices being added. For the identities of the added devices:

  • 8086:15d3 is a PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step)
  • 8086:15d4 is a USB controller: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step)

The output from lsusb for the Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter which enumerated on USB:

$ sudo lsusb -s 4:2 -v

Bus 004 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x8153 RTL8153 Gigabit Ethernet Adapter
  bcdDevice           32.00
  iManufacturer           1 Realtek
  iProduct                2 USB 10/100/1000 LAN
  iSerial                 6 002CC40EB
  bNumConfigurations      2
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0039
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              288mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval              11
        bMaxBurst               0
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0062
    bNumInterfaces          2
    bConfigurationValue     2
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              288mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0 
      iInterface              5 CDC Communications Control
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1 
      CDC Ethernet:
        iMacAddress                      3 0C3796CC40EB
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval              11
        bMaxBurst               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              4 Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x0016
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      HIRD Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x02
      Latency Tolerance Messages (LTM) Supported
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   2
      Lowest fully-functional device speed is High Speed (480Mbps)
    bU1DevExitLat          10 micro seconds
    bU2DevExitLat        2047 micro seconds
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0010
  (Bus Powered)
  Latency Tolerance Messaging (LTM) Enabled

Which is running at 5G speed:

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
<<snip>>

Was able to run switch_test on ten 100M ports and achived a total of 1000M bi-directional traffic on the HP USB-C to RJ45 Adapter G2:

[mr_halfword@skylake-alma Release]$ ./switch_test -i enp7s0u1 -p 15-24 -r 100
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250510T170528_per_port_counts_linux.csv
Using interface enp7s0u1 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Press Ctrl-C to stop test at end of next test interval

17:05:38.170
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810750              0         810586              0              8              0              0        81074.8         100.01

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:05:48.170
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810621              0              0              0              0        81063.8         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:05:58.170
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810659              0         810662              0              0              0              0        81066.2         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:06:08.170
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810642              0              0              0              0        81064.0         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
^C
17:06:18.170
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810632              0         810642              0              0              0              0        81063.2         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
Max pending rx frames = 3 out of 36

After adding an option to set the snaplen still achieves full bandwidth on the Ethernet link:

[mr_halfword@skylake-alma Release]$ ./switch_test -i enp7s0u1 -p 15-24 -r 100 -l 32768
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T154136_per_port_counts_linux.csv
Using interface enp7s0u1 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 32768
Press Ctrl-C to stop test at end of next test interval

15:41:46.938
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810763              0         810586              0              8              0              0        81076.2         100.02

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

15:41:56.938
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810638              0         810641              0              0              0              0        81063.9         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

15:42:06.938
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810632              0         810643              0              0              0              0        81062.6         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0
^C
15:42:16.938
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810621              0              0              0              0        81063.5         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0
Max pending rx frames = 3 out of 36

Whereas if increase the snaplen to 65536 starts to miss some frames:

[mr_halfword@skylake-alma Release]$ ./switch_test -i enp7s0u1 -p 15-24 -r 100 -l 65536
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T155014_per_port_counts_linux.csv
Using interface enp7s0u1 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 65536
Press Ctrl-C to stop test at end of next test interval

15:50:24.959
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810762              0         810547              0              8              0             39        81075.8         100.02

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   S.S.....S
    16  . S.SS.S..
    17  SS S.S....
    18  ..S S.S...
    19  ...S S.S..
    20  ..... SSS.
    21  S....S .SS
    22  S...... .S
    23  .S...... .
    24  S.SS....S
PCAP statistics : ps_recv=810614 ps_drop=39 ps_ifdrop=810614
Total test intervals with failures = 1 : last failure NOW

15:50:34.959
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810630              0         810638              0              0              0              4        81062.8         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .....S...
    16  . ........
    17  .. ......S
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ..S......
PCAP statistics : ps_recv=1621256 ps_drop=43 ps_ifdrop=1621256
Total test intervals with failures = 2 : last failure NOW
^C
15:50:44.959
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810230              0              0              0            412        81063.8         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   SSSSSSSSS
    16  S SSSSSSSS
    17  SS SSSSSSS
    18  SSS SSSSSS
    19  SSSS SSSSS
    20  SSSSS SSSS
    21  SSSSSS SSS
    22  SSSSSSS SS
    23  SSSSSSSS S
    24  SSSSSSSSS
PCAP statistics : ps_recv=2431898 ps_drop=455 ps_ifdrop=2431898
Total test intervals with failures = 3 : last failure NOW
Max pending rx frames = 4 out of 36

2. HP Z6 G4 Windows 11

Running Windows 11 Pro for Workstations Version 24H2 (OS Build 26100.3915)

Plugged into a front panel USB-C port, and was detected as a network device. Output ipconfig /all. Has a 1G link to a switch, which is configured for running switch_test with no DHCP server available and therefore no IP address allocated:

Ethernet adapter Ethernet 8:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Realtek USB GbE Family Controller
   Physical Address. . . . . . . . . : 0C-37-96-CC-40-EB
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::6361:2f8f:d214:a97%73(Preferred)
   Autoconfiguration IPv4 Address. . : 169.254.69.26(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Default Gateway . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 1225537430
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-2F-7A-41-99-98-03-9B-6A-7E-A1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Built switch_test using C:\npcap-sdk-1.15.

Attempting to run switch_test failed with:

C:\Users\mr_halfword\Git-projects\switch_test\Release>switch_test.exe -i \Device\NPF_{E977075E-F7BA-487C-9146-B92466131E3A} -p 15-24 -r 100
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250510T195155_per_port_counts_windows.csv
Using interface \Device\NPF_{E977075E-F7BA-487C-9146-B92466131E3A} (Realtek USB GbE Family Controller)
Test interval = 10 (secs)
Frame debug enabled = No
Press Ctrl-C to stop test at end of next test interval

Error sending the packet: send error: PacketSendPacket failed: A device attached to the system is not functioning.  (31)

The MTU is 1500:

C:\Users\mr_halfword\Git-projects\switch_test\Release>netsh interface ipv4 show subinterface "Ethernet 8"

       MTU  MediaSenseState      Bytes In     Bytes Out  Interface
----------  ---------------  ------------  ------------  -------------
      1500                1             0         74691  Ethernet 8

Tried increasing the MTU by 4 bytes (as administrator), but failed:

C:\Windows\System32>netsh interface ipv4 set subinterface "Ethernet 8" mtu=1504 store=persistent
The parameter is incorrect.

Can reduce the MTU, but get The parameter is incorrect trying to increase it.

The driver properties are the following, none of which relate to jumbo frame or MTU: image

All of the offloads are set to "Tx & Rx Enabled".

Based upon Unable to set MTU size on windows network adapter disabled all the offloads. However:

  1. Still unable to increase the MTU.
  2. switch_test still fails with Error sending the packet: send error: PacketSendPacket failed.

Found a RTL8153 datasheet which contains:

Support jumbo frame to 9K bytes

The original driver was automatically installed by Windows, but ommitted to record the driver version.

Selected Uninstall Device followed by removing and re-inserting to reset the driver settings back to default. Was still named "Ethernet 8" but the \Device\NPF_{GUID} network interface name used by PCAP changed the GUID part.

From Realtek USB 1G / 2.5G / 5G / 10G Ethernet Family Controller Software which listed RTL8153 devices downloaded Win11 Auto Installation Program (NetAdapterCx) version 1152.17.20 from March 2025. Installed and that updated the driver to:

  • Driver Provider: Realtek
  • Driver Date: 28/02/2025
  • Driver Version: 1153.17.20.1029
  • Digital Signer: Microsoft Windows Hardware Compatibility Publisher

With the updated driver, there are more Advanced proprties including "Jumbo Frame": image

Initially:

  1. Still unable to increase the MTU.
  2. switch_test still fails with Error sending the packet: send error: PacketSendPacket failed.

In the driver properties set Jumbo Frame to "4088 bytes".

Could then update the MTU:

C:\Windows\System32>netsh interface ipv4 set subinterface "Ethernet 8" mtu=1504 store=persistent
Ok.

Which was read back:

C:\Users\mr_halfword\Git-projects\switch_test\Release>netsh interface ipv4 show subinterface "Ethernet 8"

       MTU  MediaSenseState      Bytes In     Bytes Out  Interface
----------  ---------------  ------------  ------------  -------------
      1504                1             0          8000  Ethernet 8

switch_test can now run. However, the throughput is ~20 times lower than under AlmaLinux:

C:\Users\mr_halfword\Git-projects\switch_test\Release>switch_test.exe -i \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} -p 15-24 -r 100
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250510T222054_per_port_counts_windows.csv
Using interface \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} (Realtek USB GbE Family Controller)
Test interval = 10 (secs)
Frame debug enabled = No
Press Ctrl-C to stop test at end of next test interval

22:21:04.653
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
        41461          41461          41455              0              8              0              0         4146.0           5.11

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

22:21:14.654
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
        40859          40859          40859              0              0              0              0         4085.9           5.04

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

22:21:24.666
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
        41047          41046          41046              0              0              0              0         4104.7           5.06

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

22:21:34.665
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
        41605          41606          41606              0              0              0              0         4160.6           5.13

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

22:21:44.663
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
        44130          44130          44129              0              0              8              0         4413.0           5.44

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0
Max pending rx frames = 1 out of 36

The order of performance between Windows and Linux using PCAP is simular to have seen with PCIe based 1 GbE network adapters. I.e. not related to use of the USB interface.

The following were enabled for the connection:

  • Client for Microsoft Networks
  • File and Printer Sharing for Microsoft Networks
  • Npcap Packet Driver (NPCAP)
  • QoS Pascket Scheduler
  • Bridge Driver
  • Nested Network Virtualization
  • Internet Protocol Version 4 (TCP/IPv4)
  • Microsoft LLDP Protocol Driver
  • Internet Protocol Version 6 (TCP/IPv6)
  • Link-Layer Topology Discovery Responder
  • Link-Layer Topology Discovery Mapper I/O Driver

Disabling everything except "Npcap Packet Driver (NPCAP)" still allowed the switch_test to run. However, didn't cause the archive data rate to increase. When trying different options with 10 ports the per-port rate can vary between 5 and 11 Mbps from run-to-run.

This is the result of a new -o option which uses pcap_open with PCAP_OPENFLAG_NOCAPTURE_LOCAL to not capture the transmitted frames. This means "Tx Copy" is now reported as zero under Windows as well as Linux:

C:\Users\mr_halfword\Git-projects\switch_test\Release>switch_test.exe -i \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} -p 15-24 -r 100 -o
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T131700_per_port_counts_windows.csv
Using interface \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} (Realtek USB GbE Family Controller)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = Yes
Press Ctrl-C to stop test at end of next test interval

13:17:10.811
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       113082              0         113067              0              8              0              0        11308.2          13.95

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

13:17:20.811
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       113206              0         113210              0              0              0              0        11320.6          13.97

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

13:17:30.811
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       114011              0         114014              0              0              0              0        11401.1          14.06

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

13:17:40.811
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       112810              0         112811              0              0              0              0        11281.0          13.92

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

13:17:50.812
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       113730              0         113726              0              0              0              0        11373.0          14.03

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0
Max pending rx frames = 1 out of 36

The above is the highest frame rate seen under Windows so far. However, on other runs with the same options have seen a per-port frame rate of 5.7 Mbps. Therefore, preventing the receipt of the transmitted frames isn't a reliable way of increasing the transmited frame rate.

Running with the snaplen increased to 65536, compared to the 26 needed by the test, didn't reduce performance:

C:\Users\mr_halfword\Git-projects\switch_test\Release>switch_test.exe -i \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} -p 15-24 -r 100 -l 65536 -o 
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T150207_per_port_counts_windows.csv
Using interface \Device\NPF_{DC221D9D-6EC6-4301-8EBB-CF0EFFD195C6} (Realtek USB GbE Family Controller)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = Yes
snaplen = 65536
Press Ctrl-C to stop test at end of next test interval

15:02:17.864
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       111498              0         111492              0              0              0              0        11149.7          13.75

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

15:02:27.864
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       113939              0         113935              0              0              0              0        11394.0          14.06

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

15:02:37.864
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       114192              0         114189              0              0              0              0        11419.2          14.09

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0

15:02:47.864
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       113387              0         113386              0              0              0              0        11338.7          13.99

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  .........
Total test intervals with failures = 0
Max pending rx frames = 1 out of 36

3. HP Z6 G4 openSUSE Leap 15.5

The same PC as used for the Windows 11 tests, but booted from a openSUSE Leap 15.5 live image on a SDCARD in a USB to SDCARD adapter. Kernel 5.14.21-150500.55.62-default.

Has enumerated as interface eth15:

linux@DESKTOP-BVUMP11:~/switch_test/Release> sudo /usr/sbin/ethtool enp6s0u2
Settings for eth15:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Half 1000baseT/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
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/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

With the default snaplen the test passes with the full bandwidth achieved:

linux@DESKTOP-BVUMP11:~/switch_test/Release> ./switch_test -i eth15 -p 15-24 -r 100
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T171249_per_port_counts_linux.csv
Using interface eth15 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 26
Press Ctrl-C to stop test at end of next test interval

17:12:59.573
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810471              0         810294              0              8              0              0        81047.0          99.98

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:13:09.572
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810649              0         810663              0              0              9              0        81065.0         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:13:19.572
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810644              0         810642              0              0              3              0        81064.4         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
^C
17:13:29.572
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810654              0         810643              0              0              2              0        81064.7         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
Max pending rx frames = 3 out of 36

With a snaplen of 65536 get some missed frames:

linux@DESKTOP-BVUMP11:~/switch_test/Release> ./switch_test -i eth15 -p 15-24 -r 100 -l 65536
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T175505_per_port_counts_linux.csv
Using interface eth15 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 65536
Press Ctrl-C to stop test at end of next test interval

17:55:15.149
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810428              0         810165              0              8              2             88        81042.7          99.97

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   SSSSSS..S
    16  S SSSSSS..
    17  SS SSSSSS.
    18  .SS .SSSSS
    19  ..SS SSSSS
    20  S...S SSSS
    21  SSS.SS SSS
    22  SSSS.SS SS
    23  SSSSS..S S
    24  SSSSSS..S 
PCAP statistics : ps_recv=810283 ps_drop=88 ps_ifdrop=0
Total test intervals with failures = 1 : last failure NOW

17:55:25.149
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810652              0         810428              0              0             10            214        81063.6         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   SSSSS.SSS
    16  S SSSSS.SS
    17  SS SSSSS.S
    18  SSS SSSSS.
    19  SSSS S.SSS
    20  .SSSS SSSS
    21  S.SSSS SSS
    22  SS.SSSS SS
    23  SSSSSSSS S
    24  SSSSSSSSS 
PCAP statistics : ps_recv=1620956 ps_drop=311 ps_ifdrop=0
Total test intervals with failures = 2 : last failure NOW
^C
17:55:35.149
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810633              0              0              3              9        81064.5         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . .....SS.
    17  .. ......S
    18  ... ......
    19  S... .....
    20  .S... ....
    21  ..S... ...
    22  ...S... ..
    23  ....SS.. .
    24  ......... 
PCAP statistics : ps_recv=2431601 ps_drop=320 ps_ifdrop=0
Total test intervals with failures = 3 : last failure NOW
Max pending rx frames = 3 out of 36

With a snaplen of 32768 some missed frames on the 1st test iteration:

linux@DESKTOP-BVUMP11:~/switch_test/Release> ./switch_test -i eth15 -p 15-24 -r 100 -l 32768
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T175616_per_port_counts_linux.csv
Using interface eth15 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 32768
Press Ctrl-C to stop test at end of next test interval

17:56:26.169
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810427              0         810219              0              0              0             38        81042.7          99.97

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   SSSSS....
    16  . S..SS...
    17  .. SSSSS..
    18  ... SS.SS.
    19  .... .SSSS
    20  ..... SSSS
    21  S..... .SS
    22  SS..... .S
    23  SSS..... .
    24  SSSS..... 
PCAP statistics : ps_recv=810278 ps_drop=38 ps_ifdrop=0
Total test intervals with failures = 1 : last failure NOW

17:56:36.168
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810653              0         810643              0              0              0              0        81064.5         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 1 : last failure 17:56:26.169

17:56:46.168
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810640              0         810642              0              0              0              0        81064.8         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 1 : last failure 17:56:26.169
^C
17:56:56.168
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810647              0         810662              0              0              0              0        81064.7         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 1 : last failure 17:56:26.169
Max pending rx frames = 3 out of 36

With a snaplen on 16384 the test was successful and achived the full bandwidth:

linux@DESKTOP-BVUMP11:~/switch_test/Release> ./switch_test -i eth15 -p 15-24 -r 100 -l 16384
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T175752_per_port_counts_linux.csv
Using interface eth15 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 16384
Press Ctrl-C to stop test at end of next test interval

17:58:02.536
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810435              0         810270              0              0              0              0        81043.5          99.98

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:58:12.536
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810650              0         810643              0              0              0              0        81064.1         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

17:58:22.536
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810631              0         810621              0              0              0              0        81063.7         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
^C
17:58:32.536
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810667              0         810679              0              0              0              0        81067.0         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
Max pending rx frames = 3 out of 36

Also left running for 65 minutes with no errors:

linux@DESKTOP-BVUMP11:~/switch_test/Release> ./switch_test -i eth15 -p 15-24 -r 100 -l 16384
Bit rate on interface to injection switch = 1000 (Mbps)
Requested bit rate to be generated on each switch port under test = 100.00 (Mbps)
Not limiting frame rate, as bit-rate on interface to injection switch doesn't exceed the total across all switch ports under test
Writing per-port counts to 20250518T191734_per_port_counts_linux.csv
Using interface eth15 (No description available)
Test interval = 10 (secs)
Frame debug enabled = No
Rx filter enabled = No
Use pcap_open() = No
snaplen = 16384
Press Ctrl-C to stop test at end of next test interval

19:17:44.996
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810491              0         810333              0              8              0              0        81049.1          99.98

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0

19:17:54.996
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810654              0         810643              0              0              0              0        81064.7         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
<<snip>>

20:23:54.996
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810654              0         810642              0              0              0              0        81065.4         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
^C
20:24:04.996
      Tx Test        Tx Copy        Rx Test  Rx Unexpected     Rx Flooded       Rx Other  missed frames   tx rate (Hz)  per port Mbps
       810642              0         810643              0              0              0              0        81063.7         100.00

Summary of missed frames : '.' none missed 'S' some missed 'A' all missed
Source  Destination ports --->
  port  1111122222
        5678901234
    15   .........
    16  . ........
    17  .. .......
    18  ... ......
    19  .... .....
    20  ..... ....
    21  ...... ...
    22  ....... ..
    23  ........ .
    24  ......... 
Total test intervals with failures = 0
Max pending rx frames = 3 out of 36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment