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...
Ngie Cooper
ngie at FreeBSD.org
Sun Jan 15 09:33:33 UTC 2017
Author: ngie
Date: Sun Jan 15 09:33:29 2017
New Revision: 312218
URL: https://svnweb.freebsd.org/changeset/base/312218
Log:
MFhead at 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)
More information about the svn-src-projects
mailing list