diff options
author | Andrzej Pietrasiewicz <andrzej.p@samsung.com> | 2014-05-08 14:06:27 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2014-05-14 09:39:36 -0500 |
commit | a747b0958b5ead2d4ba46dc1f77d46e693a06efa (patch) | |
tree | a74a43d04c3518f76c7604cebf1e325a3d5182a8 | |
parent | da4243145fb197622425d4c2feff5d6422f2391e (diff) |
usb: gadget: f_rndis: OS Descriptors configfs support
Added handling of OS Descriptors support for f_rndis.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r-- | drivers/usb/gadget/f_rndis.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c index 28d1891f11fa..f1bf5763eac4 100644 --- a/drivers/usb/gadget/f_rndis.c +++ b/drivers/usb/gadget/f_rndis.c @@ -27,6 +27,7 @@ #include "u_ether_configfs.h" #include "u_rndis.h" #include "rndis.h" +#include "configfs.h" /* * This function is an RNDIS Ethernet port -- a Microsoft protocol that's @@ -895,12 +896,15 @@ static void rndis_free_inst(struct usb_function_instance *f) else free_netdev(opts->net); } + + kfree(opts->rndis_os_desc.group.default_groups); /* single VLA chunk */ kfree(opts); } static struct usb_function_instance *rndis_alloc_inst(void) { struct f_rndis_opts *opts; + struct usb_os_desc *descs[1]; opts = kzalloc(sizeof(*opts), GFP_KERNEL); if (!opts) @@ -917,6 +921,9 @@ static struct usb_function_instance *rndis_alloc_inst(void) } INIT_LIST_HEAD(&opts->rndis_os_desc.ext_prop); + descs[0] = &opts->rndis_os_desc; + usb_os_desc_prepare_interf_dir(&opts->func_inst.group, 1, descs, + THIS_MODULE); config_group_init_type_name(&opts->func_inst.group, "", &rndis_func_type); |