forked from luck/tmp_suning_uos_patched
[BNX2]: Workaround hw interrupt bug
Add workaround for a hardware interrupt issue. When using INTA, unmasking of the interrupt and the tag update should be done separately to avoid some spurious interrupts, Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ade2bfe7d1
commit
1269a8a64a
@ -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 |
|
||||
bp->last_status_idx);
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user