git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ip1000: menu location change
[safe/jmp/linux-2.6]
/
drivers
/
net
/
bnx2.c
diff --git
a/drivers/net/bnx2.c
b/drivers/net/bnx2.c
index
2a79ffc
..
4e7b46e
100644
(file)
--- a/
drivers/net/bnx2.c
+++ b/
drivers/net/bnx2.c
@@
-26,7
+26,7
@@
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/dma-mapping.h>
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/dma-mapping.h>
-#include <
asm
/bitops.h>
+#include <
linux
/bitops.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <linux/delay.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <linux/delay.h>
@@
-56,8
+56,8
@@
#define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": "
-#define DRV_MODULE_VERSION "1.6.
7
"
-#define DRV_MODULE_RELDATE "
October 10
, 2007"
+#define DRV_MODULE_VERSION "1.6.
9
"
+#define DRV_MODULE_RELDATE "
December 8
, 2007"
#define RUN_AT(x) (jiffies + (x))
#define RUN_AT(x) (jiffies + (x))
@@
-2387,18
+2387,24
@@
bnx2_reuse_rx_skb(struct bnx2 *bp, struct sk_buff *skb,
prod_bd->rx_bd_haddr_lo = cons_bd->rx_bd_haddr_lo;
}
prod_bd->rx_bd_haddr_lo = cons_bd->rx_bd_haddr_lo;
}
+static inline u16
+bnx2_get_hw_rx_cons(struct bnx2 *bp)
+{
+ u16 cons = bp->status_blk->status_rx_quick_consumer_index0;
+
+ if (unlikely((cons & MAX_RX_DESC_CNT) == MAX_RX_DESC_CNT))
+ cons++;
+ return cons;
+}
+
static int
bnx2_rx_int(struct bnx2 *bp, int budget)
{
static int
bnx2_rx_int(struct bnx2 *bp, int budget)
{
- struct status_block *sblk = bp->status_blk;
u16 hw_cons, sw_cons, sw_ring_cons, sw_prod, sw_ring_prod;
struct l2_fhdr *rx_hdr;
int rx_pkt = 0;
u16 hw_cons, sw_cons, sw_ring_cons, sw_prod, sw_ring_prod;
struct l2_fhdr *rx_hdr;
int rx_pkt = 0;
- hw_cons = bp->hw_rx_cons = sblk->status_rx_quick_consumer_index0;
- if ((hw_cons & MAX_RX_DESC_CNT) == MAX_RX_DESC_CNT) {
- hw_cons++;
- }
+ hw_cons = bnx2_get_hw_rx_cons(bp);
sw_cons = bp->rx_cons;
sw_prod = bp->rx_prod;
sw_cons = bp->rx_cons;
sw_prod = bp->rx_prod;
@@
-2515,10
+2521,7
@@
next_rx:
/* Refresh hw_cons to see if there is new work */
if (sw_cons == hw_cons) {
/* Refresh hw_cons to see if there is new work */
if (sw_cons == hw_cons) {
- hw_cons = bp->hw_rx_cons =
- sblk->status_rx_quick_consumer_index0;
- if ((hw_cons & MAX_RX_DESC_CNT) == MAX_RX_DESC_CNT)
- hw_cons++;
+ hw_cons = bnx2_get_hw_rx_cons(bp);
rmb();
}
}
rmb();
}
}
@@
-2622,7
+2625,7
@@
bnx2_has_work(struct bnx2 *bp)
{
struct status_block *sblk = bp->status_blk;
{
struct status_block *sblk = bp->status_blk;
- if ((
sblk->status_rx_quick_consumer_index0 != bp->hw_
rx_cons) ||
+ if ((
bnx2_get_hw_rx_cons(bp) != bp->
rx_cons) ||
(sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons))
return 1;
(sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons))
return 1;
@@
-2655,7
+2658,7
@@
static int bnx2_poll_work(struct bnx2 *bp, int work_done, int budget)
if (sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons)
bnx2_tx_int(bp);
if (sblk->status_tx_quick_consumer_index0 != bp->hw_tx_cons)
bnx2_tx_int(bp);
- if (
sblk->status_rx_quick_consumer_index0 != bp->hw_
rx_cons)
+ if (
bnx2_get_hw_rx_cons(bp) != bp->
rx_cons)
work_done += bnx2_rx_int(bp, budget - work_done);
return work_done;
work_done += bnx2_rx_int(bp, budget - work_done);
return work_done;
@@
-4177,7
+4180,6
@@
bnx2_init_rx_ring(struct bnx2 *bp)
ring_prod = prod = bp->rx_prod = 0;
bp->rx_cons = 0;
ring_prod = prod = bp->rx_prod = 0;
bp->rx_cons = 0;
- bp->hw_rx_cons = 0;
bp->rx_prod_bseq = 0;
for (i = 0; i < bp->rx_max_ring; i++) {
bp->rx_prod_bseq = 0;
for (i = 0; i < bp->rx_max_ring; i++) {
@@
-6438,7
+6440,7
@@
bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
/* enable device (incl. PCI PM wakeup), and bus-mastering */
rc = pci_enable_device(pdev);
if (rc) {
/* enable device (incl. PCI PM wakeup), and bus-mastering */
rc = pci_enable_device(pdev);
if (rc) {
- dev_err(&pdev->dev, "Cannot enable PCI device, aborting.");
+ dev_err(&pdev->dev, "Cannot enable PCI device, aborting.
\n
");
goto err_out;
}
goto err_out;
}
@@
-6685,8
+6687,9
@@
bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
} else if (CHIP_NUM(bp) == CHIP_NUM_5706 ||
CHIP_NUM(bp) == CHIP_NUM_5708)
bp->phy_flags |= PHY_CRC_FIX_FLAG;
} else if (CHIP_NUM(bp) == CHIP_NUM_5706 ||
CHIP_NUM(bp) == CHIP_NUM_5708)
bp->phy_flags |= PHY_CRC_FIX_FLAG;
- else if (CHIP_ID(bp) == CHIP_ID_5709_A0 ||
- CHIP_ID(bp) == CHIP_ID_5709_A1)
+ else if (CHIP_NUM(bp) == CHIP_NUM_5709 &&
+ (CHIP_REV(bp) == CHIP_REV_Ax ||
+ CHIP_REV(bp) == CHIP_REV_Bx))
bp->phy_flags |= PHY_DIS_EARLY_DAC_FLAG;
if ((CHIP_ID(bp) == CHIP_ID_5708_A0) ||
bp->phy_flags |= PHY_DIS_EARLY_DAC_FLAG;
if ((CHIP_ID(bp) == CHIP_ID_5708_A0) ||