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)) {
                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 */