summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis/if_ndis_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/if_ndis/if_ndis_pci.c')
-rw-r--r--sys/dev/if_ndis/if_ndis_pci.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/sys/dev/if_ndis/if_ndis_pci.c b/sys/dev/if_ndis/if_ndis_pci.c
index 8af48f4..f24ec70 100644
--- a/sys/dev/if_ndis/if_ndis_pci.c
+++ b/sys/dev/if_ndis/if_ndis_pci.c
@@ -86,13 +86,14 @@ static int ndis_probe_pci (device_t);
static int ndis_attach_pci (device_t);
static struct resource_list *ndis_get_resource_list
(device_t, device_t);
+extern int ndisdrv_modevent (module_t, int, void *);
extern int ndis_attach (device_t);
extern int ndis_shutdown (device_t);
extern int ndis_detach (device_t);
extern int ndis_suspend (device_t);
extern int ndis_resume (device_t);
-extern struct mtx_pool *ndis_mtxpool;
+extern unsigned char drv_data[];
static device_method_t ndis_methods[] = {
/* Device interface */
@@ -123,14 +124,15 @@ static devclass_t ndis_devclass;
#ifdef NDIS_MODNAME
#define NDIS_MODNAME_OVERRIDE_PCI(x) \
- DRIVER_MODULE(x, pci, ndis_driver, ndis_devclass, 0, 0)
+ DRIVER_MODULE(x, pci, ndis_driver, ndis_devclass, ndisdrv_modevent, 0)
#define NDIS_MODNAME_OVERRIDE_CARDBUS(x) \
- DRIVER_MODULE(x, cardbus, ndis_driver, ndis_devclass, 0, 0)
+ DRIVER_MODULE(x, cardbus, ndis_driver, ndis_devclass, \
+ ndisdrv_modevent, 0)
NDIS_MODNAME_OVERRIDE_PCI(NDIS_MODNAME);
NDIS_MODNAME_OVERRIDE_CARDBUS(NDIS_MODNAME);
#else
-DRIVER_MODULE(ndis, pci, ndis_driver, ndis_devclass, 0, 0);
-DRIVER_MODULE(ndis, cardbus, ndis_driver, ndis_devclass, 0, 0);
+DRIVER_MODULE(ndis, pci, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
+DRIVER_MODULE(ndis, cardbus, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
#endif
/*
@@ -142,8 +144,15 @@ ndis_probe_pci(dev)
device_t dev;
{
struct ndis_pci_type *t;
+ driver_object *drv;
+ vm_offset_t img;
t = ndis_devs;
+ img = (vm_offset_t)drv_data;
+ drv = windrv_lookup(img);
+
+ if (drv == NULL)
+ return(ENXIO);
while(t->ndis_name != NULL) {
if ((pci_get_vendor(dev) == t->ndis_vid) &&
@@ -151,6 +160,9 @@ ndis_probe_pci(dev)
((pci_read_config(dev, PCIR_SUBVEND_0, 4) ==
t->ndis_subsys) || t->ndis_subsys == 0)) {
device_set_desc(dev, t->ndis_name);
+
+ /* Create PDO for this device instance */
+ windrv_create_pdo(drv, dev);
return(0);
}
t++;
OpenPOWER on IntegriCloud