diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 2004-03-09 18:39:40 +0000 |
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 2004-03-09 18:39:40 +0000 |
| commit | 3e7791af10649b2f6a29b5854b21f2d704e8d22f (patch) | |
| tree | d7d9c66921ab5e745c40b4b6797ceca82d3ce7ad /sys | |
| parent | 577cf233eb9a55e1810052be91a36f6fd35c59ba (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/dev/if_ndis/if_ndis_pci.c | 20 |
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 |
