From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676623; b=1kCOE8/urmnsOpk4aFD7/7t+t0NRDJjt6oHO133IHf46VpwFxWUURCJ/FHfdRF2Laof3 6WzOBFV8a7Wh0qMPxM/zdl5uoIf8JeG34B21aqxNZdym7v+6S59MoLKwiKYwIzehlZ7je b+InC66zNOvUiVtaypKeTuqAQMp3CaG+usRf+uJH1i2LHRltIUV1gIR2SmBaH27IS/Lrq ur1utxCcwTJlp/NegGvwUK9b/TQiwO6g4sBV9Z7deyEDh5p5TkMyYp15zEdTfhuzlT1tF 8e1saoFKgIRO1YdaDPx9VqycEWT+1369ZldR9uQoG7nprIdVEKk0an4BQsCtcrEZdtQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676623; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=FcyZ/23EO9wCaimpG8uixyj/1tWZ+pqjTJz3x+0Dc/c=; b=VBBLJqzkZ82sZRi3Wm6D31Z+RSV8oVM09on41Q88xPLUdydZ2kk9yKn7iHm3VdyenLgQ cJmkDjAsNm9VZPJL04S2Vv9D3+Qr+8vSuZCb8lwWQaDx0JYV35Fapp9Jtnowwj5YYYUJ5 yg44cie5hl1EQTuXxzaC/NmWUHh4sjGC3RqLOdsD2RoGf34RX1BNHN5ibN4S/LmcdY3vL +dk6wSUr9zVi5nJL+phX7/Nx7ocJsIBuQYrVcHTCMtCGQfIeDDyG42VPXW/hvbTI1BHDd ByTOBtDp62wIRRx5w8s/epc+wo9/KZ3u+VD1Q/MO9dVNGuPO6d+WQ6gpY0l9CI8p6Yw== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=QRDYBNZF; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F7B5606A327 for ; Tue, 3 Nov 2026 03:30:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=QRDYBNZF Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9429F1F0093A; Tue, 3 Nov 2026 03:30:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676622; bh=FcyZ/23EO9wCaimpG8uixyj/1tWZ+pqjTJz3x+0Dc/c=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=QRDYBNZF3NgrmTadGAwwkqMd8Dr6qvMOId1dbcKaswj6xipdXjrMT2lpHX1opwWUr itqCaJYvFNvQie9t4n5DudDm9HMgbIXUFwa4eeVbJ6fAiBnY72grE8MlB+8SAfWOxO Co4tNItftnDHlKYLYW4BNzKslBFPX14DAaA+me8zXBJ3J120pTdKK1vD3V+dLkpWD4 c0F0WV8kQrrYdplW7FKS7PPeOif+WhfNSPbLYDrs3ezsiHqhE/0f6R5Q5CO8dctYKn hcctC8K+YqpB7A5lx4eucoJNh4zDMON1yA0fPlOsvKsBLKAQVCKLY3yJ9odSk4IZqh O88EfW5tmEn1A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Gang Yan , Geliang Tang Subject: [PATCH mptcp-next v5 1/7] mptcp: update mptcp_check_readable Date: Tue, 3 Nov 2026 11:29:50 +0800 Message-ID: <184d0f6d5246d68be7c8a824a1fa3ac936166b2e.1793676064.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gang Yan This patch makes mptcp_check_readable() aligned with TCP, and renames it to mptcp_stream_is_readable(). It will be used in the case of KTLS, because 'prot' will be modified, tls_sw_sock_is_readable() is expected to be called from prot->sock_is_readable(). Co-developed-by: Geliang Tang Signed-off-by: Geliang Tang Signed-off-by: Gang Yan --- net/mptcp/protocol.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 02a4f479d9d8..0caa31525b90 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3476,9 +3476,11 @@ void __mptcp_unaccepted_force_close(struct sock *sk) __mptcp_destroy_sock(sk); } =20 -static __poll_t mptcp_check_readable(struct sock *sk) +static bool mptcp_stream_is_readable(struct sock *sk) { - return mptcp_epollin_ready(sk) ? EPOLLIN | EPOLLRDNORM : 0; + if (mptcp_epollin_ready(sk)) + return true; + return sk_is_readable(sk); } =20 static void mptcp_check_listen_stop(struct sock *sk) @@ -4580,7 +4582,8 @@ static __poll_t mptcp_poll(struct file *file, struct = socket *sock, mask |=3D EPOLLIN | EPOLLRDNORM | EPOLLRDHUP; =20 if (state !=3D TCP_SYN_SENT && state !=3D TCP_SYN_RECV) { - mask |=3D mptcp_check_readable(sk); + if (mptcp_stream_is_readable(sk)) + mask |=3D EPOLLIN | EPOLLRDNORM; if (shutdown & SEND_SHUTDOWN) mask |=3D EPOLLOUT | EPOLLWRNORM; else --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676624; b=tlBQQAp7t2L+Sze+21WkzRZjVmerqKbJ+sY69Qm7nFEMo+NcQ7AgkuaI5M1WBc+7KVvE 7VNqlntnNOTdYvNFWz14iXupxoBhg34relVyPueZOoQrXf5N+NUVEcSZ5KdWgtZ/EHCrU ee7cXhoWq0I/vGKSwvsK4SozYUqffhiD8gM4oEiq0neaos3zgMA5BOY6jh6aCk4Gi9y1A u/H3tC3ffRFx5Odqt7uZqzajZ/UQJrIBJzy0D2Vm02KsPkVgeA2gYHI9en+PtNSVhAkJI PY3YAkk7X7bdSoMfr6DoL6xOY9KFgDw5xIDJETZ5PMFc95oQNzIbkk4COQ+rS5KMeRA== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676624; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=ahOYnMXfAv5QhyhyaBuTnItWlG1UQzUccllGBFPXCHY=; b=fn6qtgPDX1Z1zPn68PBb0BG7AgSX6/z6ZLV7PaykzF9IcxhkQGFckayqLzSb/d0WFFYR vjPMnzebWVv0BakOww7/3eRBLY4MgtV0NWWEh/JhVSvbOBW9ITfSoIcaEzFi9MJY3GNRP Oxcw5H5I85WgX64uwneFlBtVfapjjJvzu6C63CaEOXFX0xCS+rv75fl3eXTDHfiNGGWaQ vyQMBv+2MPAb1XDJ6eZjaM3uzaLFJG9/QrXGge30QpulzConwy0cG8acHl7txZeGPgoM8 Oa7C+bLROH7tDGLiL2QV+S4HHJ2T4Bqd05mPywe+4VzWpyZBcrPmJp5yQkmkzek4+cQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=LXeB+xrw; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 84663606A326 for ; Tue, 3 Nov 2026 03:30:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=LXeB+xrw Received: by smtp.kernel.org (Postfix) with ESMTPSA id 407811F000C1; Tue, 3 Nov 2026 03:30:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676624; bh=ahOYnMXfAv5QhyhyaBuTnItWlG1UQzUccllGBFPXCHY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=LXeB+xrwm7+pGUp45tbc4JWHZd9t+JAfIJPnEvk4gi3YJAdUPPh5+O/b4vBMe8u2+ y5cptS2Pq19ko+kDhk3a23ACZJxCOkRmbR/MnPdVZ5lVN37IBf/OmZ45jsv1OgmV4S o2F+h/ejIaaLfolJXYE5igGM7lM5Br7hGNSmriEsZ9F9gEm058kmn3RQFEbtXjgYJe hIyluFr29hSSUG5NX035V7z+rDdaC9c9Kz1HHfEo50SzMkc38dyotSKeLQkUDmMJ19 fGo3x0g3fXQ+88S58gXxPIP4UHWXW2YvEwm9FZHnLoFrAlX3Gx7IqSzs+y1vRxH4xa aR50sbsmFLK0w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 2/7] mptcp: use mptcp_data_avail in mptcp_inq_hint Date: Tue, 3 Nov 2026 11:29:51 +0800 Message-ID: X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Update mptcp_inq_hint() to compute available bytes using mptcp_data_avail() (bytes_received - bytes_consumed) instead of ack_seq minus the head skb's map_seq. This change aligns mptcp_inq_hint() with mptcp_inq() and provides more consistent behavior across different connection types, including passive TFO connections where the TFO skb has map_seq set to -skb->len (data before IASN). Using mptcp_data_avail() avoids potential overflow issues when ack_seq is set to iasn. The EOF hint behavior (returning 1 when socket is closed with no data) is preserved by checking if avail is zero and the socket state indicates closure or shutdown. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 0caa31525b90..1704e689bc93 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2402,22 +2402,16 @@ static bool mptcp_move_skbs(struct sock *sk) static unsigned int mptcp_inq_hint(const struct sock *sk) { const struct mptcp_sock *msk =3D mptcp_sk(sk); - const struct sk_buff *skb; + u64 hint_val =3D mptcp_data_avail(msk); =20 - skb =3D skb_peek(&sk->sk_receive_queue); - if (skb) { - u64 hint_val =3D READ_ONCE(msk->ack_seq) - MPTCP_SKB_CB(skb)->map_seq; + if (hint_val >=3D INT_MAX) + return INT_MAX; =20 - if (hint_val >=3D INT_MAX) - return INT_MAX; - - return (unsigned int)hint_val; - } - - if (sk->sk_state =3D=3D TCP_CLOSE || (sk->sk_shutdown & RCV_SHUTDOWN)) + if (!hint_val && + (sk->sk_state =3D=3D TCP_CLOSE || (sk->sk_shutdown & RCV_SHUTDOWN))) return 1; =20 - return 0; + return (unsigned int)hint_val; } =20 static int mptcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676626; b=kG+LafvEyaiAvCla+mz7noo/8ppFx1Osjqf1hoD95/qRI6iBAovbuOG0N6gN1VGIM886 EBIDrhhBB61RiMR58HLVGvm3loXeUWn4PRkEkUFDgnMj0vF4d/3cJ0k/Qci05e3vuuZsn q3w+90Zp5OFJXUWhyhcnXiLoRWo1bJeZcBJcZjZ9lBzhbJnRb084a7M7G/Rl3cFcJt4RS MGSm9YVtQs60B5h3wNJmFGBQBtcJdDvnoY6Y+2c+5bn1nHk3cmCh1frMPv4msygeYaPDD suglTmjhFK7NMucg6WY9gzdq3SRnjlDmvJLY0Assf+3OAZ1l9G83NY24hvCWTUjM+0A== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676626; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=tmoAdzwj29KU6V05GPs/kWh7gb1ozKF2dUQMQmJSD8E=; b=byHpSQAqBbByzeKKKpyV+CWYhrJfOzzCc0Hp7vyHKhLrDaoVkf64r2EBRmnVh1paeazK 25L4JlNDIPA2shjLtfMYBJQCZb2eNNGrFidEHAwqdl3lyUm2xU+kWtaf5u/zWaZtylcyg 9FaqVjsZp+Wh6OY90HBFszJSwlIoEkEI5NYX4NOmJL1DhDgctHy71TI4FKFG6o/VXc7F0 UStH3AyrSZPx/5rFSpcMDKO51FFGRqPpc/ArA/OdbKXR2eC5E5dy2cdWYPvsy6r9J4GS8 lVz6nRYqOKg6zHtg+YFrJc6qYK2+bqzqHdaSx2Oipz+sPgIJst6w4Tryn4ZoB3MVmbA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=fkYXcMWS; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEACB606A33E for ; Tue, 3 Nov 2026 03:30:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=fkYXcMWS Received: by smtp.kernel.org (Postfix) with ESMTPSA id 841AF1F00A02; Tue, 3 Nov 2026 03:30:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676625; bh=tmoAdzwj29KU6V05GPs/kWh7gb1ozKF2dUQMQmJSD8E=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=fkYXcMWSmThguSL95bu78V1lqoBOWnr03DWDwlhKdFGpxIwl12QWqM2xQ33/Qo2cO x54bB5n6V/titdiMrw+wk4tZR3elNWANc0rXD15JY+mpHIZpQ9NwZN7jlv0+5cIhJ8 9RtGRMZ5aD+r8wC5/ymgmo484DxWWnFxgkBJcU3KORzECy64ttXiZmL2zKbQ3NIwPC PEd+u/Pdrn7J4n2zMTO36JSntBMnYPxMGrqSXfQcGhogxu587Hy0PkKkB0p/HJhujs UmruI8VAqj2stUFB/PQjgrOJmj6X9AP5EWG33LsGYxEYK7BKOpjtpuQcD+gO+dQwnt 3Fk1jXkpWQE0Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 3/7] selftests: mptcp: connect: check TFO SIOCINQ overflow Date: Tue, 3 Nov 2026 11:29:52 +0800 Message-ID: X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Add a check in mptcp_connect's server mode to detect TFO SIOCINQ overflow. When a TFO connection is accepted, wait for data to arrive using poll(), then check if SIOCINQ returns INT_MAX. This detects the overflow bug where mptcp_inq_hint() incorrectly returns INT_MAX for TFO connections due to map_seq sign extension issues. The check is performed immediately after accept() and before opening cfg_input, ensuring we catch the overflow in the initial TFO state. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_connect.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/test= ing/selftests/net/mptcp/mptcp_connect.c index 178d98d91fea..b12afca2ce30 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -1207,6 +1207,21 @@ int main_loop_s(int listensock) check_sockaddr(pf, &ss, salen); check_getpeername(remotesock, &ss, salen); =20 + if (cfg_sockopt_types.mptfo) { + int avail; + + /* Wait for TFO data to arrive */ + polls.fd =3D remotesock; + polls.events =3D POLLIN; + poll(&polls, 1, 1000); + if (ioctl(remotesock, SIOCINQ, &avail) =3D=3D 0 && + avail =3D=3D INT_MAX) { + fprintf(stderr, "TFO SIOCINQ overflow\n"); + close(remotesock); + return 1; + } + } + if (cfg_input) { fd =3D open(cfg_input, O_RDONLY); if (fd < 0) --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676629; b=n/IpGFVY2fR2TQPtw5ELJE3uMm4YSkb4DvnEpTUVpgIvJ0sVaXPWcaN7WzHFDGJg2101 ewSPToMK141nQ27lTJ42YpmB0sE+n3eixwi+VNEVXFS5x9wuLVmU7Re+gMCZ+UT4E/nHB 86vWEDQnko218kH7N5gosF/aFTK4KobSf0xHax0fRid8kcvIpY+T7s4WK/yJ8bxahHjpW FuQx5YMiXxx54fSlSNyEsSVllurxTNIq7UNx6Ox5kYekYaddb5EO+JO8O/ZGTz0JXAqPs v76vcO/0ljcdMZvToz1meq8RkDl2zYCaQE8uIqmCr2JVX7oq7li4EcOYZ3LBGDZ67gQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676629; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=LuZLAKAg0bvLrM7X8UV5lVXuZgaYJtROK65eNV+J8J8=; b=Qj+NsGRy0S8ztD8OgNzA8Jxpj0fXR1MmFWIis07XahiCVNJHGNOI2E4LBZV5gduZvOxy ewz6qGYSuvqfdM/0tAB3olWlQsOZlPxmILGUkNRBE92Enf8qu9C5rVtM+w15qNvXk24+s hmIuSG3fwpjdUfVd3ldus7sS9DsEI1cslAdJldmktGHSKHhsUbzEZ/8UxvkPFI050x0QM TSZVv3YcnUKgAAnKWbGL7nIgapeYuRIy9/mm8EZvSgnKtHrhwtLAlxKdirGcjqZvSXIaF eqilHBeHXQNa0R9NCzM/YaGgzR+II6gL2ZLxkMCGPlJNHszpojO3TvJD5MGbLlqtfGg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=NFNd9qbh; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 136C5606D815 for ; Tue, 3 Nov 2026 03:30:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=NFNd9qbh Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6BC141F00A18; Tue, 3 Nov 2026 03:30:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676628; bh=LuZLAKAg0bvLrM7X8UV5lVXuZgaYJtROK65eNV+J8J8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=NFNd9qbhuR09rxgZsXOjxQmRMBG6XFM6NOCE2wuZZqK8JyxA8YI6vz6/uHSVbkabg HHn+Q1oMIEk9S1W5UC1HMVyt24DM5jb50utLTuq3WBoGx1BWIPwm6lSrEZ9jfxn7X1 40dVLLwlsUH+eT1GzYI71WG94EvpR9pZMUjT8kFUNSS+NuMKJWfZamQKpeXQnxjqXJ wf3eRGmhl1IbDmFljvGuaFF9ORTIDCQlu54XxpdHOMKiC2mBxoYen55L9EFYkByLxy R/U7Yh8ZYupFucYermKiQPiwQM7KB/CWE54S0kcV43XBCZGOK4Cbxfbw4I7fIyLkD8 xlyzbDQ8bZEeg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang , Zqiang Subject: [PATCH mptcp-next v5 4/7] mptcp: implement peek_len for proto_ops Date: Tue, 3 Nov 2026 11:29:53 +0800 Message-ID: <52dd6aede4a899de3ab622bf7329a95521e9770f.1793676064.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Add mptcp_inq() to compute readable bytes at the MPTCP level using mptcp_data_avail() (bytes_received - bytes_consumed). Returns 0 during handshake (TCPF_SYN_SENT/TCPF_SYN_RECV), INT_MAX when avail >=3D INT_MAX, otherwise the actual byte count. Wire into mptcp_peek_len() and assign .peek_len in both mptcp_stream_ops and mptcp_v6_stream_ops. This prepares for upcoming kTLS and sockmap support. Co-developed-by: Zqiang Signed-off-by: Zqiang Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 1704e689bc93..aed25c901e4b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -4791,6 +4791,26 @@ static ssize_t mptcp_splice_read(struct socket *sock= , loff_t *ppos, return ret; } =20 +static int mptcp_inq(struct sock *sk) +{ + const struct mptcp_sock *msk =3D mptcp_sk(sk); + u64 avail; + + if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) + return 0; + + avail =3D mptcp_data_avail(msk); + if (avail >=3D INT_MAX) + return INT_MAX; + + return (unsigned int)avail; +} + +static int mptcp_peek_len(struct socket *sock) +{ + return mptcp_inq(sock->sk); +} + static const struct proto_ops mptcp_stream_ops =3D { .family =3D PF_INET, .owner =3D THIS_MODULE, @@ -4813,6 +4833,7 @@ static const struct proto_ops mptcp_stream_ops =3D { .set_rcvlowat =3D mptcp_set_rcvlowat, .read_sock =3D mptcp_read_sock, .splice_read =3D mptcp_splice_read, + .peek_len =3D mptcp_peek_len, }; =20 static struct inet_protosw mptcp_protosw =3D { @@ -4925,6 +4946,7 @@ static const struct proto_ops mptcp_v6_stream_ops =3D= { .set_rcvlowat =3D mptcp_set_rcvlowat, .read_sock =3D mptcp_read_sock, .splice_read =3D mptcp_splice_read, + .peek_len =3D mptcp_peek_len, }; =20 static struct proto mptcp_v6_prot; --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676631; b=hdzcweLvkA4QQVSycLiQCZbtWFSQz6Lc8CBb69LNdgPMMPJdjrSZ3+vtFbgA5aEI7tmD +hSpCMpGg75aiK6/j95ATwjxa4tv32ZalLvCMYMFF62bzBsUD9VAT7+dXXxA6sgpyzHrb CXcT0rkN0tcP2xuBzou0XYKnEN9ERGMmgHpYJfzbvPQa2pehiJbAl0EhE0btiXpN2no3H beBVwmk0kEgBUnih5nshennnYUl1684Om7XJbngQxPp4EiXIm/Dw7DstLWPh6/OxRHm2R VqsT44UVOVtZtVsI9Tm3Hzsw+zLBr7rW1vLfkz7CHxfPPu9XMJ8RCA4e/ubHULcamCQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676631; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=MORb8QvwzgTd1/sWVrspuwjFiYUddUFGamRCAieLgPs=; b=A36MOR8SRzFhnbIVjD80kn3e5F478NS5z2Ik47lopU4sKyyXI2tJsicvXGlGfS7qrSwq /xoSQWXwZJCDzwQYtQ1/eKK01keLgYy0M5xzxgF+/Ob3ZEMYLWaYa6+Iv1Czug4G+P+Fa S7cUT9VTM4481AI55VfnPM4GPU+VJJToeQ+CA7M8HVVL4hcVDpn8G0zGu4jbpwgSjBzCz /9gMn1CJFy7ZnmcNLmbiYy7AcTujIVNjoC0L8fdAy+xYGI3yWRZpynzpBorMN330ZuCl4 4mglUgpiQQtNk/OnR4HrrgVq6YdA+xBiC1/bIpNJjr0QfH/AuxTZ/7eXu5IBShGew5g== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=UO981arL; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04C37606D803 for ; Tue, 3 Nov 2026 03:30:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=UO981arL Received: by smtp.kernel.org (Postfix) with ESMTPSA id C08D71F00A1B; Tue, 3 Nov 2026 03:30:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676630; bh=MORb8QvwzgTd1/sWVrspuwjFiYUddUFGamRCAieLgPs=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=UO981arLmeq2qkNzQGFuW5n/F9EO0SqByTscee1pbm+si6xnaEG3hPtDrOjiYKkUz Tl96y0kCIRxqjzbi2Z8i5PgIL8FbIAlM7u8MZ4giM+kpG8KdwsoY2xvfGgz4wgs9i3 3TYC6DlGeYurki+XYLs8W1BmpF10JeIQmzjet6xFoDh9C7Q5wac7D/4w0AdqVQO7SG FmoO1d4jGfh5r5JeDuX21VBhHlnPWEhHoRbTv6xIwG2objpaJKZi37CqQmKqyehC+C NyI6cAK8j0xt1TxrH1CRzhAbn0T0BJSVdraN6qAzxt/4/U5rI60WannCK5iUZShzM4 W3InXv+Lf7Ufw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 5/7] mptcp: add sendmsg_locked to proto_ops Date: Tue, 3 Nov 2026 11:29:54 +0800 Message-ID: X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang MPTCP currently provides a standard sendmsg() implementation which acquires and releases the socket lock internally. However, certain upper layers need to call the sendmsg method while the socket lock is already held. Split the existing mptcp_sendmsg() into mptcp_sendmsg_locked() which assumes the caller holds the socket lock, and a tiny wrapper mptcp_sendmsg() that acquires the lock and calls the locked version. Add msk_owned_by_me() assertion to enforce the locking requirement. Expose .sendmsg_locked in both mptcp_stream_ops and mptcp_v6_stream_ops. This prepares for upcoming kTLS and sockmap support. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index aed25c901e4b..b9c7b0bb6f74 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2038,7 +2038,7 @@ static void mptcp_rps_record_subflows(const struct mp= tcp_sock *msk) } } =20 -static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) +static int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_= t len) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct page_frag *pfrag; @@ -2046,12 +2046,12 @@ static int mptcp_sendmsg(struct sock *sk, struct ms= ghdr *msg, size_t len) int ret =3D 0; long timeo; =20 + msk_owned_by_me(msk); + /* silently ignore everything else */ msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | MSG_FASTOPEN | MSG_EOR; =20 - lock_sock(sk); - mptcp_rps_record_subflows(msk); =20 if (unlikely(inet_test_bit(DEFER_CONNECT, sk) || @@ -2167,7 +2167,6 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) } =20 out: - release_sock(sk); return copied; =20 do_error: @@ -2180,6 +2179,17 @@ static int mptcp_sendmsg(struct sock *sk, struct msg= hdr *msg, size_t len) goto out; } =20 +static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) +{ + int ret; + + lock_sock(sk); + ret =3D mptcp_sendmsg_locked(sk, msg, len); + release_sock(sk); + + return ret; +} + static void mptcp_rcv_space_adjust(struct mptcp_sock *msk, int copied); =20 static void mptcp_eat_recv_skb(struct sock *sk, struct sk_buff *skb) @@ -4834,6 +4844,7 @@ static const struct proto_ops mptcp_stream_ops =3D { .read_sock =3D mptcp_read_sock, .splice_read =3D mptcp_splice_read, .peek_len =3D mptcp_peek_len, + .sendmsg_locked =3D mptcp_sendmsg_locked, }; =20 static struct inet_protosw mptcp_protosw =3D { @@ -4947,6 +4958,7 @@ static const struct proto_ops mptcp_v6_stream_ops =3D= { .read_sock =3D mptcp_read_sock, .splice_read =3D mptcp_splice_read, .peek_len =3D mptcp_peek_len, + .sendmsg_locked =3D mptcp_sendmsg_locked, }; =20 static struct proto mptcp_v6_prot; --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676634; b=pkusmV35YeiG4VNcNJviEzs7FBOa7tFNzG6HYDCMLRZenXHhFyyNEwy4hVNY8G3YCRXu Bl8KTO9XreYjMlndIUkDVJZQaxKkDIannSKz18R/D5kDDtUu9k7hUe3prOuDewckkqH9l ZgaQf+h37ZCe8nJ7bd1YNpcNU8G3UZVL99DcGnqmPZx0SAhDx+LLaaZPJa27jZuHcMlDp Vm3PcdjXewMF9/oc5WHkaIyzxzdckZ5sCqyeY6BpzbUbxLiiTuM8W/T6+iWTN482lv96c TbXt7BqGfS4PpWJJZ/TigRWiLn1d5v0T4keyLP6vX9S1t0B0E26T06zv7zievnXOUuw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676634; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=zEfSbIRPgP8xmeqYZ5Dj/gEVwjjuOUxuTR+GEo3HwoU=; b=dXeid8ql9L4VwOl9ahZ6UHJtZU0rxBKo2Qx69M4L3joetUw8+cPxawtIAhbca+0xWW9y /mCXinuNNZz7qmB8up/HklrchjgTxDa86tiZsWkH6cMEtljakGIbfWTSlHZuHsYhISQ5e tuzn6UB36T1kWRyJU8pe0qn9bv8qx5tqOQYUs7jjUMWeW+bSYaJzdO1nFJF9dkGokOLid 7CjnW2x33bb7vAFXN7BzIf6qkqD9U0dmiQ7PDeOQ0nd/UEdsiA7Tv4Wp/PXv0owK8N+l/ riy5J/gKDtF5lHJTO28MULrNVBLbOJtBRRpLAHApl0KEzmzccevMWhuHPpkMVtlLjvg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=OAawDjy+; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7CB8606D827 for ; Tue, 3 Nov 2026 03:30:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=OAawDjy+ Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D1411F000C1; Tue, 3 Nov 2026 03:30:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676633; bh=zEfSbIRPgP8xmeqYZ5Dj/gEVwjjuOUxuTR+GEo3HwoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=OAawDjy+M/o7x3fGfp1ojDQQLkKclTGY/FQpYZ6wCy35VyCKDLpnMASkKkdAmoAEW nsEA6F3CL8CTJCqww18lKozfCF6Jvwo80CdaaaLqOQZwU/X7kkhImVcnGUZI3UGXhj LrHZAh0UQlb75KefU6K8qmMiCt3qPUceaj6czxwQjmXZt4+fKNVoOYjxQn25MMKOHI 7qnYzOoT1VZftQNIHVf1h+vE9GxXKGQq3MZWI9TuuFbH7kvM+f2cyYzTuQcAWvdlGN KjcLI/yYdfGfARO+8HsybNGdQ2zpY7Aap2Skn+v3uA7/4xLbPetVBum9oZhBBhbaHH n2xBn2vHArsnA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 6/7] mptcp: track app-limited state in mptcp_sendmsg Date: Tue, 3 Nov 2026 11:29:55 +0800 Message-ID: X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Add mptcp_rate_check_app_limited() that walks every subflow and runs tcp_rate_check_app_limited() under each subflow's socket lock. The helper bails out early when MPTCP still has data to send: unsent data (write_seq !=3D snd_nxt), skbs on the send queue (mptcp_send_head), or pending retransmission (MPTCP_WORK_RTX or MPTCP_RETRANSMIT flags). In these cases marking subflows app-limited would mislead congestion controllers. Invoke from mptcp_sendmsg_locked() after send-side setup so BBR and similar controllers can ignore rate samples taken while the connection is genuinely application-limited. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index b9c7b0bb6f74..c0a0b28f6af1 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2038,6 +2038,26 @@ static void mptcp_rps_record_subflows(const struct m= ptcp_sock *msk) } } =20 +static void mptcp_rate_check_app_limited(struct sock *sk) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_subflow_context *subflow; + + if (msk->write_seq !=3D msk->snd_nxt || mptcp_send_head(sk) || + test_bit(MPTCP_WORK_RTX, &msk->flags) || + test_bit(MPTCP_RETRANSMIT, &msk->cb_flags)) + return; + + mptcp_for_each_subflow(msk, subflow) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + bool slow; + + slow =3D lock_sock_fast_nested(ssk); + tcp_rate_check_app_limited(ssk); + unlock_sock_fast(ssk, slow); + } +} + static int mptcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_= t len) { struct mptcp_sock *msk =3D mptcp_sk(sk); @@ -2068,6 +2088,9 @@ static int mptcp_sendmsg_locked(struct sock *sk, stru= ct msghdr *msg, size_t len) =20 timeo =3D sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT); =20 + /* is sending application-limited? */ + mptcp_rate_check_app_limited(sk); + if ((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) { ret =3D sk_stream_wait_connect(sk, &timeo); if (ret) --=20 2.55.0 From nobody Thu Nov 5 07:28:10 2026 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793676635; b=l9TlwCUiJtcjl+JnS2MT6OEQz+5v4pdfP3c+gAObWXD3w2b/woTVUSlIjwnnWjmeJVr4 Oc8ImGE5gsYLSZeW44SuyxvAMGzD+zXrMuEiDUTtiO3++cjJgdVVkC6T3NXAz4Od3b+Nn Z0uo71aLbOmSjisiV3fLu+Pu+H11r3+Pxc93B8tuIE0IvbS3XpgasHJ8pY/gkZmQi0SHI zK2+2+2WIV0t/ZwoDLZteJ2ZsvGLOFWde0dKGxpdavll/CawUWF7xy36k5dQyyWHu7jRC hZh3ecq/47io1dPBLZ4Wr3uQEMYtne+/81QsuU1PnwJu218opGUeAdeaGigLpdx3Kow== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793676635; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=7+j85nzl2zC+6eFpOE4tO71tHI7dTH1G+8o1HEDJfMA=; b=An+mgFGKPoFzXRJFpI7yVy7/FRCz6OTy9dmiVXUR7NPgAdYZOcw2oUrVLXZh9IwNnoG9 5WyKNTzPLRXv+QnlQOQJXJHzLsWkYl5uwXuQKgC/IJhf4X4iehKw6bm6sKFbeiIY0MQBn eMlMTceDL3iAmQgLZbocBsDHIBTurCdGh8+Iq9gkji4ZBtIL4chnUtRTL62OW90Uevl4o tFXK3z+xP8HHsIBxamhmaZOlarwKut6VR+gl0huH9ffKM2VZshkb1CimA2IozStOWo02Z M9XeCPUEGOl8ak8j7L4Ma9GJPIFl2dQwsIHit9G4LZSBxbfDv9KVBy6ychqEUWhnkVA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=RxTdwWo6; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B625606D82A for ; Tue, 3 Nov 2026 03:30:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=RxTdwWo6 Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7F8E1F00A1B; Tue, 3 Nov 2026 03:30:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793676634; bh=7+j85nzl2zC+6eFpOE4tO71tHI7dTH1G+8o1HEDJfMA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=RxTdwWo6Zkinn6CkM4D8iUHrbzFrFeNqKNRLehKXYbSqlTvRjLlylg6wa09YBuso5 v7xfz7D47yDBPAWOL/IyqAlQFN7M6CC/RxpASHDyIdSb2BS7ea4eee2oLzqRSvi6DH f1lnj9H6E5BugF7c8xlSEbxxI79uN8lQahMkA3pFUPyaIkwI3MmyTCIYVZh0S19qB7 RUBvWJfMHDSgVOZkp4rK5dHuh6CX8d3yg2oe8CwL674ELIlKTgt4weBrLRov2LJrUc alLm6rcYzadNK8zIlaPse9JPC+IptPczqpTvehPVFKXYAfQgfwT6UYjc/fBrJdv29p 4kyN4o4N7/0tA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 7/7] selftests: mptcp: sockopt: check app_limited Date: Tue, 3 Nov 2026 11:29:56 +0800 Message-ID: <7f5deed2c76c4470c30cce0571574568dce05a01.1793676064.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang After a small data exchange, assert tcpi_delivery_rate_app_limited =3D=3D 1. rate_app_limited starts at 1 (tcp_init_sock) and is cleared only by non-app-limited rate samples. The preceding commit makes mptcp_rate_check_app_limited() set tp->app_limited on subflows when MPTCP has no pending data, marking outgoing skbs as app-limited so rate samples don't clear rate_app_limited. This guards against regressions in subflow app-limited accounting. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_sockopt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/test= ing/selftests/net/mptcp/mptcp_sockopt.c index b8158a1198eb..9517c530ba21 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c @@ -635,6 +635,11 @@ static void connect_one_server(int fd, int pipefd) do_getsockopts(&s, fd, total, total); =20 assert(s.mptcpi_rcv_delta =3D=3D (uint64_t)total); + + /* app-limited accounting only checked under EXPECT_ALL_FEATURES */ + if (expect_all_features()) + assert(s.tcp_info.tcpi_delivery_rate_app_limited =3D=3D 1); + close(fd); } =20 --=20 2.55.0