Help with Realtek RTL8156 USB 2.5G NIC not working and cdc_ncm syslog flooding

From: Jody Bruchon
Date: Thu Aug 27 2020 - 12:51:57 EST


Note: please CC me in replies since I'm not subscribed to LKML.

I have a RTL8156-based USB 3.0 to 2.5G NBASE-T ethernet adapter made by Plugable and I'm using a recently compiled Linux 5.8.1 (I checked changelogs up to the current 5.8.5 release and didn't see anything relevant mentioned). It's supposed to work with the cdc_ncm driver, but the sheer amount of syslog spam by cdc_ncm regardless of link state is astonishing, and the adapter behaves erratically as well. This is the log spam from one single second with the interface up but no network cable attached:

[173944.031631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.063629] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.095630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.127628] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.159630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.191629] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.223631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.255631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.287630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.319630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.351627] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.383633] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.415627] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.447627] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.479631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.511631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.543630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.575629] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.607628] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.639628] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.671630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.703629] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.735631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.767631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.799622] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.831629] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.863630] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.895634] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.927631] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.959633] cdc_ncm 2-4:2.0 usb0: network connection: disconnected
[173944.991628] cdc_ncm 2-4:2.0 usb0: network connection: disconnected

It's just as bad when the link is up:

[174451.007591] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.039592] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.071637] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.103630] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.135630] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.167630] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.199631] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.231622] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.263634] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.295631] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.327629] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.359628] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.391631] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.423629] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.455631] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.487630] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.519632] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.551629] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.583629] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.615634] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.647631] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.679628] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.711632] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.743631] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.775630] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.807627] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.839630] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.871628] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.903631] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.935628] cdc_ncm 2-4:2.0 usb0: network connection: connected
[174451.967629] cdc_ncm 2-4:2.0 usb0: 2500 mbit/s downlink 2500 mbit/s uplink
[174451.999633] cdc_ncm 2-4:2.0 usb0: network connection: connected

This is what the lsusb -v output looks like for the device:

Bus 002 Device 002: ID 0bda:8156 Realtek Semiconductor Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         9
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x8156
  bcdDevice           30.00
  iManufacturer           1 Realtek
  iProduct                2 USB 10/100/1G/2.5G LAN
  iSerial                 6 000000001
  bNumConfigurations      3
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           57
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              128mA
    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               4
      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               4
      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               1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          104
    bNumInterfaces          2
    bConfigurationValue     2
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              128mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass     13
      bInterfaceProtocol      0
      iInterface              5 CDC Communications Control
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      3 8CAE4CDD0417
        bmEthernetStatistics    0x0031500f
        wMaxSegmentSize               1518
        wNumberMCFilters            0x8000
        bNumberPowerFilters              0
      UNRECOGNIZED CDC:  06 24 1a 00 01 2b
      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               8
        bMaxBurst               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      1
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      1
      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               4
      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               4
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           98
    bNumInterfaces          2
    bConfigurationValue     3
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              128mA
    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 8CAE4CDD0417
        bmEthernetStatistics    0x0031500f
        wMaxSegmentSize               1518
        wNumberMCFilters            0x8000
        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               8
        bMaxBurst               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface              4 Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               4
      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               4
Device Status:     0x001c
  (Bus Powered)
  Test Mode

If I do this, then it switches from 'usb0' to 'eth1':

/sys/devices/pci0000:00/0000:00:15.0/usb2/2-4 # echo 3 > bConfigurationValue

Regardless of whether I try to use it as eth1 or usb0, it does not communicate. I have turned off USB autosuspend for the device, but with no change:

/sys/devices/pci0000:00/0000:00:15.0/usb2/2-4 # cat power/control
on

At this point, I don't know what else to try. My understanding is that cdc_ncm supports this device and the Realtek-provided driver shouldn't be needed anymore. The r8152 driver already in the kernel doesn't pick up this device.

Any help would be greatly appreciated.

- Jody Bruchon