Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 278292
b: refs/heads/master
c: ec2a546
h: refs/heads/master
v: v3
  • Loading branch information
stephen hemminger authored and David S. Miller committed Nov 30, 2011
1 parent a046574 commit 0f74b11
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 614c76df1d1224dc2eee8678fab6e0b95b49b7da
refs/heads/master: ec2a5466b3ce680c92e8e05617b020fd825854b9
18 changes: 13 additions & 5 deletions trunk/drivers/net/ethernet/marvell/sky2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,7 @@ static void tx_init(struct sky2_port *sky2)
sky2->tx_prod = sky2->tx_cons = 0;
sky2->tx_tcpsum = 0;
sky2->tx_last_mss = 0;
netdev_reset_queue(sky2->netdev);

le = get_tx_le(sky2, &sky2->tx_prod);
le->addr = 0;
Expand Down Expand Up @@ -1971,6 +1972,7 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
if (tx_avail(sky2) <= MAX_SKB_TX_LE)
netif_stop_queue(dev);

netdev_sent_queue(dev, skb->len);
sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod);

return NETDEV_TX_OK;
Expand Down Expand Up @@ -2002,7 +2004,8 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
{
struct net_device *dev = sky2->netdev;
unsigned idx;
u16 idx;
unsigned int bytes_compl = 0, pkts_compl = 0;

BUG_ON(done >= sky2->tx_ring_size);

Expand All @@ -2017,10 +2020,8 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
netif_printk(sky2, tx_done, KERN_DEBUG, dev,
"tx done %u\n", idx);

u64_stats_update_begin(&sky2->tx_stats.syncp);
++sky2->tx_stats.packets;
sky2->tx_stats.bytes += skb->len;
u64_stats_update_end(&sky2->tx_stats.syncp);
pkts_compl++;
bytes_compl += skb->len;

re->skb = NULL;
dev_kfree_skb_any(skb);
Expand All @@ -2031,6 +2032,13 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)

sky2->tx_cons = idx;
smp_mb();

netdev_completed_queue(dev, pkts_compl, bytes_compl);

u64_stats_update_begin(&sky2->tx_stats.syncp);
sky2->tx_stats.packets += pkts_compl;
sky2->tx_stats.bytes += bytes_compl;
u64_stats_update_end(&sky2->tx_stats.syncp);
}

static void sky2_tx_reset(struct sky2_hw *hw, unsigned port)
Expand Down

0 comments on commit 0f74b11

Please sign in to comment.