Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Jan 2017 09:33:29 +0000 (UTC)
From:      Ngie Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r312218 - in projects/netbsd-tests-upstream-01-2017: lib/msun/tests release/tools sys/ddb sys/dev/etherswitch/micrel sys/i386/i386 sys/kern sys/mips/atheros sys/mips/conf sys/net sys/sy...
Message-ID:  <201701150933.v0F9XTps073828@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Sun Jan 15 09:33:29 2017
New Revision: 312218
URL: https://svnweb.freebsd.org/changeset/base/312218

Log:
  MFhead@r312217

Added:
  projects/netbsd-tests-upstream-01-2017/sys/dev/etherswitch/micrel/
     - copied from r312217, head/sys/dev/etherswitch/micrel/
Modified:
  projects/netbsd-tests-upstream-01-2017/lib/msun/tests/Makefile
  projects/netbsd-tests-upstream-01-2017/lib/msun/tests/fmaxmin_test.c
  projects/netbsd-tests-upstream-01-2017/release/tools/ec2.conf
  projects/netbsd-tests-upstream-01-2017/sys/ddb/db_input.c
  projects/netbsd-tests-upstream-01-2017/sys/i386/i386/pmap.c
  projects/netbsd-tests-upstream-01-2017/sys/kern/kern_acct.c
  projects/netbsd-tests-upstream-01-2017/sys/kern/kern_shutdown.c
  projects/netbsd-tests-upstream-01-2017/sys/kern/subr_gtaskqueue.c
  projects/netbsd-tests-upstream-01-2017/sys/kern/uipc_mbuf.c
  projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/ar71xxreg.h
  projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/uart_bus_ar71xx.c
  projects/netbsd-tests-upstream-01-2017/sys/mips/conf/ONIONOMEGA.hints
  projects/netbsd-tests-upstream-01-2017/sys/net/iflib.c
  projects/netbsd-tests-upstream-01-2017/sys/sys/ata.h
  projects/netbsd-tests-upstream-01-2017/sys/vm/vm_object.c
  projects/netbsd-tests-upstream-01-2017/sys/vm/vm_page.c
  projects/netbsd-tests-upstream-01-2017/tests/sys/kern/acct/Makefile
  projects/netbsd-tests-upstream-01-2017/tests/sys/mac/bsdextended/ugidfw_test.c
  projects/netbsd-tests-upstream-01-2017/tests/sys/vfs/lookup_cap_dotdot.c
  projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.c
  projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.h
  projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/login.c
  projects/netbsd-tests-upstream-01-2017/usr.sbin/inetd/inetd.c
  projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.c
  projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.h
  projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/login.c
Directory Properties:
  projects/netbsd-tests-upstream-01-2017/   (props changed)

Modified: projects/netbsd-tests-upstream-01-2017/lib/msun/tests/Makefile
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/msun/tests/Makefile	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/lib/msun/tests/Makefile	Sun Jan 15 09:33:29 2017	(r312218)
@@ -55,10 +55,7 @@ TAP_TESTS_C+=	ctrig_test
 TAP_TESTS_C+=	exponential_test
 TAP_TESTS_C+=	fenv_test
 TAP_TESTS_C+=	fma_test
-# clang 3.8.0 fails always fails this test. See: bug 208703
-.if ! (${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 30800)
 TAP_TESTS_C+=	fmaxmin_test
-.endif
 TAP_TESTS_C+=	ilogb2_test
 TAP_TESTS_C+=	invtrig_test
 TAP_TESTS_C+=	invctrig_test

Modified: projects/netbsd-tests-upstream-01-2017/lib/msun/tests/fmaxmin_test.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/msun/tests/fmaxmin_test.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/lib/msun/tests/fmaxmin_test.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -86,6 +86,8 @@ testall_r(long double big, long double s
 	return (ok);
 }
 
+const char *comment = NULL;
+
 /*
  * Test all the functions: fmaxf, fmax, fmaxl, fminf, fmin, and fminl,
  * in all rounding modes and with the arguments in different orders.
@@ -107,10 +109,17 @@ testall(int testnum, long double big, lo
 			break;
 		}
 	}
-	printf("%sok %d - big = %.20Lg, small = %.20Lg\n",
-	       (i == 4) ? "" : "not ", testnum, big, small);
+	printf("%sok %d - big = %.20Lg, small = %.20Lg%s\n",
+	       (i == 4) ? "" : "not ", testnum, big, small,
+	       comment == NULL ? "" : comment);
 }
 
+/* Clang 3.8.0+ fails the invariants for testcase 6, 7, 10, and 11. */
+#if defined(__clang__) && \
+    (__clang_major__ >= 3 && __clang_minor__ >= 8 && __clang_patchlevel__ >= 0)
+#define	affected_by_bug_208703
+#endif
+
 int
 main(int argc, char *argv[])
 {
@@ -122,15 +131,23 @@ main(int argc, char *argv[])
 	testall(3, nextafterf(42.0, INFINITY), 42.0);
 	testall(4, -5.0, -5.0);
 	testall(5, -3.0, -4.0);
+#ifdef affected_by_bug_208703
+	comment = "# TODO: testcase 6-7 fails invariant with clang 3.8+ (bug 208703)";
+#endif
 	testall(6, 1.0, NAN);
 	testall(7, INFINITY, NAN);
+	comment = NULL;
 	testall(8, INFINITY, 1.0);
 	testall(9, -3.0, -INFINITY);
 	testall(10, 3.0, -INFINITY);
+#ifdef affected_by_bug_208703
+	comment = "# TODO: testcase 11-12 fails invariant with clang 3.8+ (bug 208703)";
+#endif
 	testall(11, NAN, NAN);
 
 	/* This test isn't strictly required to work by C99. */
 	testall(12, 0.0, -0.0);
+	comment = NULL;
 
 	return (0);
 }

Modified: projects/netbsd-tests-upstream-01-2017/release/tools/ec2.conf
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/release/tools/ec2.conf	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/release/tools/ec2.conf	Sun Jan 15 09:33:29 2017	(r312218)
@@ -6,7 +6,7 @@
 # Packages to install into the image we're creating.  This is a deliberately
 # minimalist set, providing only the packages necessary to bootstrap further
 # package installation as specified via EC2 user-data.
-export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs"
+export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient"
 
 # Set to a list of third-party software to enable in rc.conf(5).
 export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_ephemeralswap ec2_loghostkey firstboot_freebsd_update firstboot_pkgs"
@@ -39,8 +39,9 @@ vm_extra_pre_umount() {
 	# time; expand our filesystem to fill the disk.
 	echo 'growfs_enable="YES"' >> ${DESTDIR}/etc/rc.conf
 
-	# EC2 instances use DHCP to get their network configuration.
-	echo 'ifconfig_DEFAULT="SYNCDHCP"' >> ${DESTDIR}/etc/rc.conf
+	# EC2 instances use DHCP to get their network configuration.  IPv6
+	# requires accept_rtadv.
+	echo 'ifconfig_DEFAULT="SYNCDHCP accept_rtadv"' >> ${DESTDIR}/etc/rc.conf
 
 	# Unless the system has been configured via EC2 user-data, the user
 	# will need to SSH in to do anything.
@@ -51,6 +52,10 @@ vm_extra_pre_umount() {
 	# via EC2 user-data.
 	echo 'firstboot_pkgs_list="awscli"' >> ${DESTDIR}/etc/rc.conf
 
+	# Enable IPv6 on all interfaces, and use DHCP on both IPv4 and IPv6.
+	echo 'ipv6_activate_all_interfaces="YES"' >> ${DESTDIR}/etc/rc.conf
+	echo 'dhclient_program="/usr/local/sbin/dual-dhclient"' >> ${DESTDIR}/etc/rc.conf
+
 	# The EC2 console is output-only, so while printing a backtrace can
 	# be useful, there's no point dropping into a debugger or waiting
 	# for a keypress.

Modified: projects/netbsd-tests-upstream-01-2017/sys/ddb/db_input.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/ddb/db_input.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/ddb/db_input.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -63,6 +63,7 @@ static int	db_lhist_nlines;
 #define	BLANK		' '
 #define	BACKUP		'\b'
 
+static int	cnmaygetc(void);
 static void	db_delete(int n, int bwd);
 static int	db_inputchar(int c);
 static void	db_putnchars(int c, int count);
@@ -290,6 +291,12 @@ db_inputchar(c)
 	return (0);
 }
 
+static int
+cnmaygetc()
+{
+	return (-1);
+}
+
 int
 db_readline(lstart, lsize)
 	char *	lstart;
@@ -343,7 +350,7 @@ db_check_interrupt(void)
 {
 	int	c;
 
-	c = cncheckc();
+	c = cnmaygetc();
 	switch (c) {
 	    case -1:		/* no character */
 		return;
@@ -354,7 +361,7 @@ db_check_interrupt(void)
 
 	    case CTRL('s'):
 		do {
-		    c = cncheckc();
+		    c = cnmaygetc();
 		    if (c == CTRL('c'))
 			db_error((char *)0);
 		} while (c != CTRL('q'));

Modified: projects/netbsd-tests-upstream-01-2017/sys/i386/i386/pmap.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/i386/i386/pmap.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/i386/i386/pmap.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -4216,8 +4216,14 @@ pmap_zero_page(vm_page_t m)
 	invlcaddr(pc->pc_cmap_addr2);
 	pagezero(pc->pc_cmap_addr2);
 	*cmap_pte2 = 0;
-	mtx_unlock(&pc->pc_cmap_lock);
+
+	/*
+	 * Unpin the thread before releasing the lock.  Otherwise the thread
+	 * could be rescheduled while still bound to the current CPU, only
+	 * to unpin itself immediately upon resuming execution.
+	 */
 	sched_unpin();
+	mtx_unlock(&pc->pc_cmap_lock);
 }
 
 /*
@@ -4244,8 +4250,8 @@ pmap_zero_page_area(vm_page_t m, int off
 	else
 		bzero(pc->pc_cmap_addr2 + off, size);
 	*cmap_pte2 = 0;
-	mtx_unlock(&pc->pc_cmap_lock);
 	sched_unpin();
+	mtx_unlock(&pc->pc_cmap_lock);
 }
 
 /*
@@ -4275,8 +4281,8 @@ pmap_copy_page(vm_page_t src, vm_page_t 
 	bcopy(pc->pc_cmap_addr1, pc->pc_cmap_addr2, PAGE_SIZE);
 	*cmap_pte1 = 0;
 	*cmap_pte2 = 0;
-	mtx_unlock(&pc->pc_cmap_lock);
 	sched_unpin();
+	mtx_unlock(&pc->pc_cmap_lock);
 }
 
 int unmapped_buf_allowed = 1;
@@ -4323,8 +4329,8 @@ pmap_copy_pages(vm_page_t ma[], vm_offse
 	}
 	*cmap_pte1 = 0;
 	*cmap_pte2 = 0;
-	mtx_unlock(&pc->pc_cmap_lock);
 	sched_unpin();
+	mtx_unlock(&pc->pc_cmap_lock);
 }
 
 /*
@@ -5310,8 +5316,8 @@ pmap_flush_page(vm_page_t m)
 		if (useclflushopt || cpu_vendor_id != CPU_VENDOR_INTEL)
 			mfence();
 		*cmap_pte2 = 0;
-		mtx_unlock(&pc->pc_cmap_lock);
 		sched_unpin();
+		mtx_unlock(&pc->pc_cmap_lock);
 	} else
 		pmap_invalidate_cache();
 }

Modified: projects/netbsd-tests-upstream-01-2017/sys/kern/kern_acct.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/kern/kern_acct.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/kern/kern_acct.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -469,8 +469,8 @@ static uint32_t
 encode_timeval(struct timeval tv)
 {
 	int log2_s;
-	int val, exponent;	/* Unnormalized value and exponent */
-	int norm_exponent;	/* Normalized exponent */
+	int val, exp;	/* Unnormalized value and exponent */
+	int norm_exp;	/* Normalized exponent */
 	int shift;
 
 	/*
@@ -481,7 +481,7 @@ encode_timeval(struct timeval tv)
 	if (tv.tv_sec == 0) {
 		if (tv.tv_usec == 0)
 			return (0);
-		exponent = 0;
+		exp = 0;
 		val = tv.tv_usec;
 	} else {
 		/*
@@ -490,24 +490,24 @@ encode_timeval(struct timeval tv)
 		 */
 		log2_s = fls(tv.tv_sec) - 1;
 		if (log2_s + LOG2_1M < CALC_BITS) {
-			exponent = 0;
+			exp = 0;
 			val = 1000000 * tv.tv_sec + tv.tv_usec;
 		} else {
-			exponent = log2_s + LOG2_1M - CALC_BITS;
+			exp = log2_s + LOG2_1M - CALC_BITS;
 			val = (unsigned int)(((uint64_t)1000000 * tv.tv_sec +
-			    tv.tv_usec) >> exponent);
+			    tv.tv_usec) >> exp);
 		}
 	}
 	/* Now normalize and pack the value into an IEEE-754 float. */
-	norm_exponent = fls(val) - 1;
-	shift = FLT_MANT_DIG - norm_exponent - 1;
+	norm_exp = fls(val) - 1;
+	shift = FLT_MANT_DIG - norm_exp - 1;
 #ifdef ACCT_DEBUG
 	printf("val=%d exp=%d shift=%d log2(val)=%d\n",
-	    val, exponent, shift, norm_exponent);
-	printf("exp=%x mant=%x\n", FLT_MAX_EXP - 1 + exponent + norm_exponent,
+	    val, exp, shift, norm_exp);
+	printf("exp=%x mant=%x\n", FLT_MAX_EXP - 1 + exp + norm_exp,
 	    ((shift > 0 ? (val << shift) : (val >> -shift)) & MANT_MASK));
 #endif
-	return (((FLT_MAX_EXP - 1 + exponent + norm_exponent) << (FLT_MANT_DIG - 1)) |
+	return (((FLT_MAX_EXP - 1 + exp + norm_exp) << (FLT_MANT_DIG - 1)) |
 	    ((shift > 0 ? val << shift : val >> -shift) & MANT_MASK));
 }
 
@@ -518,7 +518,7 @@ encode_timeval(struct timeval tv)
 static uint32_t
 encode_long(long val)
 {
-	int norm_exponent;	/* Normalized exponent */
+	int norm_exp;	/* Normalized exponent */
 	int shift;
 
 	if (val == 0)
@@ -529,15 +529,15 @@ encode_long(long val)
 		    val);
 		val = LONG_MAX;
 	}
-	norm_exponent = fls(val) - 1;
-	shift = FLT_MANT_DIG - norm_exponent - 1;
+	norm_exp = fls(val) - 1;
+	shift = FLT_MANT_DIG - norm_exp - 1;
 #ifdef ACCT_DEBUG
 	printf("val=%d shift=%d log2(val)=%d\n",
-	    val, shift, norm_exponent);
-	printf("exp=%x mant=%x\n", FLT_MAX_EXP - 1 + exp + norm_exponent,
+	    val, shift, norm_exp);
+	printf("exp=%x mant=%x\n", FLT_MAX_EXP - 1 + exp + norm_exp,
 	    ((shift > 0 ? (val << shift) : (val >> -shift)) & MANT_MASK));
 #endif
-	return (((FLT_MAX_EXP - 1 + norm_exponent) << (FLT_MANT_DIG - 1)) |
+	return (((FLT_MAX_EXP - 1 + norm_exp) << (FLT_MANT_DIG - 1)) |
 	    ((shift > 0 ? val << shift : val >> -shift) & MANT_MASK));
 }
 

Modified: projects/netbsd-tests-upstream-01-2017/sys/kern/kern_shutdown.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/kern/kern_shutdown.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/kern/kern_shutdown.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -733,13 +733,13 @@ vpanic(const char *fmt, va_list ap)
 		CPU_CLR(PCPU_GET(cpuid), &other_cpus);
 		stop_cpus_hard(other_cpus);
 	}
+#endif
 
 	/*
 	 * Ensure that the scheduler is stopped while panicking, even if panic
 	 * has been entered from kdb.
 	 */
 	td->td_stopsched = 1;
-#endif
 
 	bootopt = RB_AUTOBOOT;
 	newpanic = 0;

Modified: projects/netbsd-tests-upstream-01-2017/sys/kern/subr_gtaskqueue.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/kern/subr_gtaskqueue.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/kern/subr_gtaskqueue.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -647,7 +647,7 @@ taskqgroup_attach(struct taskqgroup *qgr
 	qgroup->tqg_queue[qid].tgc_cnt++;
 	LIST_INSERT_HEAD(&qgroup->tqg_queue[qid].tgc_tasks, gtask, gt_list);
 	gtask->gt_taskqueue = qgroup->tqg_queue[qid].tgc_taskq;
-	if (irq != -1 && smp_started) {
+	if (irq != -1 && (smp_started || mp_ncpus == 1)) {
 		gtask->gt_cpu = qgroup->tqg_queue[qid].tgc_cpu;
 		CPU_ZERO(&mask);
 		CPU_SET(qgroup->tqg_queue[qid].tgc_cpu, &mask);
@@ -697,7 +697,7 @@ taskqgroup_attach_cpu(struct taskqgroup 
 	gtask->gt_irq = irq;
 	gtask->gt_cpu = cpu;
 	mtx_lock(&qgroup->tqg_lock);
-	if (smp_started) {
+	if (smp_started || mp_ncpus == 1) {
 		for (i = 0; i < qgroup->tqg_cnt; i++)
 			if (qgroup->tqg_queue[i].tgc_cpu == cpu) {
 				qid = i;
@@ -717,7 +717,7 @@ taskqgroup_attach_cpu(struct taskqgroup 
 
 	CPU_ZERO(&mask);
 	CPU_SET(cpu, &mask);
-	if (irq != -1 && smp_started)
+	if (irq != -1 && (smp_started || mp_ncpus == 1))
 		intr_setaffinity(irq, &mask);
 	return (0);
 }
@@ -731,7 +731,7 @@ taskqgroup_attach_cpu_deferred(struct ta
 	qid = -1;
 	irq = gtask->gt_irq;
 	cpu = gtask->gt_cpu;
-	MPASS(smp_started);
+	MPASS(smp_started || mp_ncpus == 1);
 	mtx_lock(&qgroup->tqg_lock);
 	for (i = 0; i < qgroup->tqg_cnt; i++)
 		if (qgroup->tqg_queue[i].tgc_cpu == cpu) {
@@ -824,7 +824,7 @@ _taskqgroup_adjust(struct taskqgroup *qg
 
 	mtx_assert(&qgroup->tqg_lock, MA_OWNED);
 
-	if (cnt < 1 || cnt * stride > mp_ncpus || !smp_started) {
+	if (cnt < 1 || cnt * stride > mp_ncpus || (!smp_started && (mp_ncpus != 1))) {
 		printf("taskqgroup_adjust failed cnt: %d stride: %d mp_ncpus: %d smp_started: %d\n",
 			   cnt, stride, mp_ncpus, smp_started);
 		return (EINVAL);

Modified: projects/netbsd-tests-upstream-01-2017/sys/kern/uipc_mbuf.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/kern/uipc_mbuf.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/kern/uipc_mbuf.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -169,7 +169,7 @@ CTASSERT(sizeof(struct m_ext) == 28);
  * plain pointer does.
  */
 #ifdef INVARIANTS
-static struct mbuf m_assertbuf;
+static struct mbuf __used m_assertbuf;
 CTASSERT(sizeof(m_assertbuf.m_slist) == sizeof(m_assertbuf.m_next));
 CTASSERT(sizeof(m_assertbuf.m_stailq) == sizeof(m_assertbuf.m_next));
 CTASSERT(sizeof(m_assertbuf.m_slistpkt) == sizeof(m_assertbuf.m_nextpkt));

Modified: projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/ar71xxreg.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/ar71xxreg.h	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/ar71xxreg.h	Sun Jan 15 09:33:29 2017	(r312218)
@@ -111,6 +111,10 @@
 #define PCI_WINDOW7_CONF_ADDR		0x07000000
 
 #define	AR71XX_UART_ADDR		0x18020000
+#define		AR71XX_UART_THR		0x0
+#define		AR71XX_UART_LSR		0x14
+#define		AR71XX_UART_LSR_THRE	(1 << 5)
+#define		AR71XX_UART_LSR_TEMT	(1 << 6)
 
 #define	AR71XX_USB_CTRL_FLADJ		0x18030000
 #define		USB_CTRL_FLADJ_HOST_SHIFT	12

Modified: projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/uart_bus_ar71xx.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/uart_bus_ar71xx.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/mips/atheros/uart_bus_ar71xx.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -86,4 +86,21 @@ uart_ar71xx_probe(device_t dev)
 	return (uart_bus_probe(dev, 2, freq, 0, 0));
 }
 
+#ifdef	EARLY_PRINTF
+static void
+ar71xx_early_putc(int c)
+{
+	int i;
+
+	for (i = 0; i < 1000; i++) {
+		if (ATH_READ_REG(AR71XX_UART_ADDR + AR71XX_UART_LSR)
+		    & AR71XX_UART_LSR_THRE)
+			break;
+	}
+
+	ATH_WRITE_REG(AR71XX_UART_ADDR + AR71XX_UART_THR, (c & 0xff));
+}
+early_putc_t *early_putc = ar71xx_early_putc;
+#endif
+
 DRIVER_MODULE(uart, apb, uart_ar71xx_driver, uart_devclass, 0, 0);

Modified: projects/netbsd-tests-upstream-01-2017/sys/mips/conf/ONIONOMEGA.hints
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/mips/conf/ONIONOMEGA.hints	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/mips/conf/ONIONOMEGA.hints	Sun Jan 15 09:33:29 2017	(r312218)
@@ -31,6 +31,10 @@ hint.arge.1.media=1000
 hint.arge.1.fduplex=1
 hint.arge.1.eeprommac=0x1fff0006
 
+# ath0
+hint.ath.0.eepromaddr=0x1fff0000
+hint.ath.0.eepromsize=16384
+
 # 16MB flash layout:
 # [    0.510000] 5 tp-link partitions found on MTD device spi0.0
 # [    0.510000] Creating 5 MTD partitions on "spi0.0":
@@ -92,3 +96,30 @@ hint.map.6.start=0x00ff0000
 hint.map.6.end=0x01000000
 hint.map.6.name="ART"
 hint.map.6.readonly=1
+
+# GPIO
+hint.gpio.0.pinmask=0x0c8ff1c3
+
+hint.gpioled.0.at="gpiobus0"
+hint.gpioled.0.pins=0x08000000
+hint.gpioled.0.name="board"
+hint.gpioled.0.invert=0
+
+#Red
+hint.gpioled.1.at="gpiobus0"
+hint.gpioled.1.pins=0x00020000
+hint.gpioled.1.name="red"
+hint.gpioled.1.invert=0
+
+#Green
+hint.gpioled.2.at="gpiobus0"
+hint.gpioled.2.pins=0x00010000
+hint.gpioled.2.name="green"
+hint.gpioled.2.invert=0
+
+#Blue
+hint.gpioled.3.at="gpiobus0"
+hint.gpioled.3.pins=0x00008000
+hint.gpioled.3.name="blue"
+hint.gpioled.3.invert=0
+

Modified: projects/netbsd-tests-upstream-01-2017/sys/net/iflib.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/net/iflib.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/net/iflib.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -133,10 +133,13 @@ typedef struct iflib_rxq *iflib_rxq_t;
 struct iflib_fl;
 typedef struct iflib_fl *iflib_fl_t;
 
+struct iflib_ctx;
+
 typedef struct iflib_filter_info {
 	driver_filter_t *ifi_filter;
 	void *ifi_filter_arg;
 	struct grouptask *ifi_task;
+	struct iflib_ctx *ifi_ctx;
 } *iflib_filter_info_t;
 
 struct iflib_ctx {
@@ -300,6 +303,8 @@ typedef struct iflib_sw_tx_desc_array {
 #define	IFC_MULTISEG		0x04
 #define	IFC_DMAR		0x08
 #define	IFC_SC_ALLOCATED	0x10
+#define	IFC_INIT_DONE		0x20
+
 
 #define CSUM_OFFLOAD		(CSUM_IP_TSO|CSUM_IP6_TSO|CSUM_IP| \
 				 CSUM_IP_UDP|CSUM_IP_TCP|CSUM_IP_SCTP| \
@@ -1194,7 +1199,7 @@ iflib_fast_intr(void *arg)
 	iflib_filter_info_t info = arg;
 	struct grouptask *gtask = info->ifi_task;
 
-	if (!smp_started)
+	if (!smp_started && mp_ncpus > 1)
 		return (FILTER_HANDLED);
 
 	DBG_COUNTER_INC(fast_intrs);
@@ -3753,6 +3758,7 @@ iflib_device_register(device_t dev, void
 
 	if_setgetcounterfn(ctx->ifc_ifp, iflib_if_get_counter);
 	iflib_add_device_sysctl_post(ctx);
+	ctx->ifc_flags |= IFC_INIT_DONE;
 	return (0);
 fail_detach:
 	ether_ifdetach(ctx->ifc_ifp);
@@ -4471,6 +4477,7 @@ iflib_irq_alloc_generic(if_ctx_t ctx, if
 	info->ifi_filter = filter;
 	info->ifi_filter_arg = filter_arg;
 	info->ifi_task = gtask;
+	info->ifi_ctx = ctx;
 
 	err = _iflib_irq_alloc(ctx, irq, rid, iflib_fast_intr, NULL, info,  name);
 	if (err != 0) {
@@ -4567,6 +4574,7 @@ iflib_legacy_setup(if_ctx_t ctx, driver_
 	info->ifi_filter = filter;
 	info->ifi_filter_arg = filter_arg;
 	info->ifi_task = gtask;
+	info->ifi_ctx = ctx;
 
 	/* We allocate a single interrupt resource */
 	if ((err = _iflib_irq_alloc(ctx, irq, tqrid, iflib_fast_intr, NULL, info, name)) != 0)

Modified: projects/netbsd-tests-upstream-01-2017/sys/sys/ata.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/sys/ata.h	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/sys/ata.h	Sun Jan 15 09:33:29 2017	(r312218)
@@ -682,7 +682,7 @@ struct atapi_sense {
 #define	ATA_IDL_ATA_STRINGS	0x05	/* ATA Strings */
 #define	ATA_IDL_SECURITY	0x06	/* Security */
 #define	ATA_IDL_PARALLEL_ATA	0x07	/* Parallel ATA */
-#define	ATA_IDL_SERIAL_ATA	0x08	/* Seiral ATA */
+#define	ATA_IDL_SERIAL_ATA	0x08	/* Serial ATA */
 #define	ATA_IDL_ZDI		0x09	/* Zoned Device Information */
 
 struct ata_gp_log_dir {

Modified: projects/netbsd-tests-upstream-01-2017/sys/vm/vm_object.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/vm/vm_object.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/vm/vm_object.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -1097,7 +1097,7 @@ vm_object_sync(vm_object_t object, vm_oo
  */
 void
 vm_object_madvise(vm_object_t object, vm_pindex_t pindex, vm_pindex_t end,
-    int advise)
+    int advice)
 {
 	vm_pindex_t tpindex;
 	vm_object_t backing_object, tobject;
@@ -1105,11 +1105,9 @@ vm_object_madvise(vm_object_t object, vm
 
 	if (object == NULL)
 		return;
+
 	VM_OBJECT_WLOCK(object);
-	/*
-	 * Locate and adjust resident pages
-	 */
-	for (; pindex < end; pindex += 1) {
+	for (m = NULL; pindex < end; pindex++) {
 relookup:
 		tobject = object;
 		tpindex = pindex;
@@ -1118,7 +1116,7 @@ shadowlookup:
 		 * MADV_FREE only operates on OBJT_DEFAULT or OBJT_SWAP pages
 		 * and those pages must be OBJ_ONEMAPPING.
 		 */
-		if (advise == MADV_FREE) {
+		if (advice == MADV_FREE) {
 			if ((tobject->type != OBJT_DEFAULT &&
 			     tobject->type != OBJT_SWAP) ||
 			    (tobject->flags & OBJ_ONEMAPPING) == 0) {
@@ -1126,15 +1124,29 @@ shadowlookup:
 			}
 		} else if ((tobject->flags & OBJ_UNMANAGED) != 0)
 			goto unlock_tobject;
-		m = vm_page_lookup(tobject, tpindex);
-		if (m == NULL) {
-			/*
-			 * There may be swap even if there is no backing page
-			 */
-			if (advise == MADV_FREE && tobject->type == OBJT_SWAP)
+
+		/*
+		 * In the common case where the object has no backing object, we
+		 * can avoid performing lookups at each pindex.  In either case,
+		 * when applying MADV_FREE we take care to release any swap
+		 * space used to store non-resident pages.
+		 */
+		if (object->backing_object == NULL) {
+			m = (m != NULL) ? TAILQ_NEXT(m, listq) :
+			    vm_page_find_least(object, pindex);
+			tpindex = (m != NULL && m->pindex < end) ?
+			    m->pindex : end;
+			if (advice == MADV_FREE && object->type == OBJT_SWAP &&
+			    tpindex > pindex)
+				swap_pager_freespace(object, pindex,
+				    tpindex - pindex);
+			if ((pindex = tpindex) == end)
+				break;
+		} else if ((m = vm_page_lookup(tobject, tpindex)) == NULL) {
+			if (advice == MADV_FREE && tobject->type == OBJT_SWAP)
 				swap_pager_freespace(tobject, tpindex, 1);
 			/*
-			 * next object
+			 * Prepare to search the next object in the chain.
 			 */
 			backing_object = tobject->backing_object;
 			if (backing_object == NULL)
@@ -1145,11 +1157,13 @@ shadowlookup:
 				VM_OBJECT_WUNLOCK(tobject);
 			tobject = backing_object;
 			goto shadowlookup;
-		} else if (m->valid != VM_PAGE_BITS_ALL)
-			goto unlock_tobject;
+		}
+
 		/*
 		 * If the page is not in a normal state, skip it.
 		 */
+		if (m->valid != VM_PAGE_BITS_ALL)
+			goto unlock_tobject;
 		vm_page_lock(m);
 		if (m->hold_count != 0 || m->wire_count != 0) {
 			vm_page_unlock(m);
@@ -1160,7 +1174,7 @@ shadowlookup:
 		KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 		    ("vm_object_madvise: page %p is not managed", m));
 		if (vm_page_busied(m)) {
-			if (advise == MADV_WILLNEED) {
+			if (advice == MADV_WILLNEED) {
 				/*
 				 * Reference the page before unlocking and
 				 * sleeping so that the page daemon is less
@@ -1172,21 +1186,18 @@ shadowlookup:
 				VM_OBJECT_WUNLOCK(object);
 			VM_OBJECT_WUNLOCK(tobject);
 			vm_page_busy_sleep(m, "madvpo", false);
+			m = NULL;
 			VM_OBJECT_WLOCK(object);
   			goto relookup;
 		}
-		if (advise == MADV_WILLNEED) {
-			vm_page_activate(m);
-		} else {
-			vm_page_advise(m, advise);
-		}
+		vm_page_advise(m, advice);
 		vm_page_unlock(m);
-		if (advise == MADV_FREE && tobject->type == OBJT_SWAP)
+		if (advice == MADV_FREE && tobject->type == OBJT_SWAP)
 			swap_pager_freespace(tobject, tpindex, 1);
 unlock_tobject:
 		if (tobject != object)
 			VM_OBJECT_WUNLOCK(tobject);
-	}	
+	}
 	VM_OBJECT_WUNLOCK(object);
 }
 

Modified: projects/netbsd-tests-upstream-01-2017/sys/vm/vm_page.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/sys/vm/vm_page.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/sys/vm/vm_page.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -3002,7 +3002,7 @@ vm_page_try_to_free(vm_page_t m)
 /*
  * vm_page_advise
  *
- * 	Deactivate or do nothing, as appropriate.
+ * 	Apply the specified advice to the given page.
  *
  *	The object and page must be locked.
  */
@@ -3020,8 +3020,11 @@ vm_page_advise(vm_page_t m, int advice)
 		 * would result in a page fault on a later access.
 		 */
 		vm_page_undirty(m);
-	else if (advice != MADV_DONTNEED)
+	else if (advice != MADV_DONTNEED) {
+		if (advice == MADV_WILLNEED)
+			vm_page_activate(m);
 		return;
+	}
 
 	/*
 	 * Clear any references to the page.  Otherwise, the page daemon will

Modified: projects/netbsd-tests-upstream-01-2017/tests/sys/kern/acct/Makefile
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/tests/sys/kern/acct/Makefile	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/kern/acct/Makefile	Sun Jan 15 09:33:29 2017	(r312218)
@@ -13,6 +13,7 @@ acct_test.o: convert.c
 
 convert.c: ${SRCTOP}/sys/kern/kern_acct.c
 	sed -n -e 's/log(/syslog(/g' \
+	       -e 's/exp/expected/g' \
 	       -e '/FLOAT_CONVERSION_START/,/FLOAT_CONVERSION_END/p' ${.ALLSRC} >${.TARGET}.tmp
 	mv ${.TARGET}.tmp ${.TARGET}
 

Modified: projects/netbsd-tests-upstream-01-2017/tests/sys/mac/bsdextended/ugidfw_test.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/tests/sys/mac/bsdextended/ugidfw_test.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/mac/bsdextended/ugidfw_test.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -222,7 +222,7 @@ main(void)
 		return (0);
 	}
 
-	printf("1..%lu\n", nitems(test_users) + nitems(test_groups) +
+	printf("1..%zu\n", nitems(test_users) + nitems(test_groups) +
 	    3 * nitems(test_strings) + 2);
 
 	test_libugidfw_strings();

Modified: projects/netbsd-tests-upstream-01-2017/tests/sys/vfs/lookup_cap_dotdot.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/tests/sys/vfs/lookup_cap_dotdot.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/vfs/lookup_cap_dotdot.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -124,6 +124,8 @@ ATF_TC_BODY(lookup_cap_dotdot__basic, tc
 	cap_rights_init(&rights, CAP_LOOKUP, CAP_READ);
 	ATF_REQUIRE(cap_rights_limit(dirfd, &rights) >= 0);
 
+	atf_tc_expect_signal(SIGABRT, "needs change done upstream in atf/kyua according to cem: bug 215690");
+
 	ATF_REQUIRE(cap_enter() >= 0);
 
 	ATF_REQUIRE_MSG(openat(dirfd, "d1/..", O_RDONLY) >= 0, "%s",
@@ -144,6 +146,8 @@ ATF_TC_BODY(lookup_cap_dotdot__advanced,
 	check_capsicum();
 	prepare_dotdot_tests();
 
+	atf_tc_expect_signal(SIGABRT, "needs change done upstream in atf/kyua according to cem: bug 215690");
+
 	cap_rights_init(&rights, CAP_LOOKUP, CAP_READ);
 	ATF_REQUIRE(cap_rights_limit(dirfd, &rights) >= 0);
 
@@ -187,6 +191,8 @@ ATF_TC_BODY(capmode__negative, tc)
 	check_capsicum();
 	prepare_dotdot_tests();
 
+	atf_tc_expect_signal(SIGABRT, "needs change done upstream in atf/kyua according to cem: bug 215690");
+
 	ATF_REQUIRE(cap_enter() == 0);
 
 	/* open() not permitted in capability mode */
@@ -225,6 +231,8 @@ ATF_TC_BODY(lookup_cap_dotdot__negative,
 	cap_rights_init(&rights, CAP_LOOKUP, CAP_READ);
 	ATF_REQUIRE(cap_rights_limit(dirfd, &rights) >= 0);
 
+	atf_tc_expect_signal(SIGABRT, "needs change done upstream in atf/kyua according to cem: bug 215690");
+
 	ATF_REQUIRE(cap_enter() >= 0);
 
 	ATF_REQUIRE_ERRNO(ENOTCAPABLE, openat(dirfd, "..", O_RDONLY) < 0);

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -1582,6 +1582,7 @@ connection_new(struct portal *portal, in
 	 * Default values, from RFC 3720, section 12.
 	 */
 	conn->conn_max_recv_data_segment_length = 8192;
+	conn->conn_max_send_data_segment_length = 8192;
 	conn->conn_max_burst_length = 262144;
 	conn->conn_first_burst_length = 65536;
 	conn->conn_immediate_data = true;

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.h	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/ctld.h	Sun Jan 15 09:33:29 2017	(r312218)
@@ -48,8 +48,6 @@
 #define	MAX_LUNS			1024
 #define	MAX_NAME_LEN			223
 #define	MAX_DATA_SEGMENT_LENGTH		(128 * 1024)
-#define	MAX_BURST_LENGTH		16776192
-#define	FIRST_BURST_LENGTH		(128 * 1024)
 #define	SOCKBUF_SIZE			1048576
 
 struct auth {
@@ -242,6 +240,10 @@ struct connection {
 	struct sockaddr_storage	conn_initiator_sa;
 	uint32_t		conn_cmdsn;
 	uint32_t		conn_statsn;
+	int			conn_max_recv_data_segment_limit;
+	int			conn_max_send_data_segment_limit;
+	int			conn_max_burst_limit;
+	int			conn_first_burst_limit;
 	int			conn_max_recv_data_segment_length;
 	int			conn_max_send_data_segment_length;
 	int			conn_max_burst_length;

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/login.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/login.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/ctld/login.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -557,13 +557,15 @@ login_negotiate_key(struct pdu *request,
 		 * our MaxRecvDataSegmentLength is not influenced by the
 		 * initiator in any way.
 		 */
-		if ((int)tmp > conn->conn_max_send_data_segment_length) {
-			log_debugx("capping max_send_data_segment_length "
+		if ((int)tmp > conn->conn_max_send_data_segment_limit) {
+			log_debugx("capping MaxRecvDataSegmentLength "
 			    "from %zd to %d", tmp,
-			    conn->conn_max_send_data_segment_length);
-			tmp = conn->conn_max_send_data_segment_length;
+			    conn->conn_max_send_data_segment_limit);
+			tmp = conn->conn_max_send_data_segment_limit;
 		}
 		conn->conn_max_send_data_segment_length = tmp;
+		conn->conn_max_recv_data_segment_length =
+		    conn->conn_max_recv_data_segment_limit;
 		keys_add_int(response_keys, name,
 		    conn->conn_max_recv_data_segment_length);
 	} else if (strcmp(name, "MaxBurstLength") == 0) {
@@ -572,10 +574,10 @@ login_negotiate_key(struct pdu *request,
 			login_send_error(request, 0x02, 0x00);
 			log_errx(1, "received invalid MaxBurstLength");
 		}
-		if ((int)tmp > conn->conn_max_burst_length) {
+		if ((int)tmp > conn->conn_max_burst_limit) {
 			log_debugx("capping MaxBurstLength from %zd to %d",
-			    tmp, conn->conn_max_burst_length);
-			tmp = conn->conn_max_burst_length;
+			    tmp, conn->conn_max_burst_limit);
+			tmp = conn->conn_max_burst_limit;
 		}
 		conn->conn_max_burst_length = tmp;
 		keys_add_int(response_keys, name, tmp);
@@ -585,10 +587,10 @@ login_negotiate_key(struct pdu *request,
 			login_send_error(request, 0x02, 0x00);
 			log_errx(1, "received invalid FirstBurstLength");
 		}
-		if ((int)tmp > conn->conn_first_burst_length) {
+		if ((int)tmp > conn->conn_first_burst_limit) {
 			log_debugx("capping FirstBurstLength from %zd to %d",
-			    tmp, conn->conn_first_burst_length);
-			tmp = conn->conn_first_burst_length;
+			    tmp, conn->conn_first_burst_limit);
+			tmp = conn->conn_first_burst_limit;
 		}
 		conn->conn_first_burst_length = tmp;
 		keys_add_int(response_keys, name, tmp);
@@ -694,25 +696,42 @@ login_negotiate(struct connection *conn,
 		 * offload, it depends on hardware capabilities.
 		 */
 		assert(conn->conn_target != NULL);
+		conn->conn_max_recv_data_segment_limit = (1 << 24) - 1;
+		conn->conn_max_send_data_segment_limit = (1 << 24) - 1;
+		conn->conn_max_burst_limit = (1 << 24) - 1;
+		conn->conn_first_burst_limit = (1 << 24) - 1;
 		kernel_limits(conn->conn_portal->p_portal_group->pg_offload,
-		    &conn->conn_max_recv_data_segment_length,
-		    &conn->conn_max_send_data_segment_length,
-		    &conn->conn_max_burst_length,
-		    &conn->conn_first_burst_length);
+		    &conn->conn_max_recv_data_segment_limit,
+		    &conn->conn_max_send_data_segment_limit,
+		    &conn->conn_max_burst_limit,
+		    &conn->conn_first_burst_limit);
 
 		/* We expect legal, usable values at this point. */
-		assert(conn->conn_max_recv_data_segment_length >= 512);
-		assert(conn->conn_max_recv_data_segment_length < (1 << 24));
-		assert(conn->conn_max_burst_length >= 512);
-		assert(conn->conn_max_burst_length < (1 << 24));
-		assert(conn->conn_first_burst_length >= 512);
-		assert(conn->conn_first_burst_length < (1 << 24));
-		assert(conn->conn_first_burst_length <=
-		    conn->conn_max_burst_length);
+		assert(conn->conn_max_recv_data_segment_limit >= 512);
+		assert(conn->conn_max_recv_data_segment_limit < (1 << 24));
+		assert(conn->conn_max_send_data_segment_limit >= 512);
+		assert(conn->conn_max_send_data_segment_limit < (1 << 24));
+		assert(conn->conn_max_burst_limit >= 512);
+		assert(conn->conn_max_burst_limit < (1 << 24));
+		assert(conn->conn_first_burst_limit >= 512);
+		assert(conn->conn_first_burst_limit < (1 << 24));
+		assert(conn->conn_first_burst_limit <=
+		    conn->conn_max_burst_limit);
+
+		/*
+		 * Limit default send length in case it won't be negotiated.
+		 * We can't do it for other limits, since they may affect both
+		 * sender and receiver operation, and we must obey defaults.
+		 */
+		if (conn->conn_max_send_data_segment_limit <
+		    conn->conn_max_send_data_segment_length) {
+			conn->conn_max_send_data_segment_length =
+			    conn->conn_max_send_data_segment_limit;
+		}
 	} else {
-		conn->conn_max_recv_data_segment_length =
+		conn->conn_max_recv_data_segment_limit =
 		    MAX_DATA_SEGMENT_LENGTH;
-		conn->conn_max_send_data_segment_length =
+		conn->conn_max_send_data_segment_limit =
 		    MAX_DATA_SEGMENT_LENGTH;
 	}
 

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/inetd/inetd.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/inetd/inetd.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/inetd/inetd.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -138,7 +138,9 @@ __FBSDID("$FreeBSD$");
 #include <string.h>
 #include <sysexits.h>
 #include <syslog.h>
+#ifdef LIBWRAP
 #include <tcpd.h>
+#endif
 #include <unistd.h>
 
 #include "inetd.h"
@@ -307,6 +309,7 @@ getvalue(const char *arg, int *value, co
 	return 0;				/* success */
 }
 
+#ifdef LIBWRAP
 static sa_family_t
 whichaf(struct request_info *req)
 {
@@ -322,6 +325,7 @@ whichaf(struct request_info *req)
 #endif
 	return sa->sa_family;
 }
+#endif
 
 int
 main(int argc, char **argv)

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -172,8 +172,10 @@ connection_new(int iscsi_fd, const struc
 	conn->conn_data_digest = CONN_DIGEST_NONE;
 	conn->conn_initial_r2t = true;
 	conn->conn_immediate_data = true;
-	conn->conn_max_burst_length = MAX_BURST_LENGTH;
-	conn->conn_first_burst_length = FIRST_BURST_LENGTH;
+	conn->conn_max_recv_data_segment_length = 8192;
+	conn->conn_max_send_data_segment_length = 8192;
+	conn->conn_max_burst_length = 262144;
+	conn->conn_first_burst_length = 65536;
 	conn->conn_iscsi_fd = iscsi_fd;
 
 	conn->conn_session_id = request->idr_session_id;
@@ -190,31 +192,28 @@ connection_new(int iscsi_fd, const struc
 	 */
 	isl = &conn->conn_limits;
 	memcpy(isl, &request->idr_limits, sizeof(*isl));
-	if (isl->isl_max_recv_data_segment_length == 0) {
-		conn->conn_max_recv_data_segment_length = 8192;
-		conn->conn_max_send_data_segment_length = 8192;
-		isl->isl_max_recv_data_segment_length = 8192;
-	} else {
-		conn->conn_max_recv_data_segment_length =
-		    isl->isl_max_recv_data_segment_length;
-		conn->conn_max_send_data_segment_length =
-		    isl->isl_max_recv_data_segment_length;
-	}
-	if (isl->isl_max_send_data_segment_length == 0) {
+	if (isl->isl_max_recv_data_segment_length == 0)
+		isl->isl_max_recv_data_segment_length = (1 << 24) - 1;
+	if (isl->isl_max_send_data_segment_length == 0)
 		isl->isl_max_send_data_segment_length =
 		    isl->isl_max_recv_data_segment_length;
-	} else {
+	if (isl->isl_max_burst_length == 0)
+		isl->isl_max_burst_length = (1 << 24) - 1;
+	if (isl->isl_first_burst_length == 0)
+		isl->isl_first_burst_length = (1 << 24) - 1;
+	if (isl->isl_first_burst_length > isl->isl_max_burst_length)
+		isl->isl_first_burst_length = isl->isl_max_burst_length;
+
+	/*
+	 * Limit default send length in case it won't be negotiated.
+	 * We can't do it for other limits, since they may affect both
+	 * sender and receiver operation, and we must obey defaults.
+	 */
+	if (conn->conn_max_send_data_segment_length >
+	    isl->isl_max_send_data_segment_length) {
 		conn->conn_max_send_data_segment_length =
 		    isl->isl_max_send_data_segment_length;
 	}
-	if (isl->isl_max_burst_length == 0)
-		isl->isl_max_burst_length = conn->conn_max_burst_length;
-	if (isl->isl_first_burst_length == 0) {
-		if (isl->isl_max_burst_length < (int)conn->conn_first_burst_length)
-			isl->isl_first_burst_length = isl->isl_max_burst_length;
-		else
-			isl->isl_first_burst_length = conn->conn_first_burst_length;
-	}
 
 	from_addr = conn->conn_conf.isc_initiator_addr;
 	to_addr = conn->conn_conf.isc_target_addr;

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.h	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/iscsid.h	Sun Jan 15 09:33:29 2017	(r312218)
@@ -44,8 +44,6 @@
 
 #define	CONN_MUTUAL_CHALLENGE_LEN	1024
 #define	SOCKBUF_SIZE			1048576
-#define	MAX_BURST_LENGTH		(256 * 1024)
-#define	FIRST_BURST_LENGTH		(128 * 1024)
 
 struct connection {
 	int			conn_iscsi_fd;

Modified: projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/login.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/login.c	Sun Jan 15 09:31:14 2017	(r312217)
+++ projects/netbsd-tests-upstream-01-2017/usr.sbin/iscsid/login.c	Sun Jan 15 09:33:29 2017	(r312218)
@@ -397,6 +397,9 @@ login_negotiate_key(struct connection *c
 			tmp = isl->isl_max_send_data_segment_length;
 		}
 		conn->conn_max_send_data_segment_length = tmp;
+		/* We received target's limit, that means it accepted our's. */
+		conn->conn_max_recv_data_segment_length =
+		    isl->isl_max_recv_data_segment_length;
 	} else if (strcmp(name, "MaxBurstLength") == 0) {
 		tmp = strtoul(value, NULL, 10);
 		if (tmp <= 0)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701150933.v0F9XTps073828>