summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/pci/if_bnx.c28
-rw-r--r--sys/dev/pci/if_bnxreg.h4
2 files changed, 16 insertions, 16 deletions
diff --git a/sys/dev/pci/if_bnx.c b/sys/dev/pci/if_bnx.c
index f233f0e4d10..1ebfb24cd3a 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.39 2007/01/19 18:35:50 mcbride Exp $ */
+/* $OpenBSD: if_bnx.c,v 1.40 2007/01/20 00:36:07 dlg Exp $ */
/*-
* Copyright (c) 2006 Broadcom Corporation
@@ -627,7 +627,6 @@ bnx_attach(struct device *parent, struct device *self, void *aux)
u_int32_t val;
pcireg_t memtype;
const char *intrstr = NULL;
- pci_intr_handle_t ih;
sc->bnx_pa = *pa;
@@ -647,12 +646,11 @@ bnx_attach(struct device *parent, struct device *self, void *aux)
return;
}
- if (pci_intr_map(pa, &ih)) {
+ if (pci_intr_map(pa, &sc->bnx_ih)) {
printf(": couldn't map interrupt\n");
goto bnx_attach_fail;
}
-
- intrstr = pci_intr_string(pc, ih);
+ intrstr = pci_intr_string(pc, sc->bnx_ih);
/*
* Configure byte swap and enable indirect register access.
@@ -744,16 +742,6 @@ bnx_attach(struct device *parent, struct device *self, void *aux)
if (val & BNX_PCICFG_MISC_STATUS_32BIT_DET)
sc->bnx_flags |= BNX_PCI_32BIT_FLAG;
- /* Hookup IRQ last. */
- sc->bnx_intrhand = pci_intr_establish(pc, ih, IPL_NET, bnx_intr, sc,
- sc->bnx_dev.dv_xname);
- if (sc->bnx_intrhand == NULL) {
- printf("%s: couldn't establish interrupt", sc->bnx_dev.dv_xname);
- if (intrstr != NULL)
- printf(" at %s", intrstr);
- printf("\n");
- goto bnx_attach_fail;
- }
printf(": %s\n", intrstr);
mountroothook_establish(bnx_attachhook, sc);
@@ -769,6 +757,7 @@ 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;
@@ -934,6 +923,15 @@ 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;
+ }
+
goto bnx_attach_exit;
bnx_attach_fail:
diff --git a/sys/dev/pci/if_bnxreg.h b/sys/dev/pci/if_bnxreg.h
index 1239b935f7f..958c5febdd8 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.17 2006/11/20 21:26:27 brad Exp $ */
+/* $OpenBSD: if_bnxreg.h,v 1.18 2007/01/20 00:36:08 dlg Exp $ */
/*-
* Copyright (c) 2006 Broadcom Corporation
@@ -4587,7 +4587,9 @@ struct bnx_softc
{
struct device bnx_dev; /* Parent device handle */
struct arpcom arpcom;
+
struct pci_attach_args bnx_pa;
+ pci_intr_handle_t bnx_ih;
struct ifmedia bnx_ifmedia; /* TBI media info */