r8152: check the status before submitting rx
authorhayeswang <hayeswang@realtek.com>
Fri, 9 Jan 2015 02:26:36 +0000 (10:26 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Jan 2015 21:10:22 +0000 (16:10 -0500)
Don't submit the rx if the device is unplugged, stopped, or
linking down.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/r8152.c

index cd9338837ce64c09bb6c8725edd35ea463f11a7f..b23426e4952cec94f954b2bd2f85cd037432510f 100644 (file)
@@ -1789,6 +1789,11 @@ int r8152_submit_rx(struct r8152 *tp, struct rx_agg *agg, gfp_t mem_flags)
 {
        int ret;
 
+       /* The rx would be stopped, so skip submitting */
+       if (test_bit(RTL8152_UNPLUG, &tp->flags) ||
+           !test_bit(WORK_ENABLE, &tp->flags) || !netif_carrier_ok(tp->netdev))
+               return 0;
+
        usb_fill_bulk_urb(agg->urb, tp->udev, usb_rcvbulkpipe(tp->udev, 1),
                          agg->head, agg_buf_sz,
                          (usb_complete_t)read_bulk_callback, agg);