@@ -3096,6 +3096,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
30963096
30973097 ugeth_vdbg ("%s: IN" , __func__ );
30983098
3099+ netdev_sent_queue (dev , skb -> len );
30993100 spin_lock_irqsave (& ugeth -> lock , flags );
31003101
31013102 dev -> stats .tx_bytes += skb -> len ;
@@ -3240,6 +3241,8 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ)
32403241{
32413242 /* Start from the next BD that should be filled */
32423243 struct ucc_geth_private * ugeth = netdev_priv (dev );
3244+ unsigned int bytes_sent = 0 ;
3245+ int howmany = 0 ;
32433246 u8 __iomem * bd ; /* BD pointer */
32443247 u32 bd_status ;
32453248
@@ -3257,7 +3260,8 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ)
32573260 skb = ugeth -> tx_skbuff [txQ ][ugeth -> skb_dirtytx [txQ ]];
32583261 if (!skb )
32593262 break ;
3260-
3263+ howmany ++ ;
3264+ bytes_sent += skb -> len ;
32613265 dev -> stats .tx_packets ++ ;
32623266
32633267 dev_consume_skb_any (skb );
@@ -3279,6 +3283,7 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ)
32793283 bd_status = in_be32 ((u32 __iomem * )bd );
32803284 }
32813285 ugeth -> confBd [txQ ] = bd ;
3286+ netdev_completed_queue (dev , howmany , bytes_sent );
32823287 return 0 ;
32833288}
32843289
@@ -3479,6 +3484,7 @@ static int ucc_geth_open(struct net_device *dev)
34793484
34803485 phy_start (ugeth -> phydev );
34813486 napi_enable (& ugeth -> napi );
3487+ netdev_reset_queue (dev );
34823488 netif_start_queue (dev );
34833489
34843490 device_set_wakeup_capable (& dev -> dev ,
@@ -3509,6 +3515,7 @@ static int ucc_geth_close(struct net_device *dev)
35093515 free_irq (ugeth -> ug_info -> uf_info .irq , ugeth -> ndev );
35103516
35113517 netif_stop_queue (dev );
3518+ netdev_reset_queue (dev );
35123519
35133520 return 0 ;
35143521}
0 commit comments