From c847ff789f0150a91022a75775267bd17cf70d06 Mon Sep 17 00:00:00 2001 From: Shaoxu Liu Date: Tue, 2 Jun 2026 17:05:27 +0800 Subject: [PATCH 1/2] rndis_host: add Telit LE310X1 RNDIS USB ID Add a device match entry for Telit Cinterion LE310X1 RNDIS interface (VID:PID 1bc7:7030). This is a functional no-op and keeps using the generic rndis_info for now. Power-management behavior is handled in a follow-up patch. Signed-off-by: Shaoxu Liu Reviewed-by: Andrew Lunn Link: https://patch.msgid.link/tencent_F1AF1F5AD39C56485BD16C6DB2415E5B9508@qq.com Signed-off-by: Jakub Kicinski --- drivers/net/usb/rndis_host.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index 7b3739b29c8f..46eab7bda003 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c @@ -657,6 +657,11 @@ static const struct usb_device_id products [] = { /* RNDIS is MSFT's un-official variant of CDC ACM */ USB_INTERFACE_INFO(USB_CLASS_COMM, 2 /* ACM */, 0x0ff), .driver_info = (unsigned long) &rndis_info, +}, { + /* Telit Cinterion LE310X1 RNDIS */ + USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030, + USB_CLASS_WIRELESS_CONTROLLER, 1, 3), + .driver_info = (unsigned long)&rndis_info, }, { /* "ActiveSync" is an undocumented variant of RNDIS, used in WM5 */ USB_INTERFACE_INFO(USB_CLASS_MISC, 1, 1), From 3dfc7fe1d553b09bb02dca7ca808b6be87ed3dea Mon Sep 17 00:00:00 2001 From: Shaoxu Liu Date: Tue, 2 Jun 2026 17:05:28 +0800 Subject: [PATCH 2/2] rndis_host: enable power management for Telit LE310X1 Enable autosuspend support for Telit Cinterion LE310X1 RNDIS interface by selecting a driver_info variant with manage_power callback. This keeps power management scoped to the new Telit ID only, and avoids changing behavior for all existing RNDIS devices. Signed-off-by: Shaoxu Liu Reviewed-by: Andrew Lunn Link: https://patch.msgid.link/tencent_B7686B84CD4B76D76BB912FA6367FAC2CA05@qq.com Signed-off-by: Jakub Kicinski --- drivers/net/usb/rndis_host.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index 46eab7bda003..5e39d05a2d7b 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c @@ -630,6 +630,17 @@ static const struct driver_info zte_rndis_info = { .tx_fixup = rndis_tx_fixup, }; +static const struct driver_info rndis_info_lowpower = { + .description = "RNDIS device", + .flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT, + .bind = rndis_bind, + .unbind = rndis_unbind, + .status = rndis_status, + .rx_fixup = rndis_rx_fixup, + .tx_fixup = rndis_tx_fixup, + .manage_power = usbnet_manage_power, +}; + /*-------------------------------------------------------------------------*/ static const struct usb_device_id products [] = { @@ -661,7 +672,7 @@ static const struct usb_device_id products [] = { /* Telit Cinterion LE310X1 RNDIS */ USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030, USB_CLASS_WIRELESS_CONTROLLER, 1, 3), - .driver_info = (unsigned long)&rndis_info, + .driver_info = (unsigned long)&rndis_info_lowpower, }, { /* "ActiveSync" is an undocumented variant of RNDIS, used in WM5 */ USB_INTERFACE_INFO(USB_CLASS_MISC, 1, 1),