public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
* [PATCH] Add power management op for RNDIS host
@ 2026-05-19  7:28 Ivanl S
  2026-05-19  9:29 ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Ivanl S @ 2026-05-19  7:28 UTC (permalink / raw)
  To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni
  Cc: GitAuthor: Shaoxu Liu, linux-usb, netdev, linux-kernel

From bf417c9c1c22f8d335ec361d6fb5759fd167733a Mon Sep 17 00:00:00 2001
From bf417c9c1c22f8d335ec361d6fb5759fd167733a Mon Sep 17 00:00:00 2001
From: Shaoxu Liu <shaoxu.liu@telit•com> Date: Tue, 19 May 2026
13:49:06 +0800 Subject: [PATCH] Add power management op for RNDIS host
RNDIS host does not manage the USB power, and it will cause more power
consumption even when no data transferring. Adding the power
management operator will make the USB enter suspend mode when no data
transferring. --- drivers/net/usb/rndis_host.c | 16 ++++++++++++++++ 1
file changed, 16 insertions(+) diff --git
a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index
7b3739b29..76eb65fd5 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 [] = { @@ -657,6 +668,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, +}, { +
/* RNDIS for Telit Cinterion low power LTE cat1biz modules LE310X1*/ +
USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030, +
USB_CLASS_WIRELESS_CONTROLLER, 1, 3), + .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), -- 2.25.1 Signed-off-by: Shaoxu Liu <shaoxul@gmail•com>

^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH] Add power management op for RNDIS host
@ 2026-05-27  7:47 Shaoxu Liu
  2026-05-27  7:55 ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Shaoxu Liu @ 2026-05-27  7:47 UTC (permalink / raw)
  To: andrew+netdev, davem, edumazet, kuba, pabeni
  Cc: shaoxul, linux-usb, netdev, linux-kernel

RNDIS host does not manage the USB power, and it will
cause more power consumption even when no data transferring.

Adding the power management operator will make the USB
enter suspend mode when no data transferring.
---
 drivers/net/usb/rndis_host.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 7b3739b29..76eb65fd5 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 [] = {
@@ -657,6 +668,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,
+}, {
+	/* RNDIS for Telit Cinterion low power LTE cat1biz modules LE310X1*/
+	USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030,
+				      USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
+	.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),
-- 
2.25.1
Signed-off-by: Shaoxu Liu <shaoxul@foxmail•com>


^ permalink raw reply related	[flat|nested] 7+ messages in thread
* [PATCH] Add power management op for RNDIS host
@ 2026-05-27  8:24 Shaoxu Liu
  0 siblings, 0 replies; 7+ messages in thread
From: Shaoxu Liu @ 2026-05-27  8:24 UTC (permalink / raw)
  To: andrew+netdev, davem, edumazet, kuba, pabeni
  Cc: shaoxul, linux-usb, netdev, linux-kernel

RNDIS host does not manage the USB power, and it will
cause more power consumption even when no data transferring.

Adding the power management operator will make the USB
enter suspend mode when no data transferring.

Signed-off-by: Shaoxu Liu <shaoxul@foxmail•com>
---
 drivers/net/usb/rndis_host.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 7b3739b29..76eb65fd5 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 [] = {
@@ -657,6 +668,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,
+}, {
+	/* RNDIS for Telit Cinterion low power LTE cat1biz modules LE310X1*/
+	USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030,
+				      USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
+	.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),
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread
* [PATCH] Add power management op for RNDIS host
@ 2026-06-01  3:29 Shaoxu Liu
  2026-06-01 13:09 ` Andrew Lunn
  0 siblings, 1 reply; 7+ messages in thread
From: Shaoxu Liu @ 2026-06-01  3:29 UTC (permalink / raw)
  To: andrew+netdev, davem, edumazet, kuba, pabeni
  Cc: shaoxul, linux-usb, netdev, linux-kernel

RNDIS host does not manage the USB power, and it will
cause more power consumption even when no data transferring.

Adding the power management operator will make the USB
enter suspend mode when no data transferring.

Signed-off-by: Shaoxu Liu <shaoxul@foxmail•com>
---
 drivers/net/usb/rndis_host.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 7b3739b29..76eb65fd5 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 [] = {
@@ -657,6 +668,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,
+}, {
+	/* RNDIS for Telit Cinterion low power LTE cat1biz modules LE310X1*/
+	USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x7030,
+				      USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
+	.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),
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-06-01 13:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-19  7:28 [PATCH] Add power management op for RNDIS host Ivanl S
2026-05-19  9:29 ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2026-05-27  7:47 Shaoxu Liu
2026-05-27  7:55 ` Greg KH
2026-05-27  8:24 Shaoxu Liu
2026-06-01  3:29 Shaoxu Liu
2026-06-01 13:09 ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox