Skip to content

Commit

Permalink
bnx2x: First slow path interrupt race
Browse files Browse the repository at this point in the history
The "read for interrupts" flag must be set before enabling slow-path
interrupts as well (and not just before fast-path interrupts)

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eilon Greenstein authored and David S. Miller committed Jan 15, 2009
1 parent e7799c5 commit 0ef0045
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions drivers/net/bnx2x_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4812,6 +4812,15 @@ static void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
bnx2x_init_context(bp);
bnx2x_init_internal(bp, load_code);
bnx2x_init_ind_table(bp);
bnx2x_stats_init(bp);

/* At this point, we are ready for interrupts */
atomic_set(&bp->intr_sem, 0);

/* flush all before enabling interrupts */
mb();
mmiowb();

bnx2x_int_enable(bp);
}

Expand Down Expand Up @@ -6420,17 +6429,8 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
}
}

bnx2x_stats_init(bp);

bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;

/* Enable Rx interrupt handling before sending the ramrod
as it's completed on Rx FP queue */
bnx2x_napi_enable(bp);

/* Enable interrupt handling */
atomic_set(&bp->intr_sem, 0);

rc = bnx2x_setup_leading(bp);
if (rc) {
BNX2X_ERR("Setup leading failed!\n");
Expand Down

0 comments on commit 0ef0045

Please sign in to comment.