From e20d6f3fc6011b03aa5617beddf9a58cf952680c Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Mon, 6 Jun 2005 15:53:17 +0000 Subject: [PATCH] Always hook the interrupt up last, we don't have to worry about ISR access that way. --- sys/dev/netif/an/if_an_isa.c | 22 ++++++++++++++-------- sys/dev/netif/an/if_an_pci.c | 22 +++++++++------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/sys/dev/netif/an/if_an_isa.c b/sys/dev/netif/an/if_an_isa.c index 6f4248a0dc..17594f1b54 100644 --- a/sys/dev/netif/an/if_an_isa.c +++ b/sys/dev/netif/an/if_an_isa.c @@ -30,7 +30,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/an/if_an_isa.c,v 1.1.2.5 2003/02/01 03:25:12 ambrisko Exp $ - * $DragonFly: src/sys/dev/netif/an/if_an_isa.c,v 1.8 2005/05/24 20:59:00 dillon Exp $ + * $DragonFly: src/sys/dev/netif/an/if_an_isa.c,v 1.9 2005/06/06 15:53:17 joerg Exp $ */ /* @@ -114,17 +114,23 @@ an_attach_isa(dev) an_alloc_port(dev, sc->port_rid, 1); an_alloc_irq(dev, sc->irq_rid, 0); + sc->an_bhandle = rman_get_bushandle(sc->port_res); + sc->an_btag = rman_get_bustag(sc->port_res); + + error = an_attach(sc, dev, flags); + if (error) + goto fail; + error = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET, an_intr, sc, &sc->irq_handle, NULL); - if (error) { - an_release_resources(dev); - return (error); - } + if (error) + goto fail; - sc->an_bhandle = rman_get_bushandle(sc->port_res); - sc->an_btag = rman_get_bustag(sc->port_res); + return (0); - return an_attach(sc, dev, flags); +fail: + an_release_resources(dev); + return(error); } static int diff --git a/sys/dev/netif/an/if_an_pci.c b/sys/dev/netif/an/if_an_pci.c index 02ea86bf73..630e4986cd 100644 --- a/sys/dev/netif/an/if_an_pci.c +++ b/sys/dev/netif/an/if_an_pci.c @@ -30,7 +30,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/an/if_an_pci.c,v 1.2.2.8 2003/02/11 03:32:48 ambrisko Exp $ - * $DragonFly: src/sys/dev/netif/an/if_an_pci.c,v 1.9 2005/05/24 20:59:00 dillon Exp $ + * $DragonFly: src/sys/dev/netif/an/if_an_pci.c,v 1.10 2005/06/06 15:53:17 joerg Exp $ */ /* @@ -142,11 +142,8 @@ an_attach_pci(dev) struct an_softc *sc; int flags, error = 0; - s = splimp(); - sc = device_get_softc(dev); flags = device_get_flags(dev); - bzero(sc, sizeof(struct an_softc)); if (pci_get_vendor(dev) == AIRONET_VENDORID && pci_get_device(dev) == AIRONET_DEVICEID_MPI350) { @@ -220,23 +217,22 @@ an_attach_pci(dev) /* Allocate interrupt */ error = an_alloc_irq(dev, 0, RF_SHAREABLE); - if (error) { + if (error) + goto fail; + + error = an_attach(sc, dev, flags); + if (error) goto fail; - } error = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET, an_intr, sc, &sc->irq_handle, NULL); - if (error) { + if (error) goto fail; - } - error = an_attach(sc, dev, flags); + return(0); fail: - if (error) - an_release_resources(dev); - splx(s); - + an_release_resources(dev); return(error); } -- 2.41.0