svn commit: r283637 - head/sys/dev/bwi
Gleb Smirnoff
glebius at FreeBSD.org
Wed May 27 22:27:16 UTC 2015
Author: glebius
Date: Wed May 27 22:27:15 2015
New Revision: 283637
URL: https://svnweb.freebsd.org/changeset/base/283637
Log:
Setup the interrupt handler after bwi_attach(). If IRQ is shared, interrupt
may come during bwi_attach().
Modified:
head/sys/dev/bwi/if_bwi_pci.c
Modified: head/sys/dev/bwi/if_bwi_pci.c
==============================================================================
--- head/sys/dev/bwi/if_bwi_pci.c Wed May 27 22:25:49 2015 (r283636)
+++ head/sys/dev/bwi/if_bwi_pci.c Wed May 27 22:27:15 2015 (r283637)
@@ -161,12 +161,6 @@ bwi_pci_attach(device_t dev)
device_printf(dev, "could not map interrupt\n");
goto bad1;
}
- if (bus_setup_intr(dev, sc->sc_irq_res,
- INTR_TYPE_NET | INTR_MPSAFE,
- NULL, bwi_intr, sc, &sc->sc_irq_handle)) {
- device_printf(dev, "could not establish interrupt\n");
- goto bad2;
- }
/* Get more PCI information */
sc->sc_pci_did = pci_get_device(dev);
@@ -174,11 +168,17 @@ bwi_pci_attach(device_t dev)
sc->sc_pci_subvid = pci_get_subvendor(dev);
sc->sc_pci_subdid = pci_get_subdevice(dev);
- error = bwi_attach(sc);
- if (error == 0) /* success */
- return 0;
+ if ((error = bwi_attach(sc)) != 0)
+ goto bad2;
+
+ if (bus_setup_intr(dev, sc->sc_irq_res,
+ INTR_TYPE_NET | INTR_MPSAFE,
+ NULL, bwi_intr, sc, &sc->sc_irq_handle)) {
+ device_printf(dev, "could not establish interrupt\n");
+ goto bad2;
+ }
+ return (0);
- bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_handle);
bad2:
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res);
bad1:
More information about the svn-src-all
mailing list