Commit 67d1a895 authored by Lubomir Rintel's avatar Lubomir Rintel Committed by Jakub Kicinski
Browse files

rndis_host: Flag RNDIS modems as WWAN devices



Set FLAG_WWAN instead of FLAG_ETHERNET for RNDIS interfaces on Mobile
Broadband Modems, as opposed to regular Ethernet adapters.

Otherwise NetworkManager gets confused, misjudges the device type,
and wouldn't know it should connect a modem to get the device to work.
What would be the result depends on ModemManager version -- older
ModemManager would end up disconnecting a device after an unsuccessful
probe attempt (if it connected without needing to unlock a SIM), while
a newer one might spawn a separate PPP connection over a tty interface
instead, resulting in a general confusion and no end of chaos.

The only way to get this work reliably is to fix the device type
and have good enough version ModemManager (or equivalent).

Fixes: 63ba395c ("rndis_host: support Novatel Verizon USB730L")
Signed-off-by: default avatarLubomir Rintel <lkundrak@v3.sk>
Link: https://patch.msgid.link/20250325095842.1567999-1-lkundrak@v3.sk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 23f00807
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -630,6 +630,16 @@ static const struct driver_info zte_rndis_info = {
	.tx_fixup =	rndis_tx_fixup,
};

static const struct driver_info	wwan_rndis_info = {
	.description =	"Mobile Broadband RNDIS device",
	.flags =	FLAG_WWAN | 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,
};

/*-------------------------------------------------------------------------*/

static const struct usb_device_id	products [] = {
@@ -666,9 +676,11 @@ static const struct usb_device_id products [] = {
	USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
	.driver_info = (unsigned long) &rndis_info,
}, {
	/* Novatel Verizon USB730L */
	/* Mobile Broadband Modem, seen in Novatel Verizon USB730L and
	 * Telit FN990A (RNDIS)
	 */
	USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
	.driver_info = (unsigned long) &rndis_info,
	.driver_info = (unsigned long)&wwan_rndis_info,
},
	{ },		// END
};