diff options
Diffstat (limited to 'drivers/usb/gadget/function/f_rmnet.c')
| -rw-r--r-- | drivers/usb/gadget/function/f_rmnet.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/gadget/function/f_rmnet.c b/drivers/usb/gadget/function/f_rmnet.c index df153571..3a26cc2b 100644 --- a/drivers/usb/gadget/function/f_rmnet.c +++ b/drivers/usb/gadget/function/f_rmnet.c @@ -553,6 +553,7 @@ static int gport_rmnet_disconnect(struct f_rmnet *dev) static void frmnet_unbind(struct usb_configuration *c, struct usb_function *f) { struct f_rmnet *dev = func_to_rmnet(f); + enum transport_type dxport = rmnet_ports[dev->port_num].data_xport; pr_debug("%s: portno:%d\n", __func__, dev->port_num); if (gadget_is_superspeed(c->cdev->gadget)) @@ -562,7 +563,10 @@ static void frmnet_unbind(struct usb_configuration *c, struct usb_function *f) usb_free_descriptors(f->fs_descriptors); frmnet_free_req(dev->notify, dev->notify_req); - + if (dxport == USB_GADGET_XPORT_BAM2BAM_IPA) { + gbam_data_flush_workqueue(); + c->cdev->gadget->bam2bam_func_enabled = false; + } kfree(f->name); } @@ -1318,6 +1322,9 @@ static int frmnet_bind_config(struct usb_configuration *c, unsigned portno) kfree(f->name); return status; } + if (rmnet_ports[portno].data_xport == + USB_GADGET_XPORT_BAM2BAM_IPA) + c->cdev->gadget->bam2bam_func_enabled = true; pr_debug("%s: complete\n", __func__); |
