@@ -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 ;
@@ -229,6 +228,7 @@ static void ipheth_rcvbulk_callback(struct urb *urb)
229
228
case - ENOENT :
230
229
case - ECONNRESET :
231
230
case - ESHUTDOWN :
231
+ case - EPROTO :
232
232
return ;
233
233
case 0 :
234
234
break ;
@@ -280,7 +280,6 @@ static void ipheth_sndbulk_callback(struct urb *urb)
280
280
dev_err (& dev -> intf -> dev , "%s: urb status: %d\n" ,
281
281
__func__ , status );
282
282
283
- dev_kfree_skb_irq (dev -> tx_skb );
284
283
netif_wake_queue (dev -> net );
285
284
}
286
285
@@ -410,7 +409,7 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
410
409
if (skb -> len > IPHETH_BUF_SIZE ) {
411
410
WARN (1 , "%s: skb too large: %d bytes\n" , __func__ , skb -> len );
412
411
dev -> net -> stats .tx_dropped ++ ;
413
- dev_kfree_skb_irq (skb );
412
+ dev_kfree_skb_any (skb );
414
413
return NETDEV_TX_OK ;
415
414
}
416
415
@@ -430,12 +429,11 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
430
429
dev_err (& dev -> intf -> dev , "%s: usb_submit_urb: %d\n" ,
431
430
__func__ , retval );
432
431
dev -> net -> stats .tx_errors ++ ;
433
- dev_kfree_skb_irq (skb );
432
+ dev_kfree_skb_any (skb );
434
433
} else {
435
- dev -> tx_skb = skb ;
436
-
437
434
dev -> net -> stats .tx_packets ++ ;
438
435
dev -> net -> stats .tx_bytes += skb -> len ;
436
+ dev_consume_skb_any (skb );
439
437
netif_stop_queue (net );
440
438
}
441
439
0 commit comments