diff options
-rw-r--r-- | sys/dev/if_ndis/if_ndis.c | 20 |
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; } |