]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usbnet: Set duplex status to unknown in the absence of MII
authorYi Cong <yicong@kylinos.cn>
Thu, 24 Jul 2025 01:31:33 +0000 (09:31 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 25 Jul 2025 18:05:22 +0000 (11:05 -0700)
Currently, USB CDC devices that do not use MDIO to get link status have
their duplex mode set to half-duplex by default. However, since the CDC
specification does not define a duplex status, this can be misleading.

This patch changes the default to DUPLEX_UNKNOWN in the absence of MII,
which more accurately reflects the state of the link and avoids implying
an incorrect or error state.

Link: https://lore.kernel.org/all/20250723152151.70a8034b@kernel.org/
Signed-off-by: Yi Cong <yicong@kylinos.cn>
Acked-by: Oliver Neukum <oneukum@suse.com>
Link: https://patch.msgid.link/20250724013133.1645142-1-yicongsrfy@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/usbnet.c

index 921c05bc73e30cb166acf42900f653811fe6efa8..a8d50dd93d12c1e30ad2fe1ae53515af76785b2c 100644 (file)
@@ -1013,6 +1013,13 @@ int usbnet_get_link_ksettings_internal(struct net_device *net,
        else
                cmd->base.speed = SPEED_UNKNOWN;
 
+       /* The standard "Universal Serial Bus Class Definitions
+        * for Communications Devices v1.2" does not specify
+        * anything about duplex status.
+        * So set it DUPLEX_UNKNOWN instead of default DUPLEX_HALF.
+        */
+       cmd->base.duplex = DUPLEX_UNKNOWN;
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(usbnet_get_link_ksettings_internal);