|
@@ -14,8 +14,8 @@
|
|
|
|
|
|
#define DRV_MODULE_NAME "bnx2"
|
|
|
#define PFX DRV_MODULE_NAME ": "
|
|
|
-#define DRV_MODULE_VERSION "1.2.20"
|
|
|
-#define DRV_MODULE_RELDATE "August 22, 2005"
|
|
|
+#define DRV_MODULE_VERSION "1.2.21"
|
|
|
+#define DRV_MODULE_RELDATE "September 7, 2005"
|
|
|
|
|
|
#define RUN_AT(x) (jiffies + (x))
|
|
|
|
|
@@ -1533,6 +1533,7 @@ bnx2_msi(int irq, void *dev_instance, struct pt_regs *regs)
|
|
|
struct net_device *dev = dev_instance;
|
|
|
struct bnx2 *bp = dev->priv;
|
|
|
|
|
|
+ prefetch(bp->status_blk);
|
|
|
REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD,
|
|
|
BNX2_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM |
|
|
|
BNX2_PCICFG_INT_ACK_CMD_MASK_INT);
|
|
@@ -1558,7 +1559,7 @@ bnx2_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
|
|
|
* When using MSI, the MSI message will always complete after
|
|
|
* the status block write.
|
|
|
*/
|
|
|
- if ((bp->status_blk->status_idx == bp->last_status_idx) ||
|
|
|
+ if ((bp->status_blk->status_idx == bp->last_status_idx) &&
|
|
|
(REG_RD(bp, BNX2_PCICFG_MISC_STATUS) &
|
|
|
BNX2_PCICFG_MISC_STATUS_INTA_VALUE))
|
|
|
return IRQ_NONE;
|