summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2004-08-01 06:42:44 +0000
committerwpaul <wpaul@FreeBSD.org>2004-08-01 06:42:44 +0000
commit6431d3dd07040fe58d10ed38aea75caf6d654671 (patch)
tree768f38d5fa2e0f922113aa580e21d9fd8d593163 /sys/dev/if_ndis
parentb66f530bf187f86ca892e33bec2679d6450d628b (diff)
downloadFreeBSD-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.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