@@ -140,7 +140,6 @@ struct ipheth_device {
140
140
struct usb_device * udev ;
141
141
struct usb_interface * intf ;
142
142
struct net_device * net ;
143
- struct sk_buff * tx_skb ;
144
143
struct urb * tx_urb ;
145
144
struct urb * rx_urb ;
146
145
unsigned char * tx_buf ;
@@ -230,6 +229,7 @@ static void ipheth_rcvbulk_callback(struct urb *urb)
230
229
case - ENOENT :
231
230
case - ECONNRESET :
232
231
case - ESHUTDOWN :
232
+ case - EPROTO :
233
233
return ;
234
234
case 0 :
235
235
break ;
@@ -281,7 +281,6 @@ static void ipheth_sndbulk_callback(struct urb *urb)
281
281
dev_err (& dev -> intf -> dev , "%s: urb status: %d\n" ,
282
282
__func__ , status );
283
283
284
- dev_kfree_skb_irq (dev -> tx_skb );
285
284
if (status == 0 )
286
285
netif_wake_queue (dev -> net );
287
286
else
@@ -423,7 +422,7 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
423
422
if (skb -> len > IPHETH_BUF_SIZE ) {
424
423
WARN (1 , "%s: skb too large: %d bytes\n" , __func__ , skb -> len );
425
424
dev -> net -> stats .tx_dropped ++ ;
426
- dev_kfree_skb_irq (skb );
425
+ dev_kfree_skb_any (skb );
427
426
return NETDEV_TX_OK ;
428
427
}
429
428
@@ -443,12 +442,11 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
443
442
dev_err (& dev -> intf -> dev , "%s: usb_submit_urb: %d\n" ,
444
443
__func__ , retval );
445
444
dev -> net -> stats .tx_errors ++ ;
446
- dev_kfree_skb_irq (skb );
445
+ dev_kfree_skb_any (skb );
447
446
} else {
448
- dev -> tx_skb = skb ;
449
-
450
447
dev -> net -> stats .tx_packets ++ ;
451
448
dev -> net -> stats .tx_bytes += skb -> len ;
449
+ dev_consume_skb_any (skb );
452
450
netif_stop_queue (net );
453
451
}
454
452
0 commit comments