|
@@ -543,22 +543,20 @@ static int rndis_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
|
|
|
/* we know alt == 0 */
|
|
|
|
|
|
if (intf == rndis->ctrl_id) {
|
|
|
- if (rndis->notify->driver_data) {
|
|
|
- VDBG(cdev, "reset rndis control %d\n", intf);
|
|
|
- usb_ep_disable(rndis->notify);
|
|
|
- }
|
|
|
+ VDBG(cdev, "reset rndis control %d\n", intf);
|
|
|
+ usb_ep_disable(rndis->notify);
|
|
|
+
|
|
|
if (!rndis->notify->desc) {
|
|
|
VDBG(cdev, "init rndis ctrl %d\n", intf);
|
|
|
if (config_ep_by_speed(cdev->gadget, f, rndis->notify))
|
|
|
goto fail;
|
|
|
}
|
|
|
usb_ep_enable(rndis->notify);
|
|
|
- rndis->notify->driver_data = rndis;
|
|
|
|
|
|
} else if (intf == rndis->data_id) {
|
|
|
struct net_device *net;
|
|
|
|
|
|
- if (rndis->port.in_ep->driver_data) {
|
|
|
+ if (rndis->port.in_ep->enabled) {
|
|
|
DBG(cdev, "reset rndis\n");
|
|
|
gether_disconnect(&rndis->port);
|
|
|
}
|
|
@@ -612,7 +610,7 @@ static void rndis_disable(struct usb_function *f)
|
|
|
struct f_rndis *rndis = func_to_rndis(f);
|
|
|
struct usb_composite_dev *cdev = f->config->cdev;
|
|
|
|
|
|
- if (!rndis->notify->driver_data)
|
|
|
+ if (!rndis->notify->enabled)
|
|
|
return;
|
|
|
|
|
|
DBG(cdev, "rndis deactivated\n");
|
|
@@ -621,7 +619,6 @@ static void rndis_disable(struct usb_function *f)
|
|
|
gether_disconnect(&rndis->port);
|
|
|
|
|
|
usb_ep_disable(rndis->notify);
|
|
|
- rndis->notify->driver_data = NULL;
|
|
|
}
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
@@ -745,13 +742,11 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
rndis->port.in_ep = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
ep = usb_ep_autoconfig(cdev->gadget, &fs_out_desc);
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
rndis->port.out_ep = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
/* NOTE: a status/notification endpoint is, strictly speaking,
|
|
|
* optional. We don't treat it that way though! It's simpler,
|
|
@@ -761,7 +756,6 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
|
|
|
if (!ep)
|
|
|
goto fail;
|
|
|
rndis->notify = ep;
|
|
|
- ep->driver_data = cdev; /* claim */
|
|
|
|
|
|
status = -ENOMEM;
|
|
|
|
|
@@ -829,14 +823,6 @@ fail:
|
|
|
usb_ep_free_request(rndis->notify, rndis->notify_req);
|
|
|
}
|
|
|
|
|
|
- /* we might as well release our claims on endpoints */
|
|
|
- if (rndis->notify)
|
|
|
- rndis->notify->driver_data = NULL;
|
|
|
- if (rndis->port.out_ep)
|
|
|
- rndis->port.out_ep->driver_data = NULL;
|
|
|
- if (rndis->port.in_ep)
|
|
|
- rndis->port.in_ep->driver_data = NULL;
|
|
|
-
|
|
|
ERROR(cdev, "%s: can't bind, err %d\n", f->name, status);
|
|
|
|
|
|
return status;
|