Skip to content

Commit f79e711

Browse files
joakim-tjernlunddavem330
authored andcommitted
ucc_geth: Add BQL support
Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent b212ffa commit f79e711

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

drivers/net/ethernet/freescale/ucc_geth.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)