Message ID | 20220407074745.74195-1-sven@svenschwermer.de |
---|---|
State | New |
Headers | show |
Series | [v1,1/2] net: usb: cdc_ether: Add Fibocom L610 modem | expand |
On 4/7/2022 14:47, sven@svenschwermer.de wrote: > From: Sven Schwermer <sven.schwermer@disruptive-technologies.com> > > +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 <sven.schwermer@disruptive-technologies.com> > --- > 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
On 4/7/2022 14:47, sven@svenschwermer.de wrote: > From: Sven Schwermer <sven.schwermer@disruptive-technologies.com> > > T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=122 Spd=480 MxCh= 0 > D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 > P: Vendor=1782 ProdID=4d11 Rev= 0.00 > S: Manufacturer=FIBOCOM > S: Product=L610 > C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA > A: FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00 > I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether > E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=32ms > I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether > I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether > E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option > E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms > E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms > > Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com> > --- > drivers/net/usb/cdc_ether.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c > index 9b4dfa3001d6..b09b5567aea2 100644 > --- a/drivers/net/usb/cdc_ether.c > +++ b/drivers/net/usb/cdc_ether.c > @@ -999,6 +999,12 @@ static const struct usb_device_id products[] = { > USB_CDC_SUBCLASS_ETHERNET, > USB_CDC_PROTO_NONE), > .driver_info = (unsigned long)&wwan_info, > +}, { > + /* Fibocom L610 (+GTUSBMODE=32) */ > + USB_DEVICE_AND_INTERFACE_INFO(0x1782, 0x4d11, 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), The same question for this one, why added to the whitelist? thanks Lars
Lars Melin <larsm17@gmail.com> 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
Hi Lars, On 4/8/22 15:35, Bjørn Mork wrote: > Lars Melin <larsm17@gmail.com> 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
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index 9b4dfa3001d6..b09b5567aea2 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c @@ -999,6 +999,12 @@ static const struct usb_device_id products[] = { USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&wwan_info, +}, { + /* Fibocom L610 (+GTUSBMODE=32) */ + USB_DEVICE_AND_INTERFACE_INFO(0x1782, 0x4d11, 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),