diff options
-rw-r--r-- | sys/dev/pci/if_bnx.c | 25 | ||||
-rw-r--r-- | sys/dev/pci/if_bnxreg.h | 3 |
2 files changed, 17 insertions, 11 deletions
diff --git a/sys/dev/pci/if_bnx.c b/sys/dev/pci/if_bnx.c index 7bbcab5c092..8944d7517b3 100644 --- a/sys/dev/pci/if_bnx.c +++ b/sys/dev/pci/if_bnx.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bnx.c,v 1.46 2007/03/03 03:46:12 todd Exp $ */ +/* $OpenBSD: if_bnx.c,v 1.47 2007/03/03 11:17:48 reyk Exp $ */ /*- * Copyright (c) 2006 Broadcom Corporation @@ -738,6 +738,15 @@ bnx_attach(struct device *parent, struct device *self, void *aux) printf(": %s\n", intrstr); + /* Hookup IRQ last. */ + sc->bnx_intrhand = pci_intr_establish(pc, sc->bnx_ih, IPL_NET, + bnx_intr, sc, sc->bnx_dev.dv_xname); + if (sc->bnx_intrhand == NULL) { + printf("%s: couldn't establish interrupt\n", + sc->bnx_dev.dv_xname); + goto bnx_attach_fail; + } + mountroothook_establish(bnx_attachhook, sc); return; @@ -751,7 +760,6 @@ bnx_attachhook(void *xsc) { struct bnx_softc *sc = xsc; struct pci_attach_args *pa = &sc->bnx_pa; - pci_chipset_tag_t pc = pa->pa_pc; struct ifnet *ifp; u_int32_t val; int error; @@ -914,14 +922,8 @@ bnx_attachhook(void *xsc) /* Get the firmware running so ASF still works. */ bnx_mgmt_init(sc); - /* Hookup IRQ last. */ - sc->bnx_intrhand = pci_intr_establish(pc, sc->bnx_ih, IPL_NET, - bnx_intr, sc, sc->bnx_dev.dv_xname); - if (sc->bnx_intrhand == NULL) { - printf("%s: couldn't establish interrupt\n", - sc->bnx_dev.dv_xname); - goto bnx_attach_fail; - } + /* Handle interrupts */ + sc->bnx_flags |= BNX_ACTIVE_FLAG; goto bnx_attach_exit; @@ -4656,6 +4658,9 @@ bnx_intr(void *xsc) u_int32_t status_attn_bits; sc = xsc; + if ((sc->bnx_flags & BNX_ACTIVE_FLAG) == 0) + return (0); + ifp = &sc->arpcom.ac_if; DBRUNIF(1, sc->interrupts_generated++); diff --git a/sys/dev/pci/if_bnxreg.h b/sys/dev/pci/if_bnxreg.h index 958c5febdd8..044a995b372 100644 --- a/sys/dev/pci/if_bnxreg.h +++ b/sys/dev/pci/if_bnxreg.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_bnxreg.h,v 1.18 2007/01/20 00:36:08 dlg Exp $ */ +/* $OpenBSD: if_bnxreg.h,v 1.19 2007/03/03 11:17:48 reyk Exp $ */ /*- * Copyright (c) 2006 Broadcom Corporation @@ -4613,6 +4613,7 @@ struct bnx_softc #define BNX_USING_DAC_FLAG 0x10 #define BNX_USING_MSI_FLAG 0x20 #define BNX_MFW_ENABLE_FLAG 0x40 +#define BNX_ACTIVE_FLAG 0x80 /* PHY specific flags. */ u_int32_t bnx_phy_flags; |