Kernel Newbie <kernelfanatic@xxxxxxxxx> writes: > In the 3.4 kernel, we have observed that the RNDIS function driver clears > the string id reference to 0 during unbind. And, during bind, we see that > the rndis_init() itself is initiated only when the RNDIS string id reference > is 0. Is this ok? > > The issue behind this query is: > As rndis is requesting a new string id during every bind, during dynamic > function switches (e.g. enable tethering/disable tethering) RNDIS gets a > new string id for its descriptor from the composite framework. When connecting > to a Windows host, due to the string id changes, the device manager treats > this as a new instance of the device and requests for driver installation > during every connect. If you reconfigure the whole composite gadget, what guarantee do you have that those ID's will be available? They could be assigned to completely unrelated strings. > When I did the below changes, the above issue is not seen anymore. Can > you provide > your views on this? > > --Change-- > diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c > index 6cfbb5b..3c12c42 100644 > --- a/drivers/usb/gadget/f_rndis.c > +++ b/drivers/usb/gadget/f_rndis.c > @@ -820,7 +820,7 @@ rndis_unbind(struct usb_configuration *c, struct > usb_function *f) > > rndis_deregister(rndis->config); > rndis_exit(); > - rndis_string_defs[0].id = 0; > > if (gadget_is_superspeed(c->cdev->gadget)) > usb_free_descriptors(f->ss_descriptors); > @@ -869,14 +869,13 @@ rndis_bind_config_vendor(struct > usb_configuration *c, u8 ethaddr[ETH_ALEN], > if (!can_support_rndis(c) || !ethaddr) > return -EINVAL; > > + /* ... and setup RNDIS itself */ > + status = rndis_init(); > + if (status < 0) > + return status; > + > /* maybe allocate device-global string IDs */ > if (rndis_string_defs[0].id == 0) { > - > - /* ... and setup RNDIS itself */ > - status = rndis_init(); > - if (status < 0) > - return status; > - > /* control interface label */ > status = usb_string_id(c->cdev); > if (status < 0) > --End-- > > Thanks, > Balakumar R > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz (o o) ooo +----<email/xmpp: mpn@xxxxxxxxxx>--------------ooO--(_)--Ooo--
Attachment:
pgpCuu2OA8doY.pgp
Description: PGP signature