summaryrefslogtreecommitdiffstats
path: root/sys/compat/ndis/kern_ndis.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2005-03-27 10:35:07 +0000
committerwpaul <wpaul@FreeBSD.org>2005-03-27 10:35:07 +0000
commit74837aa85b0d646e89c04c798b9dcb89c2742630 (patch)
tree9d990a6bd6fb56418c8731c931ab5eb0f6efab2e /sys/compat/ndis/kern_ndis.c
parente41bbf92198a45401312c16cca217f020467f3d8 (diff)
downloadFreeBSD-src-74837aa85b0d646e89c04c798b9dcb89c2742630.zip
FreeBSD-src-74837aa85b0d646e89c04c798b9dcb89c2742630.tar.gz
Argh. PCI resource list became an STAILQ instead of an SLIST. Try to
deal with this while maintaining backards source compatibility with stable.
Diffstat (limited to 'sys/compat/ndis/kern_ndis.c')
-rw-r--r--sys/compat/ndis/kern_ndis.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/compat/ndis/kern_ndis.c b/sys/compat/ndis/kern_ndis.c
index d2ce35b..7e53412 100644
--- a/sys/compat/ndis/kern_ndis.c
+++ b/sys/compat/ndis/kern_ndis.c
@@ -902,15 +902,22 @@ ndis_convert_res(arg)
ndis_miniport_block *block;
device_t dev;
struct resource_list *brl;
+ struct resource_list_entry *brle;
+#if __FreeBSD_version < 600022
struct resource_list brl_rev;
- struct resource_list_entry *brle, *n;
+ struct resource_list_entry *n;
+#endif
int error = 0;
sc = arg;
block = sc->ndis_block;
dev = sc->ndis_dev;
+#if __FreeBSD_version < 600022
SLIST_INIT(&brl_rev);
+#else
+ STAILQ_INIT(&brl_rev);
+#endif
rl = malloc(sizeof(ndis_resource_list) +
(sizeof(cm_partial_resource_desc) * (sc->ndis_rescnt - 1)),
@@ -928,6 +935,7 @@ ndis_convert_res(arg)
if (brl != NULL) {
+#if __FreeBSD_version < 600022
/*
* We have a small problem. Some PCI devices have
* multiple I/O ranges. Windows orders them starting
@@ -954,6 +962,9 @@ ndis_convert_res(arg)
}
SLIST_FOREACH(brle, &brl_rev, link) {
+#else
+ STAILQ_FOREACH(brle, &brl, link) {
+#endif
switch (brle->type) {
case SYS_RES_IOPORT:
prd->cprd_type = CmResourceTypePort;
@@ -994,11 +1005,13 @@ ndis_convert_res(arg)
bad:
+#if __FreeBSD_version < 600022
while (!SLIST_EMPTY(&brl_rev)) {
n = SLIST_FIRST(&brl_rev);
SLIST_REMOVE_HEAD(&brl_rev, link);
free (n, M_TEMP);
}
+#endif
return(error);
}
OpenPOWER on IntegriCloud