]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - drivers/net/usb/usbnet.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[thirdparty/kernel/stable.git] / drivers / net / usb / usbnet.c
index 66f0e0f517117dfb06e233487bed3c8eac897141..72514c46b4786ae26ba6d16a2c6d32b9a2cfb078 100644 (file)
@@ -494,6 +494,7 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
 
        if (netif_running (dev->net) &&
            netif_device_present (dev->net) &&
+           test_bit(EVENT_DEV_OPEN, &dev->flags) &&
            !test_bit (EVENT_RX_HALT, &dev->flags) &&
            !test_bit (EVENT_DEV_ASLEEP, &dev->flags)) {
                switch (retval = usb_submit_urb (urb, GFP_ATOMIC)) {
@@ -1419,6 +1420,11 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
                spin_unlock_irqrestore(&dev->txq.lock, flags);
                goto drop;
        }
+       if (netif_queue_stopped(net)) {
+               usb_autopm_put_interface_async(dev->intf);
+               spin_unlock_irqrestore(&dev->txq.lock, flags);
+               goto drop;
+       }
 
 #ifdef CONFIG_PM
        /* if this triggers the device is still a sleep */