[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