Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'mptcp-selftest-improvements-and-header-tweak'

Mat Martineau says:

====================
mptcp: Self test improvements and a header tweak

Patch 1 moves a definition to a header so it can be used in a struct
declaration.

Patch 2 adjusts a time threshold for a selftest that runs much slower on
debug kernels (and even more on slow CI infrastructure), to reduce
spurious failures.

Patches 3 & 4 improve userspace PM test coverage.

Patches 5 & 6 clean up output from a test script and selftest helper
tool.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+123 -23
+2 -1
include/net/mptcp.h
··· 39 39 infinite_map:1; 40 40 }; 41 41 42 + #define MPTCPOPT_HMAC_LEN 20 42 43 #define MPTCP_RM_IDS_MAX 8 43 44 44 45 struct mptcp_rm_list { ··· 90 89 u32 nonce; 91 90 u32 token; 92 91 u64 thmac; 93 - u8 hmac[20]; 92 + u8 hmac[MPTCPOPT_HMAC_LEN]; 94 93 }; 95 94 }; 96 95 #endif
-1
net/mptcp/protocol.h
··· 83 83 84 84 /* MPTCP MP_JOIN flags */ 85 85 #define MPTCPOPT_BACKUP BIT(0) 86 - #define MPTCPOPT_HMAC_LEN 20 87 86 #define MPTCPOPT_THMAC_LEN 8 88 87 89 88 /* MPTCP MP_CAPABLE flags */
+84 -2
tools/testing/selftests/net/mptcp/mptcp_join.sh
··· 455 455 done 456 456 } 457 457 458 + kill_wait() 459 + { 460 + kill $1 > /dev/null 2>&1 461 + wait $1 2>/dev/null 462 + } 463 + 458 464 pm_nl_set_limits() 459 465 { 460 466 local ns=$1 ··· 660 654 661 655 local port=$((10000 + TEST_COUNT - 1)) 662 656 local cappid 657 + local userspace_pm=0 658 + local evts_ns1 659 + local evts_ns1_pid 660 + local evts_ns2 661 + local evts_ns2_pid 663 662 664 663 :> "$cout" 665 664 :> "$sout" ··· 701 690 extra_args="-r ${speed:6}" 702 691 fi 703 692 693 + if [[ "${addr_nr_ns1}" = "userspace_"* ]]; then 694 + userspace_pm=1 695 + addr_nr_ns1=${addr_nr_ns1:10} 696 + fi 697 + 704 698 if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then 705 699 # disconnect 706 700 extra_args="$extra_args -I ${addr_nr_ns2:10}" 707 701 addr_nr_ns2=0 702 + elif [[ "${addr_nr_ns2}" = "userspace_"* ]]; then 703 + userspace_pm=1 704 + addr_nr_ns2=${addr_nr_ns2:10} 705 + fi 706 + 707 + if [ $userspace_pm -eq 1 ]; then 708 + evts_ns1=$(mktemp) 709 + evts_ns2=$(mktemp) 710 + :> "$evts_ns1" 711 + :> "$evts_ns2" 712 + ip netns exec ${listener_ns} ./pm_nl_ctl events >> "$evts_ns1" 2>&1 & 713 + evts_ns1_pid=$! 714 + ip netns exec ${connector_ns} ./pm_nl_ctl events >> "$evts_ns2" 2>&1 & 715 + evts_ns2_pid=$! 708 716 fi 709 717 710 718 local local_addr ··· 778 748 if [ $addr_nr_ns1 -gt 0 ]; then 779 749 local counter=2 780 750 local add_nr_ns1=${addr_nr_ns1} 751 + local id=10 752 + local tk 781 753 while [ $add_nr_ns1 -gt 0 ]; do 782 754 local addr 783 755 if is_v6 "${connect_addr}"; then ··· 787 755 else 788 756 addr="10.0.$counter.1" 789 757 fi 790 - pm_nl_add_endpoint $ns1 $addr flags signal 758 + if [ $userspace_pm -eq 0 ]; then 759 + pm_nl_add_endpoint $ns1 $addr flags signal 760 + else 761 + tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns1") 762 + ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id 763 + sleep 1 764 + ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id 765 + fi 766 + 791 767 counter=$((counter + 1)) 792 768 add_nr_ns1=$((add_nr_ns1 - 1)) 769 + id=$((id + 1)) 793 770 done 794 771 elif [ $addr_nr_ns1 -lt 0 ]; then 795 772 local rm_nr_ns1=$((-addr_nr_ns1)) ··· 845 804 if [ $addr_nr_ns2 -gt 0 ]; then 846 805 local add_nr_ns2=${addr_nr_ns2} 847 806 local counter=3 807 + local id=20 808 + local tk da dp sp 848 809 while [ $add_nr_ns2 -gt 0 ]; do 849 810 local addr 850 811 if is_v6 "${connect_addr}"; then ··· 854 811 else 855 812 addr="10.0.$counter.2" 856 813 fi 857 - pm_nl_add_endpoint $ns2 $addr flags $flags 814 + if [ $userspace_pm -eq 0 ]; then 815 + pm_nl_add_endpoint $ns2 $addr flags $flags 816 + else 817 + tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 818 + da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2") 819 + dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 820 + ip netns exec ${connector_ns} ./pm_nl_ctl csf lip $addr lid $id \ 821 + rip $da rport $dp token $tk 822 + sleep 1 823 + sp=$(grep "type:10" "$evts_ns2" | 824 + sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 825 + ip netns exec ${connector_ns} ./pm_nl_ctl dsf lip $addr lport $sp \ 826 + rip $da rport $dp token $tk 827 + fi 858 828 counter=$((counter + 1)) 859 829 add_nr_ns2=$((add_nr_ns2 - 1)) 830 + id=$((id + 1)) 860 831 done 861 832 elif [ $addr_nr_ns2 -lt 0 ]; then 862 833 local rm_nr_ns2=$((-addr_nr_ns2)) ··· 945 888 if [ $capture -eq 1 ]; then 946 889 sleep 1 947 890 kill $cappid 891 + fi 892 + 893 + if [ $userspace_pm -eq 1 ]; then 894 + kill_wait $evts_ns1_pid 895 + kill_wait $evts_ns2_pid 896 + rm -rf $evts_ns1 $evts_ns2 948 897 fi 949 898 950 899 NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ ··· 2872 2809 run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow 2873 2810 chk_join_nr 0 0 0 2874 2811 chk_rm_nr 0 0 2812 + fi 2813 + 2814 + # userspace pm add & remove address 2815 + if reset "userspace pm add & remove address"; then 2816 + set_userspace_pm $ns1 2817 + pm_nl_set_limits $ns2 1 1 2818 + run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow 2819 + chk_join_nr 1 1 1 2820 + chk_add_nr 1 1 2821 + chk_rm_nr 1 1 invert 2822 + fi 2823 + 2824 + # userspace pm create destroy subflow 2825 + if reset "userspace pm create destroy subflow"; then 2826 + set_userspace_pm $ns2 2827 + pm_nl_set_limits $ns1 0 1 2828 + run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow 2829 + chk_join_nr 1 1 1 2830 + chk_rm_nr 0 1 2875 2831 fi 2876 2832 } 2877 2833
+1 -1
tools/testing/selftests/net/mptcp/pm_nl_ctl.c
··· 31 31 32 32 static void syntax(char *argv[]) 33 33 { 34 - fprintf(stderr, "%s add|get|set|del|flush|dump|accept [<args>]\n", argv[0]); 34 + fprintf(stderr, "%s add|ann|rem|csf|dsf|get|set|del|flush|dump|events|listen|accept [<args>]\n", argv[0]); 35 35 fprintf(stderr, "\tadd [flags signal|subflow|backup|fullmesh] [id <nr>] [dev <name>] <ip>\n"); 36 36 fprintf(stderr, "\tann <local-ip> id <local-id> token <token> [port <local-port>] [dev <name>]\n"); 37 37 fprintf(stderr, "\trem id <local-id> token <token>\n");
+13 -1
tools/testing/selftests/net/mptcp/simult_flows.sh
··· 12 12 test_cnt=1 13 13 ret=0 14 14 bail=0 15 + slack=50 15 16 16 17 usage() { 17 18 echo "Usage: $0 [ -b ] [ -c ] [ -d ]" ··· 53 52 cout=$(mktemp) 54 53 capout=$(mktemp) 55 54 size=$((2 * 2048 * 4096)) 55 + 56 56 dd if=/dev/zero of=$small bs=4096 count=20 >/dev/null 2>&1 57 57 dd if=/dev/zero of=$large bs=4096 count=$((size / 4096)) >/dev/null 2>&1 58 58 ··· 106 104 ip -net "$ns3" route add default via dead:beef:3::2 107 105 108 106 ip netns exec "$ns3" ./pm_nl_ctl limits 1 1 107 + 108 + # debug build can slow down measurably the test program 109 + # we use quite tight time limit on the run-time, to ensure 110 + # maximum B/W usage. 111 + # Use kmemleak/lockdep/kasan/prove_locking presence as a rough 112 + # estimate for this being a debug kernel and increase the 113 + # maximum run-time accordingly. Observed run times for CI builds 114 + # running selftests, including kbuild, were used to determine the 115 + # amount of time to add. 116 + grep -q ' kmemleak_init$\| lockdep_init$\| kasan_init$\| prove_locking$' /proc/kallsyms && slack=$((slack+550)) 109 117 } 110 118 111 119 # $1: ns, $2: port ··· 253 241 254 242 # mptcp_connect will do some sleeps to allow the mp_join handshake 255 243 # completion (see mptcp_connect): 200ms on each side, add some slack 256 - time=$((time + 450)) 244 + time=$((time + 400 + slack)) 257 245 258 246 printf "%-60s" "$msg" 259 247 do_transfer $small $large $time
+23 -17
tools/testing/selftests/net/mptcp/userspace_pm.sh
··· 37 37 ns1="ns1-$rndh" 38 38 ns2="ns2-$rndh" 39 39 40 + kill_wait() 41 + { 42 + kill $1 > /dev/null 2>&1 43 + wait $1 2>/dev/null 44 + } 45 + 40 46 cleanup() 41 47 { 42 48 echo "cleanup" ··· 54 48 kill -SIGUSR1 $client4_pid > /dev/null 2>&1 55 49 fi 56 50 if [ $server4_pid -ne 0 ]; then 57 - kill $server4_pid > /dev/null 2>&1 51 + kill_wait $server4_pid 58 52 fi 59 53 if [ $client6_pid -ne 0 ]; then 60 54 kill -SIGUSR1 $client6_pid > /dev/null 2>&1 61 55 fi 62 56 if [ $server6_pid -ne 0 ]; then 63 - kill $server6_pid > /dev/null 2>&1 57 + kill_wait $server6_pid 64 58 fi 65 59 if [ $evts_pid -ne 0 ]; then 66 - kill $evts_pid > /dev/null 2>&1 60 + kill_wait $evts_pid 67 61 fi 68 62 local netns 69 63 for netns in "$ns1" "$ns2" ;do ··· 159 153 sleep 1 160 154 161 155 # Capture client/server attributes from MPTCP connection netlink events 162 - kill $client_evts_pid 156 + kill_wait $client_evts_pid 163 157 164 158 local client_token 165 159 local client_port ··· 171 165 client_port=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts") 172 166 client_serverside=$(sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q'\ 173 167 "$client_evts") 174 - kill $server_evts_pid 168 + kill_wait $server_evts_pid 175 169 server_token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts") 176 170 server_serverside=$(sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q'\ 177 171 "$server_evts") ··· 292 286 verify_announce_event "$evts" "$ANNOUNCED" "$server4_token" "10.0.2.2"\ 293 287 "$client_addr_id" "$new4_port" 294 288 295 - kill $evts_pid 289 + kill_wait $evts_pid 296 290 297 291 # Capture events on the network namespace running the client 298 292 :>"$evts" ··· 327 321 verify_announce_event "$evts" "$ANNOUNCED" "$client4_token" "10.0.2.1"\ 328 322 "$server_addr_id" "$new4_port" 329 323 330 - kill $evts_pid 324 + kill_wait $evts_pid 331 325 rm -f "$evts" 332 326 } 333 327 ··· 422 416 sleep 0.5 423 417 verify_remove_event "$evts" "$REMOVED" "$server6_token" "$client_addr_id" 424 418 425 - kill $evts_pid 419 + kill_wait $evts_pid 426 420 427 421 # Capture events on the network namespace running the client 428 422 :>"$evts" ··· 455 449 sleep 0.5 456 450 verify_remove_event "$evts" "$REMOVED" "$client6_token" "$server_addr_id" 457 451 458 - kill $evts_pid 452 + kill_wait $evts_pid 459 453 rm -f "$evts" 460 454 } 461 455 ··· 559 553 "10.0.2.2" "$client4_port" "23" "$client_addr_id" "ns1" "ns2" 560 554 561 555 # Delete the listener from the client ns, if one was created 562 - kill $listener_pid > /dev/null 2>&1 556 + kill_wait $listener_pid 563 557 564 558 local sport 565 559 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") ··· 598 592 "$client_addr_id" "ns1" "ns2" 599 593 600 594 # Delete the listener from the client ns, if one was created 601 - kill $listener_pid > /dev/null 2>&1 595 + kill_wait $listener_pid 602 596 603 597 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") 604 598 ··· 637 631 "$client_addr_id" "ns1" "ns2" 638 632 639 633 # Delete the listener from the client ns, if one was created 640 - kill $listener_pid > /dev/null 2>&1 634 + kill_wait $listener_pid 641 635 642 636 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") 643 637 ··· 653 647 ip netns exec "$ns2" ./pm_nl_ctl rem id $client_addr_id token\ 654 648 "$client4_token" > /dev/null 2>&1 655 649 656 - kill $evts_pid 650 + kill_wait $evts_pid 657 651 658 652 # Capture events on the network namespace running the client 659 653 :>"$evts" ··· 680 674 "10.0.2.1" "$app4_port" "23" "$server_addr_id" "ns2" "ns1" 681 675 682 676 # Delete the listener from the server ns, if one was created 683 - kill $listener_pid> /dev/null 2>&1 677 + kill_wait $listener_pid 684 678 685 679 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") 686 680 ··· 719 713 "$server_addr_id" "ns2" "ns1" 720 714 721 715 # Delete the listener from the server ns, if one was created 722 - kill $listener_pid > /dev/null 2>&1 716 + kill_wait $listener_pid 723 717 724 718 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") 725 719 ··· 756 750 "10.0.2.2" "10.0.2.1" "$new4_port" "23" "$server_addr_id" "ns2" "ns1" 757 751 758 752 # Delete the listener from the server ns, if one was created 759 - kill $listener_pid > /dev/null 2>&1 753 + kill_wait $listener_pid 760 754 761 755 sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts") 762 756 ··· 772 766 ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ 773 767 "$server4_token" > /dev/null 2>&1 774 768 775 - kill $evts_pid 769 + kill_wait $evts_pid 776 770 rm -f "$evts" 777 771 } 778 772