aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/ipheth.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/ipheth.c')
-rw-r--r--drivers/net/usb/ipheth.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
index c247aed2dceb..8c01fbf68a89 100644
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -383,17 +383,18 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
383 dev); 383 dev);
384 dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 384 dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
385 385
386 netif_stop_queue(net);
386 retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC); 387 retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC);
387 if (retval) { 388 if (retval) {
388 dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n", 389 dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
389 __func__, retval); 390 __func__, retval);
390 dev->net->stats.tx_errors++; 391 dev->net->stats.tx_errors++;
391 dev_kfree_skb_any(skb); 392 dev_kfree_skb_any(skb);
393 netif_wake_queue(net);
392 } else { 394 } else {
393 dev->net->stats.tx_packets++; 395 dev->net->stats.tx_packets++;
394 dev->net->stats.tx_bytes += skb->len; 396 dev->net->stats.tx_bytes += skb->len;
395 dev_consume_skb_any(skb); 397 dev_consume_skb_any(skb);
396 netif_stop_queue(net);
397 } 398 }
398 399
399 return NETDEV_TX_OK; 400 return NETDEV_TX_OK;