[Bug 244845] ue0 realtek interface stops working after some time connection stalls problem down->up helps unitek Y-3083B

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 10 Oct 2025 01:09:43 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244845

Ewen Crawford <eacrawford02@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |eacrawford02@gmail.com

--- Comment #25 from Ewen Crawford <eacrawford02@gmail.com> ---
I just wanted to corroborate my own positive experience after switching over to
the if_cdce kernel module with the RTL8153 USB to Ethernet controller. It
appears to have resolved the network stability issues I was seeing earlier
where the interface would lock up after being stressed (in my case that would
occur some time after initiating an uninterrupted upload). I'm not sure if this
improvement is due to avoiding a hardware bug by putting the controller into
CDC-ECM mode by selecting configuration index 1 or if it is due to avoiding a
software bug in the if_ure kernel module. Unfortunately this has come at the
cost of performance: rx speed is down by roughly a factor of 10 (~900 Mb/s ->
~90 Mb/s) and tx speed is down to ~500 Mb/s from ~900 Mb/s. I presume this is
due to the ECM protocol being simpler/slower than whatever protocol is used
under the vendor-specific mode when configuration index 0 is selected, although
it's odd that the reduction has been so asymmetrical.

Anyway, in order to have the configuration index selection of 1 persist through
reboots, I had to add the following line to /boot/loader.conf:

hw.usb.quirk.0="<idVendor> <idProduct> 0 0xffff UQ_CFG_INDEX_1"

And then in /etc/devd.conf (so that the device is configured correctly when
de-attached then re-attached):

notify 100 {
        match "system"          "USB";
        match "subsystem"       "DEVICE";
        match "type"            "ATTACH";
        match "vendor"          "<idVendor>";
        match "product"         "<idProduct>";
        # The $ugen variable is not documented in devd but should also work in
        # place of $cdev (tested only on this system)
        action "/usr/sbin/usbconfig -d $ugen set_config 1";
};

<idVendor> and <idProduct> can be found with usbconfig. FYI, this is all on
14.1, not sure if things have improved in newer releases.

-- 
You are receiving this mail because:
You are the assignee for the bug.