brcm47xx: bgmac: b44: add support for Byte Queue Limits
[openwrt.git] / target / linux / brcm47xx / patches-3.10 / 730-b44-add-support-for-Byte-Queue-Limits.patch
1 From: Hauke Mehrtens <hauke@hauke-m.de>
2 b44: add support for Byte Queue Limits
3
4 --- a/drivers/net/ethernet/broadcom/b44.c
5 +++ b/drivers/net/ethernet/broadcom/b44.c
6 @@ -622,6 +622,7 @@ static void b44_timer(unsigned long __op
7  static void b44_tx(struct b44 *bp)
8  {
9         u32 cur, cons;
10 +       unsigned bytes_compl = 0, pkts_compl = 0;
11  
12         cur  = br32(bp, B44_DMATX_STAT) & DMATX_STAT_CDMASK;
13         cur /= sizeof(struct dma_desc);
14 @@ -638,9 +639,14 @@ static void b44_tx(struct b44 *bp)
15                                  skb->len,
16                                  DMA_TO_DEVICE);
17                 rp->skb = NULL;
18 +
19 +               bytes_compl += skb->len;
20 +               pkts_compl++;
21 +
22                 dev_kfree_skb_irq(skb);
23         }
24  
25 +       netdev_completed_queue(bp->dev, pkts_compl, bytes_compl);
26         bp->tx_cons = cons;
27         if (netif_queue_stopped(bp->dev) &&
28             TX_BUFFS_AVAIL(bp) > B44_TX_WAKEUP_THRESH)
29 @@ -1044,6 +1050,8 @@ static netdev_tx_t b44_start_xmit(struct
30         if (bp->flags & B44_FLAG_REORDER_BUG)
31                 br32(bp, B44_DMATX_PTR);
32  
33 +       netdev_sent_queue(dev, skb->len);
34 +
35         if (TX_BUFFS_AVAIL(bp) < 1)
36                 netif_stop_queue(dev);
37  
38 @@ -1442,6 +1450,8 @@ static void b44_init_hw(struct b44 *bp,
39  
40         val = br32(bp, B44_ENET_CTRL);
41         bw32(bp, B44_ENET_CTRL, (val | ENET_CTRL_ENABLE));
42 +       
43 +       netdev_reset_queue(bp->dev);
44  }
45  
46  static int b44_open(struct net_device *dev)