[Midnightbsd-cvs] src [10146] trunk/sys/compat/ndis: sync ndis with freebsd 10

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Wed May 30 16:39:38 EDT 2018


Revision: 10146
          http://svnweb.midnightbsd.org/src/?rev=10146
Author:   laffer1
Date:     2018-05-30 16:39:37 -0400 (Wed, 30 May 2018)
Log Message:
-----------
sync ndis with freebsd 10

Modified Paths:
--------------
    trunk/sys/compat/ndis/kern_ndis.c
    trunk/sys/compat/ndis/ndis_var.h
    trunk/sys/compat/ndis/subr_hal.c
    trunk/sys/compat/ndis/subr_ndis.c
    trunk/sys/compat/ndis/subr_ntoskrnl.c

Modified: trunk/sys/compat/ndis/kern_ndis.c
===================================================================
--- trunk/sys/compat/ndis/kern_ndis.c	2018-05-30 20:35:51 UTC (rev 10145)
+++ trunk/sys/compat/ndis/kern_ndis.c	2018-05-30 20:39:37 UTC (rev 10146)
@@ -78,6 +78,7 @@
 #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);
@@ -325,36 +326,36 @@
 	 * We qualify as the latter.
 	 */
 	ndis_add_sysctl(sc, "Environment",
-	    "Windows environment", "1", CTLFLAG_RD);
+	    "Windows environment", "1", NDIS_FLAG_RDONLY);
 
 	/* NDIS version should be 5.1. */
 	ndis_add_sysctl(sc, "NdisVersion",
-	    "NDIS API Version", "0x00050001", CTLFLAG_RD);
+	    "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", CTLFLAG_RD);
+	ndis_add_sysctl(sc, "SlotNumber", "Slot Numer", "01", NDIS_FLAG_RDONLY);
 	ndis_add_sysctl(sc, "NetCfgInstanceId", "NetCfgInstanceId",
-	    "{12345678-1234-5678-CAFE0-123456789ABC}", CTLFLAG_RD);
+	    "{12345678-1234-5678-CAFE0-123456789ABC}", NDIS_FLAG_RDONLY);
 	ndis_add_sysctl(sc, "DriverDesc", "Driver Description",
-	    "NDIS Network Adapter", CTLFLAG_RD);
+	    "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, CTLFLAG_RD);
+	ndis_add_sysctl(sc, "BusType", "Bus Type", buf, NDIS_FLAG_RDONLY);
 
 	if (sc->ndis_res_io != NULL) {
 		sprintf(buf, "0x%lx", rman_get_start(sc->ndis_res_io));
 		ndis_add_sysctl(sc, "IOBaseAddress",
-		    "Base I/O Address", buf, CTLFLAG_RD);
+		    "Base I/O Address", buf, NDIS_FLAG_RDONLY);
 	}
 
 	if (sc->ndis_irq != NULL) {
 		sprintf(buf, "%lu", rman_get_start(sc->ndis_irq));
 		ndis_add_sysctl(sc, "InterruptNumber",
-		    "Interrupt Number", buf, CTLFLAG_RD);
+		    "Interrupt Number", buf, NDIS_FLAG_RDONLY);
 	}
 
 	return (0);
@@ -361,12 +362,12 @@
 }
 
 int
-ndis_add_sysctl(arg, key, desc, val, flag)
+ndis_add_sysctl(arg, key, desc, val, flag_rdonly)
 	void			*arg;
 	char			*key;
 	char			*desc;
 	char			*val;
-	int			flag;
+	int			flag_rdonly;
 {
 	struct ndis_softc	*sc;
 	struct ndis_cfglist	*cfg;
@@ -391,13 +392,21 @@
 
 	TAILQ_INSERT_TAIL(&sc->ndis_cfglist_head, cfg, link);
 
-	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, flag,
-	    cfg->ndis_cfg.nc_val, sizeof(cfg->ndis_cfg.nc_val),
-	    cfg->ndis_cfg.nc_cfgdesc);
-
+	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);
 }
 
@@ -482,16 +491,14 @@
 	KeReleaseSpinLock(&block->nmb_returnlock, irql);
 }
 
-void
-ndis_return_packet(buf, arg)
-	void			*buf;	/* not used */
-	void			*arg;
+int
+ndis_return_packet(struct mbuf *m, void *buf, void *arg)
 {
 	ndis_packet		*p;
 	ndis_miniport_block	*block;
 
 	if (arg == NULL)
-		return;
+		return (EXT_FREE_OK);
 
 	p = arg;
 
@@ -500,7 +507,7 @@
 
 	/* Release packet when refcount hits zero, otherwise return. */
 	if (p->np_refcnt)
-		return;
+		return (EXT_FREE_OK);
 
 	block = ((struct ndis_softc *)p->np_softc)->ndis_block;
 
@@ -512,6 +519,8 @@
 	IoQueueWorkItem(block->nmb_returnitem,
 	    (io_workitem_func)kernndis_functbl[7].ipt_wrap,
 	    WORKQUEUE_CRITICAL, block);
+
+	return (EXT_FREE_OK);
 }
 
 void
@@ -656,13 +665,9 @@
 
 	for (buf = priv->npp_head; buf != NULL; buf = buf->mdl_next) {
 		if (buf == priv->npp_head)
-#ifdef MT_HEADER
-			MGETHDR(m, M_DONTWAIT, MT_HEADER);
-#else
-			MGETHDR(m, M_DONTWAIT, MT_DATA);
-#endif
+			m = m_gethdr(M_NOWAIT, MT_DATA);
 		else
-			MGET(m, M_DONTWAIT, MT_DATA);
+			m = m_get(M_NOWAIT, MT_DATA);
 		if (m == NULL) {
 			m_freem(*m0);
 			*m0 = NULL;

Modified: trunk/sys/compat/ndis/ndis_var.h
===================================================================
--- trunk/sys/compat/ndis/ndis_var.h	2018-05-30 20:35:51 UTC (rev 10145)
+++ trunk/sys/compat/ndis/ndis_var.h	2018-05-30 20:39:37 UTC (rev 10146)
@@ -30,6 +30,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $MidnightBSD$
+ * $FreeBSD: stable/10/sys/compat/ndis/ndis_var.h 254842 2013-08-25 10:57:09Z andre $
  */
 
 #ifndef _NDIS_VAR_H_
@@ -1743,7 +1744,7 @@
 extern int ndis_shutdown_nic(void *);
 extern int ndis_pnpevent_nic(void *, int);
 extern int ndis_init_nic(void *);
-extern void ndis_return_packet(void *, void *);
+extern int ndis_return_packet(struct mbuf *, void *, void *);
 extern int ndis_init_dma(void *);
 extern int ndis_destroy_dma(void *);
 extern int ndis_create_sysctls(void *);

Modified: trunk/sys/compat/ndis/subr_hal.c
===================================================================
--- trunk/sys/compat/ndis/subr_hal.c	2018-05-30 20:35:51 UTC (rev 10145)
+++ trunk/sys/compat/ndis/subr_hal.c	2018-05-30 20:39:37 UTC (rev 10146)
@@ -392,16 +392,18 @@
 {
 	uint8_t			oldirql;
 
+	sched_pin();
 	oldirql = KeGetCurrentIrql();
 
 	/* I am so going to hell for this. */
 	if (oldirql > irql)
-		panic("IRQL_NOT_LESS_THAN");
+		panic("IRQL_NOT_LESS_THAN_OR_EQUAL");
 
-	if (oldirql != DISPATCH_LEVEL) {
-		sched_pin();
+	if (oldirql != DISPATCH_LEVEL) 
 		mtx_lock(&disp_lock[curthread->td_oncpu]);
-	}
+	else
+		sched_unpin();	
+
 /*printf("RAISE IRQL: %d %d\n", irql, oldirql);*/
 
 	return (oldirql);

Modified: trunk/sys/compat/ndis/subr_ndis.c
===================================================================
--- trunk/sys/compat/ndis/subr_ndis.c	2018-05-30 20:35:51 UTC (rev 10145)
+++ trunk/sys/compat/ndis/subr_ndis.c	2018-05-30 20:39:37 UTC (rev 10146)
@@ -895,7 +895,7 @@
 	uint32_t		len;
 {
 	ndis_miniport_block	*block;
-	int			i;
+	uint32_t		i;
 	char			*dest;
 	device_t		dev;
 
@@ -938,7 +938,7 @@
 	uint32_t		len;
 {
 	ndis_miniport_block	*block;
-	int			i;
+	uint32_t		i;
 	char			*dest;
 	device_t		dev;
 
@@ -2431,7 +2431,7 @@
 	bus_space_handle_t	bh;
 	bus_space_tag_t		bt;
 	char			*dest;
-	int			i;
+	uint32_t		i;
 
 	if (handle == NULL)
 		return (0);
@@ -2461,7 +2461,7 @@
 	bus_space_handle_t	bh;
 	bus_space_tag_t		bt;
 	char			*src;
-	int			i;
+	uint32_t		i;
 
 	if (handle == NULL)
 		return (0);
@@ -2669,7 +2669,7 @@
 {
 	char			*fullsym;
 	char			*suf;
-	int			i;
+	u_int			i;
 
 	fullsym = ExAllocatePoolWithTag(NonPagedPool, MAXPATHLEN, 0);
 	if (fullsym == NULL)
@@ -2741,7 +2741,7 @@
 	char			*afilename = NULL;
 	struct thread		*td = curthread;
 	struct nameidata	nd;
-	int			flags, error, vfslocked;
+	int			flags, error;
 	struct vattr		vat;
 	struct vattr		*vap = &vat;
 	ndis_fh			*fh;
@@ -2821,7 +2821,7 @@
 	if (td->td_proc->p_fd->fd_cdir == NULL)
 		td->td_proc->p_fd->fd_cdir = rootvnode;
 
-	NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, path, td);
+	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, path, td);
 
 	flags = FREAD;
 	error = vn_open(&nd, &flags, 0, NULL);
@@ -2833,7 +2833,6 @@
 		free(afilename, M_DEVBUF);
 		return;
 	}
-	vfslocked = NDHASGIANT(&nd);
 
 	ExFreePool(path);
 
@@ -2842,7 +2841,6 @@
 	/* Get the file size. */
 	VOP_GETATTR(nd.ni_vp, vap, td->td_ucred);
 	VOP_UNLOCK(nd.ni_vp, 0);
-	VFS_UNLOCK_GIANT(vfslocked);
 
 	fh->nf_vp = nd.ni_vp;
 	fh->nf_map = NULL;
@@ -2862,7 +2860,7 @@
 	struct thread		*td = curthread;
 	linker_file_t		lf;
 	caddr_t			kldstart;
-	int			error, vfslocked;
+	int			error;
 	ssize_t			resid;
 	struct vnode		*vp;
 
@@ -2903,10 +2901,8 @@
 	}
 
 	vp = fh->nf_vp;
-	vfslocked = VFS_LOCK_GIANT(vp->v_mount);
 	error = vn_rdwr(UIO_READ, vp, fh->nf_map, fh->nf_maplen, 0,
 	    UIO_SYSSPACE, 0, td->td_ucred, NOCRED, &resid, td);
-	VFS_UNLOCK_GIANT(vfslocked);
 
 	if (error)
 		*status = NDIS_STATUS_FAILURE;
@@ -2937,7 +2933,6 @@
 {
 	struct thread		*td = curthread;
 	ndis_fh			*fh;
-	int			vfslocked;
 	struct vnode		*vp;
 
 	if (filehandle == NULL)
@@ -2955,9 +2950,7 @@
 
 	if (fh->nf_type == NDIS_FH_TYPE_VFS) {
 		vp = fh->nf_vp;
-		vfslocked = VFS_LOCK_GIANT(vp->v_mount);
 		vn_close(vp, FREAD, td->td_ucred, td);
-		VFS_UNLOCK_GIANT(vfslocked);
 	}
 
 	fh->nf_vp = NULL;

Modified: trunk/sys/compat/ndis/subr_ntoskrnl.c
===================================================================
--- trunk/sys/compat/ndis/subr_ntoskrnl.c	2018-05-30 20:35:51 UTC (rev 10145)
+++ trunk/sys/compat/ndis/subr_ntoskrnl.c	2018-05-30 20:39:37 UTC (rev 10146)
@@ -2489,7 +2489,7 @@
 		break;
 	}
 
-	ret = (void *)kmem_alloc_contig(kernel_map, size, M_ZERO | M_NOWAIT,
+	ret = (void *)kmem_alloc_contig(kernel_arena, size, M_ZERO | M_NOWAIT,
 	    lowest, highest, PAGE_SIZE, boundary, memattr);
 	if (ret != NULL)
 		malloc_type_allocated(M_DEVBUF, round_page(size));
@@ -3188,17 +3188,14 @@
 static int
 rand(void)
 {
-	struct timeval		tv;
 
-	microtime(&tv);
-	srandom(tv.tv_usec);
-	return ((int)random());
+	return (random());
 }
 
 static void
-srand(seed)
-	unsigned int		seed;
+srand(unsigned int seed)
 {
+
 	srandom(seed);
 }
 
@@ -3591,6 +3588,7 @@
 	if (bootverbose) {
 		va_start(ap, fmt);
 		vprintf(fmt, ap);
+		va_end(ap);
 	}
 
 	return (STATUS_SUCCESS);
@@ -3748,7 +3746,7 @@
 
 	timer->k_callout = c;
 
-	callout_init(c, CALLOUT_MPSAFE);
+	callout_init(c, 1);
 	callout_reset(c, ticks, ntoskrnl_timercall, timer);
 }
 



More information about the Midnightbsd-cvs mailing list