Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[GitHub/LineageOS/android_kernel_samsung_universal7580.git] / drivers / net / usb / usbnet.c
index aba769d77459b61e6cc42deff0a101acd709af89..e92c057f794ae25e647bd8e6b4331bcb04f9c216 100644 (file)
@@ -180,7 +180,40 @@ int usbnet_get_ethernet_addr(struct usbnet *dev, int iMACAddress)
 }
 EXPORT_SYMBOL_GPL(usbnet_get_ethernet_addr);
 
-static void intr_complete (struct urb *urb);
+static void intr_complete (struct urb *urb)
+{
+       struct usbnet   *dev = urb->context;
+       int             status = urb->status;
+
+       switch (status) {
+       /* success */
+       case 0:
+               dev->driver_info->status(dev, urb);
+               break;
+
+       /* software-driven interface shutdown */
+       case -ENOENT:           /* urb killed */
+       case -ESHUTDOWN:        /* hardware gone */
+               netif_dbg(dev, ifdown, dev->net,
+                         "intr shutdown, code %d\n", status);
+               return;
+
+       /* NOTE:  not throttling like RX/TX, since this endpoint
+        * already polls infrequently
+        */
+       default:
+               netdev_dbg(dev->net, "intr status %d\n", status);
+               break;
+       }
+
+       if (!netif_running (dev->net))
+               return;
+
+       status = usb_submit_urb (urb, GFP_ATOMIC);
+       if (status != 0)
+               netif_err(dev, timer, dev->net,
+                         "intr resubmit --> %d\n", status);
+}
 
 static int init_status (struct usbnet *dev, struct usb_interface *intf)
 {
@@ -519,42 +552,6 @@ block:
        netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
 }
 
-static void intr_complete (struct urb *urb)
-{
-       struct usbnet   *dev = urb->context;
-       int             status = urb->status;
-
-       switch (status) {
-       /* success */
-       case 0:
-               dev->driver_info->status(dev, urb);
-               break;
-
-       /* software-driven interface shutdown */
-       case -ENOENT:           /* urb killed */
-       case -ESHUTDOWN:        /* hardware gone */
-               netif_dbg(dev, ifdown, dev->net,
-                         "intr shutdown, code %d\n", status);
-               return;
-
-       /* NOTE:  not throttling like RX/TX, since this endpoint
-        * already polls infrequently
-        */
-       default:
-               netdev_dbg(dev->net, "intr status %d\n", status);
-               break;
-       }
-
-       if (!netif_running (dev->net))
-               return;
-
-       memset(urb->transfer_buffer, 0, urb->transfer_buffer_length);
-       status = usb_submit_urb (urb, GFP_ATOMIC);
-       if (status != 0)
-               netif_err(dev, timer, dev->net,
-                         "intr resubmit --> %d\n", status);
-}
-
 /*-------------------------------------------------------------------------*/
 void usbnet_pause_rx(struct usbnet *dev)
 {
@@ -1312,7 +1309,6 @@ void usbnet_disconnect (struct usb_interface *intf)
        usb_free_urb(dev->interrupt);
 
        free_netdev(net);
-       usb_put_dev (xdev);
 }
 EXPORT_SYMBOL_GPL(usbnet_disconnect);
 
@@ -1368,8 +1364,6 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
        xdev = interface_to_usbdev (udev);
        interface = udev->cur_altsetting;
 
-       usb_get_dev (xdev);
-
        status = -ENOMEM;
 
        // set up our own records
@@ -1498,7 +1492,6 @@ out3:
 out1:
        free_netdev(net);
 out:
-       usb_put_dev(xdev);
        return status;
 }
 EXPORT_SYMBOL_GPL(usbnet_probe);