usbnet: Set duplex status to unknown in the absence of MII

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>
This commit is contained in:
Yi Cong 2025-07-24 09:31:33 +08:00 committed by Jakub Kicinski
parent f6c650c8d8
commit a75afcd188

View 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);