]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/usb/gadget/function/f_rndis.c
Merge remote-tracking branch 'target-updates/for-next'
[karo-tx-linux.git] / drivers / usb / gadget / function / f_rndis.c
index a04b52678319c3619aef0829d1484d00194529fc..e587767e374cbc2fbae3b02879b5358c38d48e69 100644 (file)
@@ -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;