diff options
author | wpaul <wpaul@FreeBSD.org> | 2004-08-01 06:42:44 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2004-08-01 06:42:44 +0000 |
commit | 6431d3dd07040fe58d10ed38aea75caf6d654671 (patch) | |
tree | 768f38d5fa2e0f922113aa580e21d9fd8d593163 /sys/dev/if_ndis | |
parent | b66f530bf187f86ca892e33bec2679d6450d628b (diff) | |
download | FreeBSD-src-6431d3dd07040fe58d10ed38aea75caf6d654671.zip FreeBSD-src-6431d3dd07040fe58d10ed38aea75caf6d654671.tar.gz |
Add some minor changes related to PCMCIA attribute memory mapping
(which I apparently forgot to commit earlier).
Acquire NDIS_LOCK() in ndis_linksts_done().
Diffstat (limited to 'sys/dev/if_ndis')
-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; } |