Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 78422
b: refs/heads/master
c: ead7270
h: refs/heads/master
v: v3
  • Loading branch information
Michael Chan authored and David S. Miller committed Jan 28, 2008
1 parent cac2403 commit a6f7a36
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 18 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: a0d142c628279c472a3e1ae823e4d30b242f4305
refs/heads/master: ead7270b993bed77cb45a5bc786a879679e2b16a
37 changes: 20 additions & 17 deletions trunk/drivers/net/bnx2.c
Original file line number Diff line number Diff line change
Expand Up @@ -2323,17 +2323,25 @@ bnx2_phy_int(struct bnx2 *bp)

}

static inline u16
bnx2_get_hw_tx_cons(struct bnx2 *bp)
{
u16 cons;

cons = bp->status_blk->status_tx_quick_consumer_index0;

if (unlikely((cons & MAX_TX_DESC_CNT) == MAX_TX_DESC_CNT))
cons++;
return cons;
}

static void
bnx2_tx_int(struct bnx2 *bp)
{
struct status_block *sblk = bp->status_blk;
u16 hw_cons, sw_cons, sw_ring_cons;
int tx_free_bd = 0;

hw_cons = bp->hw_tx_cons = sblk->status_tx_quick_consumer_index0;
if ((hw_cons & MAX_TX_DESC_CNT) == MAX_TX_DESC_CNT) {
hw_cons++;
}
hw_cons = bnx2_get_hw_tx_cons(bp);
sw_cons = bp->tx_cons;

while (sw_cons != hw_cons) {
Expand Down Expand Up @@ -2385,14 +2393,10 @@ bnx2_tx_int(struct bnx2 *bp)

dev_kfree_skb(skb);

hw_cons = bp->hw_tx_cons =
sblk->status_tx_quick_consumer_index0;

if ((hw_cons & MAX_TX_DESC_CNT) == MAX_TX_DESC_CNT) {
hw_cons++;
}
hw_cons = bnx2_get_hw_tx_cons(bp);
}

bp->hw_tx_cons = hw_cons;
bp->tx_cons = sw_cons;
/* Need to make the tx_cons update visible to bnx2_start_xmit()
* before checking for netif_queue_stopped(). Without the
Expand Down Expand Up @@ -2822,7 +2826,7 @@ bnx2_has_work(struct bnx2 *bp)
struct status_block *sblk = bp->status_blk;

if ((bnx2_get_hw_rx_cons(bp) != bp->rx_cons) ||
(sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons))
(bnx2_get_hw_tx_cons(bp) != bp->hw_tx_cons))
return 1;

if ((sblk->status_attn_bits & STATUS_ATTN_EVENTS) !=
Expand Down Expand Up @@ -2851,7 +2855,7 @@ static int bnx2_poll_work(struct bnx2 *bp, int work_done, int budget)
REG_RD(bp, BNX2_HC_COMMAND);
}

if (sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons)
if (bnx2_get_hw_tx_cons(bp) != bp->hw_tx_cons)
bnx2_tx_int(bp);

if (bnx2_get_hw_rx_cons(bp) != bp->rx_cons)
Expand Down Expand Up @@ -4917,7 +4921,7 @@ bnx2_run_loopback(struct bnx2 *bp, int loopback_mode)
REG_RD(bp, BNX2_HC_COMMAND);

udelay(5);
rx_start_idx = bp->status_blk->status_rx_quick_consumer_index0;
rx_start_idx = bnx2_get_hw_rx_cons(bp);

num_pkts = 0;

Expand Down Expand Up @@ -4947,11 +4951,10 @@ bnx2_run_loopback(struct bnx2 *bp, int loopback_mode)
pci_unmap_single(bp->pdev, map, pkt_size, PCI_DMA_TODEVICE);
dev_kfree_skb(skb);

if (bp->status_blk->status_tx_quick_consumer_index0 != bp->tx_prod) {
if (bnx2_get_hw_tx_cons(bp) != bp->tx_prod)
goto loopback_test_done;
}

rx_idx = bp->status_blk->status_rx_quick_consumer_index0;
rx_idx = bnx2_get_hw_rx_cons(bp);
if (rx_idx != rx_start_idx + num_pkts) {
goto loopback_test_done;
}
Expand Down

0 comments on commit a6f7a36

Please sign in to comment.