summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/if_ndis')
-rw-r--r--sys/dev/if_ndis/if_ndis.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index 60b6096..4a3fd96 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -73,8 +73,8 @@ __FBSDID("$FreeBSD$");
#include <compat/ndis/pe_var.h>
#include <compat/ndis/resource_var.h>
-#include <compat/ndis/hal_var.h>
#include <compat/ndis/ntoskrnl_var.h>
+#include <compat/ndis/hal_var.h>
#include <compat/ndis/ndis_var.h>
#include <compat/ndis/cfg_var.h>
#include <dev/if_ndis/if_ndisvar.h>
@@ -389,6 +389,15 @@ ndis_attach(dev)
goto fail;
}
+ if (sc->ndis_iftype == PCMCIABus) {
+ error = ndis_alloc_amem(sc);
+ if (error) {
+ device_printf(dev, "failed to allocate "
+ "attribute memory\n");
+ goto fail;
+ }
+ }
+
sc->ndis_regvals = ndis_regvals;
#if __FreeBSD_version < 502113
@@ -737,6 +746,9 @@ ndis_detach(dev)
bus_release_resource(dev, SYS_RES_MEMORY,
sc->ndis_altmem_rid, sc->ndis_res_altmem);
+ if (sc->ndis_iftype == PCMCIABus)
+ ndis_free_amem(sc);
+
if (sc->ndis_sc)
ndis_destroy_dma(sc);
@@ -957,8 +969,11 @@ ndis_linksts_done(adapter)
ifp = block->nmb_ifp;
sc = ifp->if_softc;
- if (!NDIS_INITIALIZED(sc))
+ NDIS_LOCK(sc);
+ if (!NDIS_INITIALIZED(sc)) {
+ NDIS_UNLOCK(sc);
return;
+ }
switch (block->nmb_getstat) {
case NDIS_STATUS_MEDIA_CONNECT:
@@ -973,6 +988,7 @@ ndis_linksts_done(adapter)
break;
}
+ NDIS_UNLOCK(sc);
return;
}
OpenPOWER on IntegriCloud