Kernel Newbie <[email protected]> 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 [email protected]
> 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: [email protected]>--------------ooO--(_)--Ooo--
pgpOsMWv9VEdM.pgp
Description: PGP signature
