Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Several cases of overlapping changes which were for the most part trivially resolvable. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -63,6 +63,13 @@ TARGETS += zram
|
||||
TARGETS_HOTPLUG = cpu-hotplug
|
||||
TARGETS_HOTPLUG += memory-hotplug
|
||||
|
||||
# User can optionally provide a TARGETS skiplist.
|
||||
SKIP_TARGETS ?=
|
||||
ifneq ($(SKIP_TARGETS),)
|
||||
TMP := $(filter-out $(SKIP_TARGETS), $(TARGETS))
|
||||
override TARGETS := $(TMP)
|
||||
endif
|
||||
|
||||
# Clear LDFLAGS and MAKEFLAGS if called from main
|
||||
# Makefile to avoid test build failures when test
|
||||
# Makefile doesn't have explicit build rules.
|
||||
@@ -171,9 +178,12 @@ run_pstore_crash:
|
||||
# 1. output_dir=kernel_src
|
||||
# 2. a separate output directory is specified using O= KBUILD_OUTPUT
|
||||
# 3. a separate output directory is specified using KBUILD_OUTPUT
|
||||
# Avoid conflict with INSTALL_PATH set by the main Makefile
|
||||
#
|
||||
INSTALL_PATH ?= $(BUILD)/install
|
||||
INSTALL_PATH := $(abspath $(INSTALL_PATH))
|
||||
KSFT_INSTALL_PATH ?= $(BUILD)/kselftest_install
|
||||
KSFT_INSTALL_PATH := $(abspath $(KSFT_INSTALL_PATH))
|
||||
# Avoid changing the rest of the logic here and lib.mk.
|
||||
INSTALL_PATH := $(KSFT_INSTALL_PATH)
|
||||
ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
|
||||
|
||||
install: all
|
||||
@@ -198,11 +208,16 @@ ifdef INSTALL_PATH
|
||||
echo " cat /dev/null > \$$logfile" >> $(ALL_SCRIPT)
|
||||
echo "fi" >> $(ALL_SCRIPT)
|
||||
|
||||
@# While building run_kselftest.sh skip also non-existent TARGET dirs:
|
||||
@# they could be the result of a build failure and should NOT be
|
||||
@# included in the generated runlist.
|
||||
for TARGET in $(TARGETS); do \
|
||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||
[ ! -d $$INSTALL_PATH/$$TARGET ] && echo "Skipping non-existent dir: $$TARGET" && continue; \
|
||||
echo "[ -w /dev/kmsg ] && echo \"kselftest: Running tests in $$TARGET\" >> /dev/kmsg" >> $(ALL_SCRIPT); \
|
||||
echo "cd $$TARGET" >> $(ALL_SCRIPT); \
|
||||
echo -n "run_many" >> $(ALL_SCRIPT); \
|
||||
echo -n "Emit Tests for $$TARGET\n"; \
|
||||
$(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
|
||||
echo "" >> $(ALL_SCRIPT); \
|
||||
echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
|
||||
|
||||
@@ -195,7 +195,7 @@ static void run_test(int cgroup_fd)
|
||||
|
||||
if (CHECK_FAIL(pthread_create(&tid, NULL, server_thread,
|
||||
(void *)&server_fd)))
|
||||
goto close_bpf_object;
|
||||
goto close_server_fd;
|
||||
|
||||
pthread_mutex_lock(&server_started_mtx);
|
||||
pthread_cond_wait(&server_started, &server_started_mtx);
|
||||
|
||||
@@ -260,13 +260,14 @@ void test_tcp_rtt(void)
|
||||
|
||||
if (CHECK_FAIL(pthread_create(&tid, NULL, server_thread,
|
||||
(void *)&server_fd)))
|
||||
goto close_cgroup_fd;
|
||||
goto close_server_fd;
|
||||
|
||||
pthread_mutex_lock(&server_started_mtx);
|
||||
pthread_cond_wait(&server_started, &server_started_mtx);
|
||||
pthread_mutex_unlock(&server_started_mtx);
|
||||
|
||||
CHECK_FAIL(run_test(cgroup_fd, server_fd));
|
||||
close_server_fd:
|
||||
close(server_fd);
|
||||
close_cgroup_fd:
|
||||
close(cgroup_fd);
|
||||
|
||||
@@ -99,6 +99,9 @@ fi
|
||||
|
||||
# Setup
|
||||
tc qdisc add dev lo ingress
|
||||
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
|
||||
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
|
||||
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
|
||||
|
||||
echo "Testing IPv4..."
|
||||
# Drops all IP/UDP packets coming from port 9
|
||||
|
||||
@@ -314,15 +314,15 @@ test_gso()
|
||||
command -v nc >/dev/null 2>&1 || \
|
||||
{ echo >&2 "nc is not available: skipping TSO tests"; return; }
|
||||
|
||||
# listen on IPv*_DST, capture TCP into $TMPFILE
|
||||
# listen on port 9000, capture TCP into $TMPFILE
|
||||
if [ "${PROTO}" == "IPv4" ] ; then
|
||||
IP_DST=${IPv4_DST}
|
||||
ip netns exec ${NS3} bash -c \
|
||||
"nc -4 -l -s ${IPv4_DST} -p 9000 > ${TMPFILE} &"
|
||||
"nc -4 -l -p 9000 > ${TMPFILE} &"
|
||||
elif [ "${PROTO}" == "IPv6" ] ; then
|
||||
IP_DST=${IPv6_DST}
|
||||
ip netns exec ${NS3} bash -c \
|
||||
"nc -6 -l -s ${IPv6_DST} -p 9000 > ${TMPFILE} &"
|
||||
"nc -6 -l -p 9000 > ${TMPFILE} &"
|
||||
RET=$?
|
||||
else
|
||||
echo " test_gso: unknown PROTO: ${PROTO}"
|
||||
|
||||
@@ -3,9 +3,14 @@
|
||||
#
|
||||
# Runs a set of tests in a given subdirectory.
|
||||
export skip_rc=4
|
||||
export timeout_rc=124
|
||||
export logfile=/dev/stdout
|
||||
export per_test_logging=
|
||||
|
||||
# Defaults for "settings" file fields:
|
||||
# "timeout" how many seconds to let each test run before failing.
|
||||
export kselftest_default_timeout=45
|
||||
|
||||
# There isn't a shell-agnostic way to find the path of a sourced file,
|
||||
# so we must rely on BASE_DIR being set to find other tools.
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
@@ -24,6 +29,16 @@ tap_prefix()
|
||||
fi
|
||||
}
|
||||
|
||||
tap_timeout()
|
||||
{
|
||||
# Make sure tests will time out if utility is available.
|
||||
if [ -x /usr/bin/timeout ] ; then
|
||||
/usr/bin/timeout "$kselftest_timeout" "$1"
|
||||
else
|
||||
"$1"
|
||||
fi
|
||||
}
|
||||
|
||||
run_one()
|
||||
{
|
||||
DIR="$1"
|
||||
@@ -32,6 +47,18 @@ run_one()
|
||||
|
||||
BASENAME_TEST=$(basename $TEST)
|
||||
|
||||
# Reset any "settings"-file variables.
|
||||
export kselftest_timeout="$kselftest_default_timeout"
|
||||
# Load per-test-directory kselftest "settings" file.
|
||||
settings="$BASE_DIR/$DIR/settings"
|
||||
if [ -r "$settings" ] ; then
|
||||
while read line ; do
|
||||
field=$(echo "$line" | cut -d= -f1)
|
||||
value=$(echo "$line" | cut -d= -f2-)
|
||||
eval "kselftest_$field"="$value"
|
||||
done < "$settings"
|
||||
fi
|
||||
|
||||
TEST_HDR_MSG="selftests: $DIR: $BASENAME_TEST"
|
||||
echo "# $TEST_HDR_MSG"
|
||||
if [ ! -x "$TEST" ]; then
|
||||
@@ -44,14 +71,17 @@ run_one()
|
||||
echo "not ok $test_num $TEST_HDR_MSG"
|
||||
else
|
||||
cd `dirname $TEST` > /dev/null
|
||||
(((((./$BASENAME_TEST 2>&1; echo $? >&3) |
|
||||
((((( tap_timeout ./$BASENAME_TEST 2>&1; echo $? >&3) |
|
||||
tap_prefix >&4) 3>&1) |
|
||||
(read xs; exit $xs)) 4>>"$logfile" &&
|
||||
echo "ok $test_num $TEST_HDR_MSG") ||
|
||||
(if [ $? -eq $skip_rc ]; then \
|
||||
(rc=$?; \
|
||||
if [ $rc -eq $skip_rc ]; then \
|
||||
echo "not ok $test_num $TEST_HDR_MSG # SKIP"
|
||||
elif [ $rc -eq $timeout_rc ]; then \
|
||||
echo "not ok $test_num $TEST_HDR_MSG # TIMEOUT"
|
||||
else
|
||||
echo "not ok $test_num $TEST_HDR_MSG"
|
||||
echo "not ok $test_num $TEST_HDR_MSG # exit=$rc"
|
||||
fi)
|
||||
cd - >/dev/null
|
||||
fi
|
||||
|
||||
@@ -24,12 +24,12 @@ main()
|
||||
echo "$0: Installing in specified location - $install_loc ..."
|
||||
fi
|
||||
|
||||
install_dir=$install_loc/kselftest
|
||||
install_dir=$install_loc/kselftest_install
|
||||
|
||||
# Create install directory
|
||||
mkdir -p $install_dir
|
||||
# Build tests
|
||||
INSTALL_PATH=$install_dir make install
|
||||
KSFT_INSTALL_PATH=$install_dir make install
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -636,7 +636,7 @@ int main(int argc, char *argv[])
|
||||
nrthreads = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
case 'l':
|
||||
strncpy(logdir, optarg, LOGDIR_NAME_SIZE);
|
||||
strncpy(logdir, optarg, LOGDIR_NAME_SIZE - 1);
|
||||
break;
|
||||
case 't':
|
||||
run_time = strtoul(optarg, NULL, 10);
|
||||
|
||||
1
tools/testing/selftests/rtc/settings
Normal file
1
tools/testing/selftests/rtc/settings
Normal file
@@ -0,0 +1 @@
|
||||
timeout=90
|
||||
@@ -37,7 +37,7 @@ int main(int argc, char **argv)
|
||||
char *file = "/dev/zero";
|
||||
char *p;
|
||||
|
||||
while ((opt = getopt(argc, argv, "m:r:n:f:tTLUSH")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "m:r:n:f:tTLUwSH")) != -1) {
|
||||
switch (opt) {
|
||||
case 'm':
|
||||
size = atoi(optarg) * MB;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
int fd;
|
||||
const char v = 'V';
|
||||
static const char sopts[] = "bdehp:t:Tn:NLf:";
|
||||
static const char sopts[] = "bdehp:t:Tn:NLf:i";
|
||||
static const struct option lopts[] = {
|
||||
{"bootstatus", no_argument, NULL, 'b'},
|
||||
{"disable", no_argument, NULL, 'd'},
|
||||
@@ -32,6 +32,7 @@ static const struct option lopts[] = {
|
||||
{"getpretimeout", no_argument, NULL, 'N'},
|
||||
{"gettimeleft", no_argument, NULL, 'L'},
|
||||
{"file", required_argument, NULL, 'f'},
|
||||
{"info", no_argument, NULL, 'i'},
|
||||
{NULL, no_argument, NULL, 0x0}
|
||||
};
|
||||
|
||||
@@ -72,6 +73,7 @@ static void usage(char *progname)
|
||||
printf("Usage: %s [options]\n", progname);
|
||||
printf(" -f, --file\t\tOpen watchdog device file\n");
|
||||
printf("\t\t\tDefault is /dev/watchdog\n");
|
||||
printf(" -i, --info\t\tShow watchdog_info\n");
|
||||
printf(" -b, --bootstatus\tGet last boot status (Watchdog/POR)\n");
|
||||
printf(" -d, --disable\t\tTurn off the watchdog timer\n");
|
||||
printf(" -e, --enable\t\tTurn on the watchdog timer\n");
|
||||
@@ -97,6 +99,7 @@ int main(int argc, char *argv[])
|
||||
int c;
|
||||
int oneshot = 0;
|
||||
char *file = "/dev/watchdog";
|
||||
struct watchdog_info info;
|
||||
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
@@ -118,6 +121,16 @@ int main(int argc, char *argv[])
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Validate that `file` is a watchdog device
|
||||
*/
|
||||
ret = ioctl(fd, WDIOC_GETSUPPORT, &info);
|
||||
if (ret) {
|
||||
printf("WDIOC_GETSUPPORT error '%s'\n", strerror(errno));
|
||||
close(fd);
|
||||
exit(ret);
|
||||
}
|
||||
|
||||
optind = 0;
|
||||
|
||||
while ((c = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
|
||||
@@ -205,6 +218,18 @@ int main(int argc, char *argv[])
|
||||
case 'f':
|
||||
/* Handled above */
|
||||
break;
|
||||
case 'i':
|
||||
/*
|
||||
* watchdog_info was obtained as part of file open
|
||||
* validation. So we just show it here.
|
||||
*/
|
||||
oneshot = 1;
|
||||
printf("watchdog_info:\n");
|
||||
printf(" identity:\t\t%s\n", info.identity);
|
||||
printf(" firmware_version:\t%u\n",
|
||||
info.firmware_version);
|
||||
printf(" options:\t\t%08x\n", info.options);
|
||||
break;
|
||||
|
||||
default:
|
||||
usage(argv[0]);
|
||||
|
||||
Reference in New Issue
Block a user