diff options
Diffstat (limited to 'drivers/net/bnx2.c')
-rw-r--r-- | drivers/net/bnx2.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 55a72c7ad001..3a2ace01e444 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -14,8 +14,8 @@ | |||
14 | 14 | ||
15 | #define DRV_MODULE_NAME "bnx2" | 15 | #define DRV_MODULE_NAME "bnx2" |
16 | #define PFX DRV_MODULE_NAME ": " | 16 | #define PFX DRV_MODULE_NAME ": " |
17 | #define DRV_MODULE_VERSION "1.2.20" | 17 | #define DRV_MODULE_VERSION "1.2.21" |
18 | #define DRV_MODULE_RELDATE "August 22, 2005" | 18 | #define DRV_MODULE_RELDATE "September 7, 2005" |
19 | 19 | ||
20 | #define RUN_AT(x) (jiffies + (x)) | 20 | #define RUN_AT(x) (jiffies + (x)) |
21 | 21 | ||
@@ -1533,6 +1533,7 @@ bnx2_msi(int irq, void *dev_instance, struct pt_regs *regs) | |||
1533 | struct net_device *dev = dev_instance; | 1533 | struct net_device *dev = dev_instance; |
1534 | struct bnx2 *bp = dev->priv; | 1534 | struct bnx2 *bp = dev->priv; |
1535 | 1535 | ||
1536 | prefetch(bp->status_blk); | ||
1536 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, | 1537 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, |
1537 | BNX2_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM | | 1538 | BNX2_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM | |
1538 | BNX2_PCICFG_INT_ACK_CMD_MASK_INT); | 1539 | BNX2_PCICFG_INT_ACK_CMD_MASK_INT); |
@@ -1558,7 +1559,7 @@ bnx2_interrupt(int irq, void *dev_instance, struct pt_regs *regs) | |||
1558 | * When using MSI, the MSI message will always complete after | 1559 | * When using MSI, the MSI message will always complete after |
1559 | * the status block write. | 1560 | * the status block write. |
1560 | */ | 1561 | */ |
1561 | if ((bp->status_blk->status_idx == bp->last_status_idx) || | 1562 | if ((bp->status_blk->status_idx == bp->last_status_idx) && |
1562 | (REG_RD(bp, BNX2_PCICFG_MISC_STATUS) & | 1563 | (REG_RD(bp, BNX2_PCICFG_MISC_STATUS) & |
1563 | BNX2_PCICFG_MISC_STATUS_INTA_VALUE)) | 1564 | BNX2_PCICFG_MISC_STATUS_INTA_VALUE)) |
1564 | return IRQ_NONE; | 1565 | return IRQ_NONE; |
@@ -5014,6 +5015,7 @@ static struct ethtool_ops bnx2_ethtool_ops = { | |||
5014 | .phys_id = bnx2_phys_id, | 5015 | .phys_id = bnx2_phys_id, |
5015 | .get_stats_count = bnx2_get_stats_count, | 5016 | .get_stats_count = bnx2_get_stats_count, |
5016 | .get_ethtool_stats = bnx2_get_ethtool_stats, | 5017 | .get_ethtool_stats = bnx2_get_ethtool_stats, |
5018 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
5017 | }; | 5019 | }; |
5018 | 5020 | ||
5019 | /* Called with rtnl_lock */ | 5021 | /* Called with rtnl_lock */ |
@@ -5441,6 +5443,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
5441 | pci_set_drvdata(pdev, dev); | 5443 | pci_set_drvdata(pdev, dev); |
5442 | 5444 | ||
5443 | memcpy(dev->dev_addr, bp->mac_addr, 6); | 5445 | memcpy(dev->dev_addr, bp->mac_addr, 6); |
5446 | memcpy(dev->perm_addr, bp->mac_addr, 6); | ||
5444 | bp->name = board_info[ent->driver_data].name, | 5447 | bp->name = board_info[ent->driver_data].name, |
5445 | printk(KERN_INFO "%s: %s (%c%d) PCI%s %s %dMHz found at mem %lx, " | 5448 | printk(KERN_INFO "%s: %s (%c%d) PCI%s %s %dMHz found at mem %lx, " |
5446 | "IRQ %d, ", | 5449 | "IRQ %d, ", |