aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/function/f_rmnet.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/function/f_rmnet.c')
-rw-r--r--drivers/usb/gadget/function/f_rmnet.c9
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__);