git: bfc99943b04b - main - ndis(4): remove as previous announced

Brooks Davis brooks at FreeBSD.org
Mon Jan 25 21:46:07 UTC 2021


The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=bfc99943b04b46a6c1c885ce7bcc6f235b7422aa

commit bfc99943b04b46a6c1c885ce7bcc6f235b7422aa
Author:     Brooks Davis <brooks at one-eyed-alien.net>
AuthorDate: 2021-01-25 21:45:03 +0000
Commit:     Brooks Davis <brooks at FreeBSD.org>
CommitDate: 2021-01-25 21:45:03 +0000

    ndis(4): remove as previous announced
    
    nids(4) was a clever idea in the early 2000's when the market was
    flooded with 10/100 NICs with Windows-only drivers, but that hasn't been
    the case for ages and the driver has had no meaningful maintenance in
    ages. It only supports Windows-XP era drivers.
    
    Also remove:
     - ndis support from wpa_supplicant
     - ndiscvt(8)
    
    Reviewed By:    emaste, bcr (manpages)
    Differential Revision:  https://reviews.freebsd.org/D27609
---
 ObsoleteFiles.inc                           |    9 +
 share/man/man4/Makefile                     |    4 -
 share/man/man4/ndis.4                       |  155 -
 sys/compat/ndis/cfg_var.h                   |   49 -
 sys/compat/ndis/hal_var.h                   |   55 -
 sys/compat/ndis/kern_ndis.c                 | 1447 ---------
 sys/compat/ndis/kern_windrv.c               | 1170 -------
 sys/compat/ndis/ndis_var.h                  | 1763 -----------
 sys/compat/ndis/ntoskrnl_var.h              | 1517 ---------
 sys/compat/ndis/pe_var.h                    |  555 ----
 sys/compat/ndis/resource_var.h              |  201 --
 sys/compat/ndis/subr_hal.c                  |  482 ---
 sys/compat/ndis/subr_ndis.c                 | 3372 --------------------
 sys/compat/ndis/subr_ntoskrnl.c             | 4446 ---------------------------
 sys/compat/ndis/subr_pe.c                   |  644 ----
 sys/compat/ndis/subr_usbd.c                 | 1461 ---------
 sys/compat/ndis/usbd_var.h                  |  224 --
 sys/compat/ndis/winx32_wrap.S               |  385 ---
 sys/compat/ndis/winx64_wrap.S               |  179 --
 sys/conf/files.amd64                        |    1 -
 sys/conf/files.i386                         |    1 -
 sys/conf/files.x86                          |   10 -
 sys/dev/if_ndis/if_ndis.c                   | 3423 ---------------------
 sys/dev/if_ndis/if_ndis_pci.c               |  357 ---
 sys/dev/if_ndis/if_ndis_usb.c               |  240 --
 sys/dev/if_ndis/if_ndisvar.h                |  263 --
 sys/modules/Makefile                        |    4 -
 sys/modules/if_ndis/Makefile                |   10 -
 targets/pseudo/userland/Makefile.depend     |    3 -
 tools/build/mk/OptionalObsoleteFiles.inc    |    8 -
 tools/kerneldoc/subsys/Doxyfile-dev_if_ndis |   21 -
 usr.sbin/Makefile.amd64                     |    3 -
 usr.sbin/Makefile.i386                      |    3 -
 usr.sbin/ndiscvt/Makefile                   |   27 -
 usr.sbin/ndiscvt/Makefile.depend            |   19 -
 usr.sbin/ndiscvt/inf-parse.y                |  112 -
 usr.sbin/ndiscvt/inf-token.l                |  134 -
 usr.sbin/ndiscvt/inf.c                      |  920 ------
 usr.sbin/ndiscvt/inf.h                      |   61 -
 usr.sbin/ndiscvt/ndiscvt.8                  |  283 --
 usr.sbin/ndiscvt/ndiscvt.c                  |  436 ---
 usr.sbin/ndiscvt/ndisgen.8                  |   86 -
 usr.sbin/ndiscvt/ndisgen.sh                 |  556 ----
 usr.sbin/ndiscvt/windrv_stub.c              |  268 --
 usr.sbin/wpa/Makefile                       |    1 -
 usr.sbin/wpa/ndis_events/Makefile           |    8 -
 usr.sbin/wpa/ndis_events/Makefile.depend    |   18 -
 usr.sbin/wpa/ndis_events/ndis_events.8      |  135 -
 usr.sbin/wpa/ndis_events/ndis_events.c      |  353 ---
 usr.sbin/wpa/wpa_supplicant/Makefile        |    6 +-
 usr.sbin/wpa/wpa_supplicant/Packet32.c      |  415 ---
 usr.sbin/wpa/wpa_supplicant/Packet32.h      |   69 -
 usr.sbin/wpa/wpa_supplicant/ntddndis.h      |   31 -
 53 files changed, 11 insertions(+), 26392 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 1d0766ec894a..29cf25e152e6 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -36,6 +36,15 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20210125: ndis driver support removed
+OLD_FILES+=usr/sbin/ndiscvt
+OLD_FILES+=usr/sbin/ndisgen
+OLD_FILES+=usr/share/man/man4/ndis.4.gz
+OLD_FILES+=usr/share/man/man4/if_ndis.4.gz
+OLD_FILES+=usr/share/man/man8/ndiscvt.8.gz
+OLD_FILES+=usr/share/man/man8/ndisgen.8.gz
+OLD_FILES+=usr/share/misc/windrv_stub.c
+
 # 20210116: if_wl_wavelan.h removed
 .if ${TARGET_ARCH} == "i386"
 OLD_FILES+=usr/include/machine/if_wl_wavelan.h
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index 10034a72d608..65f8bc817db3 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -325,7 +325,6 @@ MAN=	aac.4 \
 	mx25l.4 \
 	mxge.4 \
 	my.4 \
-	${_ndis.4} \
 	net80211.4 \
 	netdump.4 \
 	netfpga10g_nf10bmac.4 \
@@ -715,7 +714,6 @@ MLINKS+=msk.4 if_msk.4
 MLINKS+=mwl.4 if_mwl.4
 MLINKS+=mxge.4 if_mxge.4
 MLINKS+=my.4 if_my.4
-MLINKS+=${_ndis.4} ${_if_ndis.4}
 MLINKS+=netfpga10g_nf10bmac.4 if_nf10bmac.4
 MLINKS+=netintro.4 net.4 \
 	netintro.4 networking.4
@@ -815,7 +813,6 @@ _hwpstate_intel.4=	hwpstate_intel.4
 _i8254.4=	i8254.4
 _ichwd.4=	ichwd.4
 _if_bxe.4=	if_bxe.4
-_if_ndis.4=	if_ndis.4
 _if_nfe.4=	if_nfe.4
 _if_urtw.4=	if_urtw.4
 _if_vmx.4=	if_vmx.4
@@ -826,7 +823,6 @@ _io.4=		io.4
 _itwd.4=	itwd.4
 _linux.4=	linux.4
 _nda.4=		nda.4
-_ndis.4=	ndis.4
 _nfe.4=		nfe.4
 _nfsmb.4=	nfsmb.4
 _if_ntb.4=	if_ntb.4
diff --git a/share/man/man4/ndis.4 b/share/man/man4/ndis.4
deleted file mode 100644
index 0a1ae39bff62..000000000000
--- a/share/man/man4/ndis.4
+++ /dev/null
@@ -1,155 +0,0 @@
-.\" Copyright (c) 2003
-.\"	Bill Paul <wpaul at windriver.com>. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"	This product includes software developed by Bill Paul.
-.\" 4. Neither the name of the author nor the names of any co-contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"   without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
-.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-.\" THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 14, 2010
-.Dt NDIS 4
-.Os
-.Sh NAME
-.Nm ndis
-.Nd NDIS miniport driver wrapper
-.Sh SYNOPSIS
-.Cd "options NDISAPI"
-.Cd "device ndis"
-.Cd "device wlan"
-.Sh DESCRIPTION
-The
-.Nm
-driver is a wrapper designed to allow binary
-.Tn Windows\[rg]
-NDIS miniport
-network drivers to be used with
-.Fx .
-The
-.Nm
-driver is provided in source code form and must be combined with
-the
-.Tn Windows\[rg]
-driver supplied with your network adapter.
-The
-.Nm
-driver uses the
-.Nm ndisapi
-kernel subsystem to relocate and link the
-.Tn Windows\[rg]
-binary so
-that it can be used in conjunction with native code.
-The
-.Nm ndisapi
-subsystem provides an interface between the NDIS API and the
-.Fx
-networking infrastructure.
-The
-.Tn Windows\[rg]
-driver is essentially
-fooled into thinking it is running on
-.Tn Windows\[rg] .
-Note that this
-means the
-.Nm
-driver is only useful on x86 machines.
-.Pp
-To build a functional driver, the user must have a copy of the
-driver distribution media for his or her card.
-From this distribution,
-the user must extract two files: the
-.Pa .SYS
-file containing the driver
-binary code, and its companion
-.Pa .INF
-file, which contains the
-definitions for driver-specific registry keys and other installation
-data such as device identifiers.
-These two files can be converted
-into a kernel module file using the
-.Xr ndisgen 8
-utility.
-This file contains a binary image of the driver plus
-registry key data.
-When the
-.Nm
-driver loads, it will create
-.Xr sysctl 3
-nodes for each registry key extracted from the
-.Pa .INF
-file.
-.Pp
-The
-.Nm
-driver is designed to support mainly Ethernet and wireless
-network devices with PCI and USB bus attachments.
-(Cardbus devices are also supported as PCI.)
-It can
-support many different media types and speeds.
-One limitation
-however, is that there is no consistent way to learn if an
-Ethernet device is operating in full or half duplex mode.
-The NDIS API allows for a generic means for determining link
-state and speed, but not the duplex setting.
-There may be
-driver-specific registry keys to control the media setting
-which can be configured via the
-.Xr sysctl 8
-command.
-.Sh DEPRECATION NOTICE
-This driver is scheduled for removal prior to the release of
-.Fx 14.0
-.Sh DIAGNOSTICS
-.Bl -diag
-.It "ndis%d: watchdog timeout"
-A packet was queued for transmission and a transmit command was
-issued, however the device failed to acknowledge the transmission
-before a timeout expired.
-.El
-.Sh SEE ALSO
-.Xr altq 4 ,
-.Xr arp 4 ,
-.Xr netintro 4 ,
-.Xr ng_ether 4 ,
-.Xr ifconfig 8 ,
-.Xr ndis_events 8 ,
-.Xr ndiscvt 8 ,
-.Xr ndisgen 8 ,
-.Xr wpa_supplicant 8
-.Rs
-.%T "NDIS 5.1 specification"
-.%U http://www.microsoft.com
-.Re
-.Sh HISTORY
-The
-.Nm
-device driver first appeared in
-.Fx 5.3 .
-.Sh AUTHORS
-The
-.Nm
-driver was written by
-.An Bill Paul Aq Mt wpaul at windriver.com .
diff --git a/sys/compat/ndis/cfg_var.h b/sys/compat/ndis/cfg_var.h
deleted file mode 100644
index ff40a85926be..000000000000
--- a/sys/compat/ndis/cfg_var.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- *	Bill Paul <wpaul at windriver.com>.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _CFG_VAR_H_
-#define _CFG_VAR_H_
-
-struct ndis_cfg {
-	char			*nc_cfgkey;
-	char			*nc_cfgdesc;
-	char			nc_val[256];
-	int			nc_idx;
-};
-
-typedef struct ndis_cfg ndis_cfg;
-
-#endif /* _CFG_VAR_H_ */
diff --git a/sys/compat/ndis/hal_var.h b/sys/compat/ndis/hal_var.h
deleted file mode 100644
index f8864e2e7071..000000000000
--- a/sys/compat/ndis/hal_var.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- *	Bill Paul <wpaul at windriver.com>.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _HAL_VAR_H_
-#define _HAL_VAR_H_
-
-#define NDIS_BUS_SPACE_IO	X86_BUS_SPACE_IO
-#define NDIS_BUS_SPACE_MEM	X86_BUS_SPACE_MEM
-
-extern image_patch_table hal_functbl[];
-
-__BEGIN_DECLS
-extern int hal_libinit(void);
-extern int hal_libfini(void);
-extern uint8_t KfAcquireSpinLock(kspin_lock *);
-extern void KfReleaseSpinLock(kspin_lock *, uint8_t);
-extern uint8_t KfRaiseIrql(uint8_t);
-extern void KfLowerIrql(uint8_t);
-extern uint8_t KeGetCurrentIrql(void);
-__END_DECLS
-
-#endif /* _HAL_VAR_H_ */
diff --git a/sys/compat/ndis/kern_ndis.c b/sys/compat/ndis/kern_ndis.c
deleted file mode 100644
index 153849fa1cf6..000000000000
--- a/sys/compat/ndis/kern_ndis.c
+++ /dev/null
@@ -1,1447 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 2003
- *	Bill Paul <wpaul at windriver.com>.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by Bill Paul.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/unistd.h>
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/callout.h>
-#include <sys/socket.h>
-#include <sys/queue.h>
-#include <sys/sysctl.h>
-#include <sys/proc.h>
-#include <sys/malloc.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/conf.h>
-
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/kthread.h>
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <sys/bus.h>
-#include <sys/rman.h>
-
-#include <net/if.h>
-#include <net/if_var.h>
-#include <net/if_arp.h>
-#include <net/ethernet.h>
-#include <net/if_dl.h>
-#include <net/if_media.h>
-
-#include <net80211/ieee80211_var.h>
-#include <net80211/ieee80211_ioctl.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-
-#include <compat/ndis/pe_var.h>
-#include <compat/ndis/cfg_var.h>
-#include <compat/ndis/resource_var.h>
-#include <compat/ndis/ntoskrnl_var.h>
-#include <compat/ndis/ndis_var.h>
-#include <compat/ndis/hal_var.h>
-#include <compat/ndis/usbd_var.h>
-#include <dev/if_ndis/if_ndisvar.h>
-
-#define NDIS_DUMMY_PATH "\\\\some\\bogus\\path"
-#define	NDIS_FLAG_RDONLY 1
-
-static void ndis_status_func(ndis_handle, ndis_status, void *, uint32_t);
-static void ndis_statusdone_func(ndis_handle);
-static void ndis_setdone_func(ndis_handle, ndis_status);
-static void ndis_getdone_func(ndis_handle, ndis_status);
-static void ndis_resetdone_func(ndis_handle, ndis_status, uint8_t);
-static void ndis_sendrsrcavail_func(ndis_handle);
-static void ndis_intrsetup(kdpc *, device_object *,
-	irp *, struct ndis_softc *);
-static void ndis_return(device_object *, void *);
-
-static image_patch_table kernndis_functbl[] = {
-	IMPORT_SFUNC(ndis_status_func, 4),
-	IMPORT_SFUNC(ndis_statusdone_func, 1),
-	IMPORT_SFUNC(ndis_setdone_func, 2),
-	IMPORT_SFUNC(ndis_getdone_func, 2),
-	IMPORT_SFUNC(ndis_resetdone_func, 3),
-	IMPORT_SFUNC(ndis_sendrsrcavail_func, 1),
-	IMPORT_SFUNC(ndis_intrsetup, 4),
-	IMPORT_SFUNC(ndis_return, 1),
-	{ NULL, NULL, NULL }
-};
-
-static struct nd_head ndis_devhead;
-
-/*
- * This allows us to export our symbols to other modules.
- * Note that we call ourselves 'ndisapi' to avoid a namespace
- * collision with if_ndis.ko, which internally calls itself
- * 'ndis.'
- *
- * Note: some of the subsystems depend on each other, so the
- * order in which they're started is important. The order of
- * importance is:
- *
- * HAL - spinlocks and IRQL manipulation
- * ntoskrnl - DPC and workitem threads, object waiting
- * windrv - driver/device registration
- *
- * The HAL should also be the last thing shut down, since
- * the ntoskrnl subsystem will use spinlocks right up until
- * the DPC and workitem threads are terminated.
- */
-
-static int
-ndis_modevent(module_t mod, int cmd, void *arg)
-{
-	int			error = 0;
-	image_patch_table	*patch;
-
-	switch (cmd) {
-	case MOD_LOAD:
-		/* Initialize subsystems */
-		hal_libinit();
-		ntoskrnl_libinit();
-		windrv_libinit();
-		ndis_libinit();
-		usbd_libinit();
-
-		patch = kernndis_functbl;
-		while (patch->ipt_func != NULL) {
-			windrv_wrap((funcptr)patch->ipt_func,
-			    (funcptr *)&patch->ipt_wrap,
-			    patch->ipt_argcnt, patch->ipt_ftype);
-			patch++;
-		}
-
-		TAILQ_INIT(&ndis_devhead);
-		break;
-	case MOD_SHUTDOWN:
-		if (TAILQ_FIRST(&ndis_devhead) == NULL) {
-			/* Shut down subsystems */
-			ndis_libfini();
-			usbd_libfini();
-			windrv_libfini();
-			ntoskrnl_libfini();
-			hal_libfini();
-
-			patch = kernndis_functbl;
-			while (patch->ipt_func != NULL) {
-				windrv_unwrap(patch->ipt_wrap);
-				patch++;
-			}
-		}
-		break;
-	case MOD_UNLOAD:
-		/* Shut down subsystems */
-		ndis_libfini();
-		usbd_libfini();
-		windrv_libfini();
-		ntoskrnl_libfini();
-		hal_libfini();
-
-		patch = kernndis_functbl;
-		while (patch->ipt_func != NULL) {
-			windrv_unwrap(patch->ipt_wrap);
-			patch++;
-		}
-
-		break;
-	default:
-		error = EINVAL;
-		break;
-	}
-
-	return (error);
-}
-DEV_MODULE(ndisapi, ndis_modevent, NULL);
-MODULE_VERSION(ndisapi, 1);
-
-static void
-ndis_sendrsrcavail_func(adapter)
-	ndis_handle		adapter;
-{
-}
-
-static void
-ndis_status_func(adapter, status, sbuf, slen)
-	ndis_handle		adapter;
-	ndis_status		status;
-	void			*sbuf;
-	uint32_t		slen;
-{
-	ndis_miniport_block	*block;
-	struct ndis_softc	*sc;
-	struct ifnet		*ifp;
-
-	block = adapter;
-	sc = device_get_softc(block->nmb_physdeviceobj->do_devext);
-	ifp = NDISUSB_GET_IFNET(sc);
-	if ( ifp && ifp->if_flags & IFF_DEBUG)
-		device_printf(sc->ndis_dev, "status: %x\n", status);
-}
-
-static void
-ndis_statusdone_func(adapter)
-	ndis_handle		adapter;
-{
-	ndis_miniport_block	*block;
-	struct ndis_softc	*sc;
-	struct ifnet		*ifp;
-
-	block = adapter;
-	sc = device_get_softc(block->nmb_physdeviceobj->do_devext);
-	ifp = NDISUSB_GET_IFNET(sc);
-	if (ifp && ifp->if_flags & IFF_DEBUG)
-		device_printf(sc->ndis_dev, "status complete\n");
-}
-
-static void
-ndis_setdone_func(adapter, status)
-	ndis_handle		adapter;
-	ndis_status		status;
-{
-	ndis_miniport_block	*block;
-	block = adapter;
-
-	block->nmb_setstat = status;
-	KeSetEvent(&block->nmb_setevent, IO_NO_INCREMENT, FALSE);
-}
-
-static void
-ndis_getdone_func(adapter, status)
-	ndis_handle		adapter;
-	ndis_status		status;
-{
-	ndis_miniport_block	*block;
-	block = adapter;
-
-	block->nmb_getstat = status;
-	KeSetEvent(&block->nmb_getevent, IO_NO_INCREMENT, FALSE);
-}
-
-static void
-ndis_resetdone_func(ndis_handle adapter, ndis_status status,
-	uint8_t addressingreset)
-{
-	ndis_miniport_block	*block;
-	struct ndis_softc	*sc;
-	struct ifnet		*ifp;
-
-	block = adapter;
-	sc = device_get_softc(block->nmb_physdeviceobj->do_devext);
-	ifp = NDISUSB_GET_IFNET(sc);
-
-	if (ifp && ifp->if_flags & IFF_DEBUG)
-		device_printf(sc->ndis_dev, "reset done...\n");
-	KeSetEvent(&block->nmb_resetevent, IO_NO_INCREMENT, FALSE);
-}
-
-int
-ndis_create_sysctls(arg)
-	void			*arg;
-{
-	struct ndis_softc	*sc;
-	ndis_cfg		*vals;
-	char			buf[256];
-	struct sysctl_oid	*oidp;
-	struct sysctl_ctx_entry	*e;
-
-	if (arg == NULL)
-		return (EINVAL);
-
-	sc = arg;
-	/*
-	device_printf(sc->ndis_dev, "ndis_create_sysctls() sc=%p\n", sc);
-	*/
-	vals = sc->ndis_regvals;
-
-	TAILQ_INIT(&sc->ndis_cfglist_head);
-
-	/* Add the driver-specific registry keys. */
-
-	while(1) {
-		if (vals->nc_cfgkey == NULL)
-			break;
-
-		if (vals->nc_idx != sc->ndis_devidx) {
-			vals++;
-			continue;
-		}
-
-		/* See if we already have a sysctl with this name */
-
-		oidp = NULL;
-		TAILQ_FOREACH(e, device_get_sysctl_ctx(sc->ndis_dev), link) {
-			oidp = e->entry;
-			if (strcasecmp(oidp->oid_name, vals->nc_cfgkey) == 0)
-				break;
-			oidp = NULL;
-		}
-
-		if (oidp != NULL) {
-			vals++;
-			continue;
-		}
-
-		ndis_add_sysctl(sc, vals->nc_cfgkey, vals->nc_cfgdesc,
-		    vals->nc_val, CTLFLAG_RW);
-		vals++;
-	}
-
-	/* Now add a couple of builtin keys. */
-
-	/*
-	 * Environment can be either Windows (0) or WindowsNT (1).
-	 * We qualify as the latter.
-	 */
-	ndis_add_sysctl(sc, "Environment",
-	    "Windows environment", "1", NDIS_FLAG_RDONLY);
-
-	/* NDIS version should be 5.1. */
-	ndis_add_sysctl(sc, "NdisVersion",
-	    "NDIS API Version", "0x00050001", NDIS_FLAG_RDONLY);
-
-	/*
-	 * Some miniport drivers rely on the existence of the SlotNumber,
-	 * NetCfgInstanceId and DriverDesc keys.
-	 */
-	ndis_add_sysctl(sc, "SlotNumber", "Slot Numer", "01", NDIS_FLAG_RDONLY);
-	ndis_add_sysctl(sc, "NetCfgInstanceId", "NetCfgInstanceId",
-	    "{12345678-1234-5678-CAFE0-123456789ABC}", NDIS_FLAG_RDONLY);
-	ndis_add_sysctl(sc, "DriverDesc", "Driver Description",
-	    "NDIS Network Adapter", NDIS_FLAG_RDONLY);
-
-	/* Bus type (PCI, PCMCIA, etc...) */
-	sprintf(buf, "%d", (int)sc->ndis_iftype);
-	ndis_add_sysctl(sc, "BusType", "Bus Type", buf, NDIS_FLAG_RDONLY);
-
-	if (sc->ndis_res_io != NULL) {
-		sprintf(buf, "0x%jx", rman_get_start(sc->ndis_res_io));
-		ndis_add_sysctl(sc, "IOBaseAddress",
-		    "Base I/O Address", buf, NDIS_FLAG_RDONLY);
-	}
-
-	if (sc->ndis_irq != NULL) {
-		sprintf(buf, "%ju", rman_get_start(sc->ndis_irq));
-		ndis_add_sysctl(sc, "InterruptNumber",
-		    "Interrupt Number", buf, NDIS_FLAG_RDONLY);
-	}
-
-	return (0);
-}
-
-int
-ndis_add_sysctl(arg, key, desc, val, flag_rdonly)
-	void			*arg;
-	char			*key;
-	char			*desc;
-	char			*val;
-	int			flag_rdonly;
-{
-	struct ndis_softc	*sc;
-	struct ndis_cfglist	*cfg;
-	char			descstr[256];
-
-	sc = arg;
-
-	cfg = malloc(sizeof(struct ndis_cfglist), M_DEVBUF, M_NOWAIT|M_ZERO);
-
-	if (cfg == NULL) {
-		printf("failed for %s\n", key);
-		return (ENOMEM);
-	}
-
-	cfg->ndis_cfg.nc_cfgkey = strdup(key, M_DEVBUF);
-	if (desc == NULL) {
-		snprintf(descstr, sizeof(descstr), "%s (dynamic)", key);
-		cfg->ndis_cfg.nc_cfgdesc = strdup(descstr, M_DEVBUF);
-	} else
-		cfg->ndis_cfg.nc_cfgdesc = strdup(desc, M_DEVBUF);
-	strcpy(cfg->ndis_cfg.nc_val, val);
-
-	TAILQ_INSERT_TAIL(&sc->ndis_cfglist_head, cfg, link);
-
-	if (flag_rdonly != 0) {
-		cfg->ndis_oid =
-		    SYSCTL_ADD_STRING(device_get_sysctl_ctx(sc->ndis_dev),
-		    SYSCTL_CHILDREN(device_get_sysctl_tree(sc->ndis_dev)),
-		    OID_AUTO, cfg->ndis_cfg.nc_cfgkey, CTLFLAG_RD,
-		    cfg->ndis_cfg.nc_val, sizeof(cfg->ndis_cfg.nc_val),
-		    cfg->ndis_cfg.nc_cfgdesc);
-	} else {
-		cfg->ndis_oid =
-		    SYSCTL_ADD_STRING(device_get_sysctl_ctx(sc->ndis_dev),
-		    SYSCTL_CHILDREN(device_get_sysctl_tree(sc->ndis_dev)),
-		    OID_AUTO, cfg->ndis_cfg.nc_cfgkey, CTLFLAG_RW,
-		    cfg->ndis_cfg.nc_val, sizeof(cfg->ndis_cfg.nc_val),
-		    cfg->ndis_cfg.nc_cfgdesc);
-	}
-	return (0);
-}
-
-/*
- * Somewhere, somebody decided "hey, let's automatically create
- * a sysctl tree for each device instance as it's created -- it'll
- * make life so much easier!" Lies. Why must they turn the kernel
- * into a house of lies?
- */
-
-int
-ndis_flush_sysctls(arg)
-	void			*arg;
-{
-	struct ndis_softc	*sc;
-	struct ndis_cfglist	*cfg;
-	struct sysctl_ctx_list	*clist;
-
-	sc = arg;
-
-	clist = device_get_sysctl_ctx(sc->ndis_dev);
-
-	while (!TAILQ_EMPTY(&sc->ndis_cfglist_head)) {
-		cfg = TAILQ_FIRST(&sc->ndis_cfglist_head);
-		TAILQ_REMOVE(&sc->ndis_cfglist_head, cfg, link);
-		sysctl_ctx_entry_del(clist, cfg->ndis_oid);
-		sysctl_remove_oid(cfg->ndis_oid, 1, 0);
-		free(cfg->ndis_cfg.nc_cfgkey, M_DEVBUF);
-		free(cfg->ndis_cfg.nc_cfgdesc, M_DEVBUF);
-		free(cfg, M_DEVBUF);
-	}
-
-	return (0);
-}
-
-void *
-ndis_get_routine_address(functbl, name)
-	struct image_patch_table *functbl;
-	char			*name;
-{
-	int			i;
-
-	for (i = 0; functbl[i].ipt_name != NULL; i++)
-		if (strcmp(name, functbl[i].ipt_name) == 0)
-			return (functbl[i].ipt_wrap);
-	return (NULL);
-}
-
-static void
-ndis_return(dobj, arg)
-	device_object		*dobj;
-	void			*arg;
-{
-	ndis_miniport_block	*block;
-	ndis_miniport_characteristics	*ch;
-	ndis_return_handler	returnfunc;
-	ndis_handle		adapter;
-	ndis_packet		*p;
-	uint8_t			irql;
-	list_entry		*l;
-
-	block = arg;
-	ch = IoGetDriverObjectExtension(dobj->do_drvobj, (void *)1);
-
-	p = arg;
-	adapter = block->nmb_miniportadapterctx;
-
-	if (adapter == NULL)
-		return;
-
-	returnfunc = ch->nmc_return_packet_func;
-
-	KeAcquireSpinLock(&block->nmb_returnlock, &irql);
-	while (!IsListEmpty(&block->nmb_returnlist)) {
-		l = RemoveHeadList((&block->nmb_returnlist));
-		p = CONTAINING_RECORD(l, ndis_packet, np_list);
-		InitializeListHead((&p->np_list));
-		KeReleaseSpinLock(&block->nmb_returnlock, irql);
-		MSCALL2(returnfunc, adapter, p);
-		KeAcquireSpinLock(&block->nmb_returnlock, &irql);
-	}
-	KeReleaseSpinLock(&block->nmb_returnlock, irql);
-}
-
-static void
-ndis_ext_free(struct mbuf *m)
-{
-
-	return (ndis_return_packet(m->m_ext.ext_arg1));
-}
-
-void
-ndis_return_packet(ndis_packet *p)
-{
-	ndis_miniport_block	*block;
-
-	if (p == NULL)
-		return;
-
-	/* Decrement refcount. */
-	p->np_refcnt--;
-
-	/* Release packet when refcount hits zero, otherwise return. */
-	if (p->np_refcnt)
-		return;
-
-	block = ((struct ndis_softc *)p->np_softc)->ndis_block;
-
-	KeAcquireSpinLockAtDpcLevel(&block->nmb_returnlock);
-	InitializeListHead((&p->np_list));
-	InsertHeadList((&block->nmb_returnlist), (&p->np_list));
-	KeReleaseSpinLockFromDpcLevel(&block->nmb_returnlock);
-
-	IoQueueWorkItem(block->nmb_returnitem,
-	    (io_workitem_func)kernndis_functbl[7].ipt_wrap,
-	    WORKQUEUE_CRITICAL, block);
-}
-
-void
-ndis_free_bufs(b0)
-	ndis_buffer		*b0;
-{
-	ndis_buffer		*next;
-
-	if (b0 == NULL)
-		return;
-
-	while(b0 != NULL) {
-		next = b0->mdl_next;
-		IoFreeMdl(b0);
-		b0 = next;
-	}
-}
-
-void
-ndis_free_packet(p)
-	ndis_packet		*p;
-{
-	if (p == NULL)
-		return;
-
-	ndis_free_bufs(p->np_private.npp_head);
-	NdisFreePacket(p);
-}
-
-int
-ndis_convert_res(arg)
-	void			*arg;
-{
-	struct ndis_softc	*sc;
-	ndis_resource_list	*rl = NULL;
-	cm_partial_resource_desc	*prd = NULL;
-	ndis_miniport_block	*block;
-	device_t		dev;
-	struct resource_list	*brl;
*** 25949 LINES SKIPPED ***


More information about the dev-commits-src-all mailing list