diff options
Diffstat (limited to 'drivers/net/ethernet/sun/niu.c')
| -rw-r--r-- | drivers/net/ethernet/sun/niu.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c index 703c8cce2a2c..8c726b7004d3 100644 --- a/drivers/net/ethernet/sun/niu.c +++ b/drivers/net/ethernet/sun/niu.c | |||
| @@ -3598,7 +3598,6 @@ static int release_tx_packet(struct niu *np, struct tx_ring_info *rp, int idx) | |||
| 3598 | static void niu_tx_work(struct niu *np, struct tx_ring_info *rp) | 3598 | static void niu_tx_work(struct niu *np, struct tx_ring_info *rp) |
| 3599 | { | 3599 | { |
| 3600 | struct netdev_queue *txq; | 3600 | struct netdev_queue *txq; |
| 3601 | unsigned int tx_bytes; | ||
| 3602 | u16 pkt_cnt, tmp; | 3601 | u16 pkt_cnt, tmp; |
| 3603 | int cons, index; | 3602 | int cons, index; |
| 3604 | u64 cs; | 3603 | u64 cs; |
| @@ -3621,18 +3620,12 @@ static void niu_tx_work(struct niu *np, struct tx_ring_info *rp) | |||
| 3621 | netif_printk(np, tx_done, KERN_DEBUG, np->dev, | 3620 | netif_printk(np, tx_done, KERN_DEBUG, np->dev, |
| 3622 | "%s() pkt_cnt[%u] cons[%d]\n", __func__, pkt_cnt, cons); | 3621 | "%s() pkt_cnt[%u] cons[%d]\n", __func__, pkt_cnt, cons); |
| 3623 | 3622 | ||
| 3624 | tx_bytes = 0; | 3623 | while (pkt_cnt--) |
| 3625 | tmp = pkt_cnt; | ||
| 3626 | while (tmp--) { | ||
| 3627 | tx_bytes += rp->tx_buffs[cons].skb->len; | ||
| 3628 | cons = release_tx_packet(np, rp, cons); | 3624 | cons = release_tx_packet(np, rp, cons); |
| 3629 | } | ||
| 3630 | 3625 | ||
| 3631 | rp->cons = cons; | 3626 | rp->cons = cons; |
| 3632 | smp_mb(); | 3627 | smp_mb(); |
| 3633 | 3628 | ||
| 3634 | netdev_tx_completed_queue(txq, pkt_cnt, tx_bytes); | ||
| 3635 | |||
| 3636 | out: | 3629 | out: |
| 3637 | if (unlikely(netif_tx_queue_stopped(txq) && | 3630 | if (unlikely(netif_tx_queue_stopped(txq) && |
| 3638 | (niu_tx_avail(rp) > NIU_TX_WAKEUP_THRESH(rp)))) { | 3631 | (niu_tx_avail(rp) > NIU_TX_WAKEUP_THRESH(rp)))) { |
| @@ -4333,7 +4326,6 @@ static void niu_free_channels(struct niu *np) | |||
| 4333 | struct tx_ring_info *rp = &np->tx_rings[i]; | 4326 | struct tx_ring_info *rp = &np->tx_rings[i]; |
| 4334 | 4327 | ||
| 4335 | niu_free_tx_ring_info(np, rp); | 4328 | niu_free_tx_ring_info(np, rp); |
| 4336 | netdev_tx_reset_queue(netdev_get_tx_queue(np->dev, i)); | ||
| 4337 | } | 4329 | } |
| 4338 | kfree(np->tx_rings); | 4330 | kfree(np->tx_rings); |
| 4339 | np->tx_rings = NULL; | 4331 | np->tx_rings = NULL; |
| @@ -6739,8 +6731,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb, | |||
| 6739 | prod = NEXT_TX(rp, prod); | 6731 | prod = NEXT_TX(rp, prod); |
| 6740 | } | 6732 | } |
| 6741 | 6733 | ||
| 6742 | netdev_tx_sent_queue(txq, skb->len); | ||
| 6743 | |||
| 6744 | if (prod < rp->prod) | 6734 | if (prod < rp->prod) |
| 6745 | rp->wrap_bit ^= TX_RING_KICK_WRAP; | 6735 | rp->wrap_bit ^= TX_RING_KICK_WRAP; |
| 6746 | rp->prod = prod; | 6736 | rp->prod = prod; |
