summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis/if_ndis_pccard.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/if_ndis/if_ndis_pccard.c')
-rw-r--r--sys/dev/if_ndis/if_ndis_pccard.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/sys/dev/if_ndis/if_ndis_pccard.c b/sys/dev/if_ndis/if_ndis_pccard.c
index 0786b01..c3c42eb 100644
--- a/sys/dev/if_ndis/if_ndis_pccard.c
+++ b/sys/dev/if_ndis/if_ndis_pccard.c
@@ -87,13 +87,14 @@ static int ndis_probe_pccard (device_t);
static int ndis_attach_pccard (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 */
@@ -130,10 +131,11 @@ static devclass_t ndis_devclass;
#ifdef NDIS_MODNAME
#define NDIS_MODNAME_OVERRIDE_PCMCIA(x) \
- DRIVER_MODULE(x, pccard, ndis_driver, ndis_devclass, 0, 0)
+ DRIVER_MODULE(x, pccard, ndis_driver, ndis_devclass, \
+ ndisdrv_modevent, 0)
NDIS_MODNAME_OVERRIDE_PCMCIA(NDIS_MODNAME);
#else
-DRIVER_MODULE(ndis, pccard, ndis_driver, ndis_devclass, 0, 0);
+DRIVER_MODULE(ndis, pccard, ndis_driver, ndis_devclass, ndisdrv_modevent, 0);
#endif
/*
@@ -147,6 +149,13 @@ ndis_probe_pccard(dev)
struct ndis_pccard_type *t;
const char *prodstr, *vendstr;
int error;
+ driver_object *drv;
+ vm_offset_t img;
+
+ img = (vm_offset_t)drv_data;
+ drv = windrv_lookup(img);
+ if (drv == NULL)
+ return(ENXIO);
t = ndis_devs;
@@ -161,6 +170,8 @@ ndis_probe_pccard(dev)
if (ndis_strcasecmp(vendstr, t->ndis_vid) == 0 &&
ndis_strcasecmp(prodstr, t->ndis_did) == 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