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-handle-late-add_addr-selftests-skip'

Matthieu Baerts says:

====================
mptcp: handle late ADD_ADDR + selftests skip

Here are a few independent fixes related to MPTCP and its selftests:

- Patch 1: correctly handle ADD_ADDR being received after the switch to
'fully-established'. A fix for another recent fix backported up to
v5.14.

- Patches 2-5: properly mark some MPTCP Join subtests as 'skipped' if
the tested kernel doesn't support the feature being validated. Some
fixes for up to v5.13, v5.18, v6.11 and v6.18-rc1 respectively.
====================

Link: https://patch.msgid.link/20251020-net-mptcp-c-flag-late-add-addr-v1-0-8207030cb0e8@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+15 -9
+6
net/mptcp/pm_kernel.c
··· 370 370 } 371 371 372 372 subflow: 373 + /* No need to try establishing subflows to remote id0 if not allowed */ 374 + if (mptcp_pm_add_addr_c_flag_case(msk)) 375 + goto exit; 376 + 373 377 /* check if should create a new subflow */ 374 378 while (msk->pm.local_addr_used < endp_subflow_max && 375 379 msk->pm.extra_subflows < limit_extra_subflows) { ··· 405 401 __mptcp_subflow_connect(sk, &local, &addrs[i]); 406 402 spin_lock_bh(&msk->pm.lock); 407 403 } 404 + 405 + exit: 408 406 mptcp_pm_nl_check_work_pending(msk); 409 407 } 410 408
+9 -9
tools/testing/selftests/net/mptcp/mptcp_join.sh
··· 2324 2324 { 2325 2325 # no laminar endpoints: routing rules are used 2326 2326 if reset_with_tcp_filter "without a laminar endpoint" ns1 10.0.2.2 REJECT && 2327 - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2327 + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2328 2328 pm_nl_set_limits $ns1 0 2 2329 2329 pm_nl_set_limits $ns2 2 2 2330 2330 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 2336 2336 2337 2337 # laminar endpoints: this endpoint is used 2338 2338 if reset_with_tcp_filter "with a laminar endpoint" ns1 10.0.2.2 REJECT && 2339 - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2339 + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2340 2340 pm_nl_set_limits $ns1 0 2 2341 2341 pm_nl_set_limits $ns2 2 2 2342 2342 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 2348 2348 2349 2349 # laminar endpoints: these endpoints are used 2350 2350 if reset_with_tcp_filter "with multiple laminar endpoints" ns1 10.0.2.2 REJECT && 2351 - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2351 + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2352 2352 pm_nl_set_limits $ns1 0 2 2353 2353 pm_nl_set_limits $ns2 2 2 2354 2354 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 2363 2363 2364 2364 # laminar endpoints: only one endpoint is used 2365 2365 if reset_with_tcp_filter "single laminar endpoint" ns1 10.0.2.2 REJECT && 2366 - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2366 + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2367 2367 pm_nl_set_limits $ns1 0 2 2368 2368 pm_nl_set_limits $ns2 2 2 2369 2369 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 2376 2376 2377 2377 # laminar endpoints: subflow and laminar flags 2378 2378 if reset_with_tcp_filter "sublow + laminar endpoints" ns1 10.0.2.2 REJECT && 2379 - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2379 + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then 2380 2380 pm_nl_set_limits $ns1 0 4 2381 2381 pm_nl_set_limits $ns2 2 4 2382 2382 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 3939 3939 # subflow_rebuild_header is needed to support the implicit flag 3940 3940 # userspace pm type prevents add_addr 3941 3941 if reset "implicit EP" && 3942 - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 3942 + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 3943 3943 pm_nl_set_limits $ns1 2 2 3944 3944 pm_nl_set_limits $ns2 2 2 3945 3945 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal ··· 3964 3964 fi 3965 3965 3966 3966 if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT && 3967 - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 3967 + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 3968 3968 start_events 3969 3969 pm_nl_set_limits $ns1 0 3 3970 3970 pm_nl_set_limits $ns2 0 3 ··· 4040 4040 4041 4041 # remove and re-add 4042 4042 if reset_with_events "delete re-add signal" && 4043 - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 4043 + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 4044 4044 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=0 4045 4045 pm_nl_set_limits $ns1 0 3 4046 4046 pm_nl_set_limits $ns2 3 3 ··· 4115 4115 4116 4116 # flush and re-add 4117 4117 if reset_with_tcp_filter "flush re-add" ns2 10.0.3.2 REJECT OUTPUT && 4118 - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 4118 + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then 4119 4119 pm_nl_set_limits $ns1 0 2 4120 4120 pm_nl_set_limits $ns2 1 2 4121 4121 # broadcast IP: no packet for this address will be received on ns1