2022-04-07 12:12:55

by Sven Schwermer

[permalink] [raw]
Subject: [PATCH v1 2/2] net: usb: cdc_ether: Add Fibocom MA510 modem

From: Sven Schwermer <[email protected]>

+GTUSBMODE: 31
--------------
T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 99 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2cb7 ProdID=0106 Rev= 0.00
S: Manufacturer=Fibocom MA510 Modem
S: Product=Fibocom MA510 Modem
S: SerialNumber=55e2695b
C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
A: FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=82(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
E: Ad=86(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

+GTUSBMODE: 32
--------------
T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=100 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2cb7 ProdID=010a Rev= 0.00
S: Manufacturer=Fibocom MA510 Modem
S: Product=Fibocom MA510 Modem
S: SerialNumber=55e2695b
C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
A: FirstIf#= 2 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
I: If#= 3 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:* If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Signed-off-by: Sven Schwermer <[email protected]>
---
drivers/net/usb/cdc_ether.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index b09b5567aea2..c9367587698e 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -1005,6 +1005,18 @@ static const struct usb_device_id products[] = {
USB_CDC_SUBCLASS_ETHERNET,
USB_CDC_PROTO_NONE),
.driver_info = (unsigned long)&wwan_info,
+}, {
+ /* Fibocom MA510 (+GTUSBMODE=31) */
+ USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0106, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET,
+ USB_CDC_PROTO_NONE),
+ .driver_info = (unsigned long)&wwan_info,
+}, {
+ /* Fibocom MA510 (+GTUSBMODE=32) */
+ USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010a, USB_CLASS_COMM,
+ USB_CDC_SUBCLASS_ETHERNET,
+ USB_CDC_PROTO_NONE),
+ .driver_info = (unsigned long)&wwan_info,
}, {
USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
USB_CDC_PROTO_NONE),
--
2.35.1


2022-04-08 01:43:36

by Lars Melin

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] net: usb: cdc_ether: Add Fibocom MA510 modem

On 4/7/2022 14:47, [email protected] wrote:
> From: Sven Schwermer <[email protected]>
>
> +GTUSBMODE: 31
> --------------
> T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 99 Spd=480 MxCh= 0
> D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
> P: Vendor=2cb7 ProdID=0106 Rev= 0.00
> S: Manufacturer=Fibocom MA510 Modem
> S: Product=Fibocom MA510 Modem
> S: SerialNumber=55e2695b
> C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
> A: FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
> I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
> E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
> E: Ad=82(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
> E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
> E: Ad=86(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> I: If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
>
> +GTUSBMODE: 32
> --------------
> T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=100 Spd=480 MxCh= 0
> D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
> P: Vendor=2cb7 ProdID=010a Rev= 0.00
> S: Manufacturer=Fibocom MA510 Modem
> S: Product=Fibocom MA510 Modem
> S: SerialNumber=55e2695b
> C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
> A: FirstIf#= 2 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
> I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
> E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
> E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
> E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
> I: If#= 3 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> I:* If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
> E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
> E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
>
> Signed-off-by: Sven Schwermer <[email protected]>
> ---
> drivers/net/usb/cdc_ether.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
> index b09b5567aea2..c9367587698e 100644
> --- a/drivers/net/usb/cdc_ether.c
> +++ b/drivers/net/usb/cdc_ether.c
> @@ -1005,6 +1005,18 @@ static const struct usb_device_id products[] = {
> USB_CDC_SUBCLASS_ETHERNET,
> USB_CDC_PROTO_NONE),
> .driver_info = (unsigned long)&wwan_info,
> +}, {
> + /* Fibocom MA510 (+GTUSBMODE=31) */
> + USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x0106, USB_CLASS_COMM,
> + USB_CDC_SUBCLASS_ETHERNET,
> + USB_CDC_PROTO_NONE),
> + .driver_info = (unsigned long)&wwan_info,
> +}, {
> + /* Fibocom MA510 (+GTUSBMODE=32) */
> + USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010a, USB_CLASS_COMM,
> + USB_CDC_SUBCLASS_ETHERNET,
> + USB_CDC_PROTO_NONE),
> + .driver_info = (unsigned long)&wwan_info,
> }, {
> USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
> USB_CDC_PROTO_NONE),

Why do you add this modem to the whitelist?
The net interface has the correct cdc_ether attributes so the cdc_ether
driver should bind automagically without any need for the modem to be in
the whitelist.

thanks
Lars

2022-04-12 03:17:39

by Sven Schwermer

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] net: usb: cdc_ether: Add Fibocom MA510 modem

Hi Lars,

On 4/8/22 15:35, Bjørn Mork wrote:
> Lars Melin <[email protected]> writes:
>
>> Why do you add this modem to the whitelist?
>
> I believe the clue is the
>
>> + .driver_info = (unsigned long)&wwan_info,
>
> to set FLAG_WWAN instead of the default FLAG_ETHER | FLAG_POINTTOPOINT

Bjørn is right that this is the reason. The Fibocom MA510 and L610 are
cellular modems, so they require to be labelled as WWAN devices. As such
they require to be set up (using AT commands or similar) before the
connection can be used. Furthermore, WWAN devices get a different
routing metric assigned by the network manager than regular Ethernet
devices.

>> The net interface has the correct cdc_ether attributes so the
>> cdc_ether driver should bind automagically without any need for the
>> modem to be in the whitelist.
>
> Yes, this sort of works against the class driver philosophy. But we've
> already started down that road, so...
>
>
>
> Bjørn

2022-04-12 08:44:29

by Bjørn Mork

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] net: usb: cdc_ether: Add Fibocom MA510 modem

Lars Melin <[email protected]> writes:

> Why do you add this modem to the whitelist?

I believe the clue is the

> + .driver_info = (unsigned long)&wwan_info,

to set FLAG_WWAN instead of the default FLAG_ETHER | FLAG_POINTTOPOINT

> The net interface has the correct cdc_ether attributes so the
> cdc_ether driver should bind automagically without any need for the
> modem to be in the whitelist.

Yes, this sort of works against the class driver philosophy. But we've
already started down that road, so...



Bjørn