diff --git a/[refs] b/[refs] index a82a06bc7a56..0fc339fbf638 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ade2bfe7d1f0ea804d2e63209cc6318ad8bf17ae +refs/heads/master: 1269a8a64a37c8a06af672f4cff4fed16a478734 diff --git a/trunk/drivers/net/bnx2.c b/trunk/drivers/net/bnx2.c index ec08f833c32d..7b99cf26a129 100644 --- a/trunk/drivers/net/bnx2.c +++ b/trunk/drivers/net/bnx2.c @@ -315,6 +315,10 @@ bnx2_enable_int(struct bnx2 *bp) { u32 val; + REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, + BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | + BNX2_PCICFG_INT_ACK_CMD_MASK_INT | bp->last_status_idx); + REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | bp->last_status_idx); @@ -1892,9 +1896,20 @@ bnx2_poll(struct net_device *dev, int *budget) if (!bnx2_has_work(bp)) { netif_rx_complete(dev); + if (likely(bp->flags & USING_MSI_FLAG)) { + REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, + BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | + bp->last_status_idx); + return 0; + } + REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, + BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | + BNX2_PCICFG_INT_ACK_CMD_MASK_INT | + bp->last_status_idx); + REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, - BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | - bp->last_status_idx); + BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | + bp->last_status_idx); return 0; }