aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>2004-03-09 18:39:40 +0000
committerBill Paul <wpaul@FreeBSD.org>2004-03-09 18:39:40 +0000
commit3e7791af10649b2f6a29b5854b21f2d704e8d22f (patch)
treed7d9c66921ab5e745c40b4b6797ceca82d3ce7ad /sys
parent577cf233eb9a55e1810052be91a36f6fd35c59ba (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/if_ndis/if_ndis_pci.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/dev/if_ndis/if_ndis_pci.c b/sys/dev/if_ndis/if_ndis_pci.c
index 6b293e5f1e758..36bdcb8e7acf3 100644
--- a/sys/dev/if_ndis/if_ndis_pci.c
+++ b/sys/dev/if_ndis/if_ndis_pci.c
@@ -263,6 +263,26 @@ ndis_attach_pci(dev)
}
/*
+ * If the BIOS did not set up an interrupt for this device,
+ * the resource traversal code above will fail to set up
+ * an IRQ resource. This is usually a bad thing, so try to
+ * force the allocation of an interrupt here. If one was
+ * not assigned to us by the BIOS, bus_alloc_resource()
+ * should route one for us.
+ */
+ if (sc->ndis_irq == NULL) {
+ rid = 0;
+ sc->ndis_irq = bus_alloc_resource(dev, SYS_RES_IRQ,
+ &rid, 0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
+ if (sc->ndis_irq == NULL) {
+ device_printf(dev, "couldn't route interrupt\n");
+ error = ENXIO;
+ goto fail;
+ }
+ sc->ndis_rescnt++;
+ }
+
+ /*
* Allocate the parent bus DMA tag appropriate for PCI.
*/
#define NDIS_NSEG_NEW 32