]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.drivers/bnx2x-First-slow-path-interrupt-race.patch
Disable build of xen kernel.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / bnx2x-First-slow-path-interrupt-race.patch
1 From 0ef00459a638ae4f5d1e5326d3e50232fa80119f Mon Sep 17 00:00:00 2001
2 From: Eilon Greenstein <eilong@broadcom.com>
3 Date: Wed, 14 Jan 2009 21:31:08 -0800
4 Subject: bnx2x: First slow path interrupt race
5 Acked-by: Karsten Keil <kkeil@novell.com>
6 Reference: bnc#472500
7
8 The "read for interrupts" flag must be set before enabling slow-path
9 interrupts as well (and not just before fast-path interrupts)
10
11 Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
12 Signed-off-by: David S. Miller <davem@davemloft.net>
13 ---
14 drivers/net/bnx2x_main.c | 18 +++++++++---------
15 1 files changed, 9 insertions(+), 9 deletions(-)
16
17 Index: linux-2.6.27-bnx2x_2/drivers/net/bnx2x_main.c
18 ===================================================================
19 --- linux-2.6.27-bnx2x_2.orig/drivers/net/bnx2x_main.c
20 +++ linux-2.6.27-bnx2x_2/drivers/net/bnx2x_main.c
21 @@ -4815,6 +4815,15 @@ static void bnx2x_nic_init(struct bnx2x
22 bnx2x_init_context(bp);
23 bnx2x_init_internal(bp, load_code);
24 bnx2x_init_ind_table(bp);
25 + bnx2x_stats_init(bp);
26 +
27 + /* At this point, we are ready for interrupts */
28 + atomic_set(&bp->intr_sem, 0);
29 +
30 + /* flush all before enabling interrupts */
31 + mb();
32 + mmiowb();
33 +
34 bnx2x_int_enable(bp);
35 }
36
37 @@ -6423,17 +6432,8 @@ static int bnx2x_nic_load(struct bnx2x *
38 }
39 }
40
41 - bnx2x_stats_init(bp);
42 -
43 bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
44
45 - /* Enable Rx interrupt handling before sending the ramrod
46 - as it's completed on Rx FP queue */
47 - bnx2x_napi_enable(bp);
48 -
49 - /* Enable interrupt handling */
50 - atomic_set(&bp->intr_sem, 0);
51 -
52 rc = bnx2x_setup_leading(bp);
53 if (rc) {
54 BNX2X_ERR("Setup leading failed!\n");