bnx2: Support for byte queue limits
authorEric Dumazet <eric.dumazet@gmail.com>
Tue, 29 Nov 2011 11:53:05 +0000 (11:53 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Nov 2011 22:10:22 +0000 (17:10 -0500)
Changes to bnx2 to use byte queue limits.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2.c

index d573169279b7f45bbbb7d18abf0386f7a37215f0..787e1757973a2ef95410e4048fd58c24dd4bc6dc 100644 (file)
@@ -2810,6 +2810,7 @@ bnx2_tx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
        struct bnx2_tx_ring_info *txr = &bnapi->tx_ring;
        u16 hw_cons, sw_cons, sw_ring_cons;
        int tx_pkt = 0, index;
+       unsigned int tx_bytes = 0;
        struct netdev_queue *txq;
 
        index = (bnapi - bp->bnx2_napi);
@@ -2864,6 +2865,7 @@ bnx2_tx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
 
                sw_cons = NEXT_TX_BD(sw_cons);
 
+               tx_bytes += skb->len;
                dev_kfree_skb(skb);
                tx_pkt++;
                if (tx_pkt == budget)
@@ -2873,6 +2875,7 @@ bnx2_tx_int(struct bnx2 *bp, struct bnx2_napi *bnapi, int budget)
                        hw_cons = bnx2_get_hw_tx_cons(bnapi);
        }
 
+       netdev_tx_completed_queue(txq, tx_pkt, tx_bytes);
        txr->hw_tx_cons = hw_cons;
        txr->tx_cons = sw_cons;
 
@@ -5393,6 +5396,7 @@ bnx2_free_tx_skbs(struct bnx2 *bp)
                        }
                        dev_kfree_skb(skb);
                }
+               netdev_tx_reset_queue(netdev_get_tx_queue(bp->dev, i));
        }
 }
 
@@ -6546,6 +6550,8 @@ bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
        }
        txbd->tx_bd_vlan_tag_flags |= TX_BD_FLAGS_END;
 
+       netdev_tx_sent_queue(txq, skb->len);
+
        prod = NEXT_TX_BD(prod);
        txr->tx_prod_bseq += skb->len;