From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id E546281299 for ; Fri, 6 Nov 2026 03:04:32 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A633JGA012743; Fri, 6 Nov 2026 06:03:19 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A633JGA012743 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="c6HUvf7J" Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A63396T012698 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 6 Nov 2026 06:03:09 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A63396T012698 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-49090fde23aso183504f8f.2 for ; Thu, 05 Nov 2026 19:03:09 -0800 (PST) X-Gm-Message-State: APuU4Z/tg7XMrp7ChzRnf8whtaK2psApx1tuCRdQLZ+FA9FwVTBqtx0T 0XmnDiup1rZY85+GMo/c4DicXTnm/t4i1Yj1bDO9u+hkzs3IzjZDp0L4/No3l9Hw32vOMpQotId cB+nxvNT9hzy1jhBWjh+rGaNRTh4QJhj37xsmTENUnNN/LTkgYZ1SPQ== X-Gm-Gg: AYBFou2q9N8pUVIVDWdtghnCo/Qdz4tk3IE8mXwfwAlm7kSay/fkPLAd+1oH7q0VtRj MXWbZtA7xOw9B6+vyGLH2r/nm6exv3UhQgZOKj+IJotW5+22uBp4J+B8bRxnfkwC0TERmRWiWHV o2S47KPZLOk1dKPTFoweROVq5qVGaetkcUyRImWWk9d4L2OVVqGbSjLnpy6jO1Z17bP6DS0UdxV 1SHpmrzXkoj5xv9kcvLkXa+urgRvlVQPzmWDqvyHwzdZTj6yPLezRQvWl/kQnOezlK7ndjRwQ8M ffWrk1bpjwGy8DvY7hjtaJvqHOZfxEPMWszcNBMwAO7UBDNMcWQ3em8Eh1Ug5Y9KFz+qF7XPn82 S7xl66Mcp7Bx0JPiJXNQtcd3X X-Received: by 2002:a05:6000:2282:b0:491:49c2:3b3 with SMTP id ffacd0b85a97d-49277e91678mr2755928f8f.51.1793934189227; Thu, 05 Nov 2026 19:03:09 -0800 (PST) X-Received: by 2002:a05:6000:2282:b0:491:49c2:3b3 with SMTP id ffacd0b85a97d-49277e91678mr2755897f8f.51.1793934188697; Thu, 05 Nov 2026 19:03:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1793934188; cv=none; d=google.com; s=arc-20260327; b=lkuVxfZqijrpRs9IStNYQP4NCIOC1hawSSbL45KTGRoZ58hphKYxtvNImHsmQzChPi ZGpjODUDou2cKkz9yVHIbe3oaYMNntYxPsfrwzMqI0JIT5GlwEoscsGagMT0kXWD4Ghy oKWZxhczDLRURWVAaFoU2aDr/MTzsSfVknUZJkFC8PSATyG4gE8mNVysfLRi91GU4nO/ J1983QVRuQDVXni0RPmgw7wol/0F+iTz11a65hWcDX7boEIrd5VTm3AUb0HjCOjXFlx2 FOPLx2tDUDzPXrELbBubh/qkX2qcUtcjG+X45V5ylJ+3nDOIx7mbAJhN9GGMZmek3pZ5 cexQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=tRBCUKcGD12faGptwe60eLSwdmaGlpfgtjsNJZDmOAQ=; fh=WpT6aB7RBAGHZeWZzqAr71yzRFbPTYkPWKsRagLn48Q=; b=ryvuuRIyF8icjHEPRSrPOiKWQ7AA8c32NgbraC+eJkFwUcWqs+s3HPNklptEEi1Y+s 4D7gkfBjoPC9Sf5jeV5MZjtdSoJP0kl8BS4TzUmHGFEVoVkwdkwPopFSNZRPVy1UUwuz /maK0DE6fL0v65TMpoqPNWY3Iv1jhm42pFe882EZjOP4fxa7Mmxpekm+Vhw5XE0EK69R elHci84cd72knR9HOzv0YdZjJZLq3GsrzcYNbof5v9moTXpWkY1p051gSmL4ZiVVnTuu 2S0K9xdS8cG12204GsTB9T5B9kOu9KV/1heStFgZjLRlj4sQXs3rSNEDofxyDfUGEna6 QNTA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=c6HUvf7J; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-492d713c5bfsi1137320f8f.229.2026.11.05.19.03.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2026 19:03:08 -0800 (PST) Received-SPF: pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=c6HUvf7J; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=tRBCUKcGD12faGptwe60eLSwdmaGlpfgtjsNJZDmOAQ=; b=c6HUvf7JTtgC vJhhtLkr5YUdNoejEyPsmiTZTtTg8ZolSlFoOPTGRXohf34/cLOUwRXxt2IEq3DBHuDmD16wiV/qv DWpHAfbkf3Ofaxi6/VP6siUpSSPIbQCSfDiWJbgttjlTFu9dZjdoJM3WhCCRQZeWmLOn0LCKq0N30 PBbAh0lFZ0r7y0h/cr9SFEe6/pa6Tb5671lJgMf02Q632XzNpAEOVmnUk7qJ55ZiSsTUu9nnrXoEH Qjg2+b/7CrTik53/N5gV8L4AIKQtVfHZH/1oMXPMLT1qp1B4Gp/olQKPapYjTpLm6Pm4OOfk2JyZH /o18W95sLvqiC060mYpO8Q==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=LekKit-T14) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xPAAP-00Gfia-0i; Fri, 06 Nov 2026 04:03:05 +0100 From: Eva Kurchatova To: khorenko@virtuozzo.com Date: Fri, 6 Nov 2026 05:02:10 +0200 Message-ID: <20261106030306.16014-3-eva.kurchatova@virtuozzo.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261106030306.16014-1-eva.kurchatova@virtuozzo.com> References: <20261106030306.16014-1-eva.kurchatova@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 2/8] ms/mptcp: move the retrans loop to a separate helper X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org From: Paolo Abeni This is a cleanup in order to make the next patch simpler. No functional change intended. Tested-by: Gang Yan Tested-by: Geliang Tang Acked-by: Geliang Tang Signed-off-by: Paolo Abeni Signed-off-by: Matthieu Baerts (NGI0) Link: https://patch.msgid.link/20260807-net-next-mptcp-oooq-pruning-v3-1-dbc1eb853cc3@kernel.org Signed-off-by: Jakub Kicinski (cherry picked from commit 789e6a844b51bf6362a7e7f551553ba988f3dc92) Rebase note: this tree increments icsk_retransmits without the WRITE_ONCE() that mainline added later, and the moved code keeps the plain increment. https://virtuozzo.atlassian.net/browse/VSTOR-153491 Feature: fix ms/net Signed-off-by: Eva Kurchatova --- net/mptcp/protocol.c | 72 ++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 9f1cc648a272..8c17857bbbcf 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2578,40 +2578,14 @@ static void mptcp_check_fastclose(struct mptcp_sock *msk) sk_error_report(sk); } -static void __mptcp_retrans(struct sock *sk) +/* Retransmit the specified data fragment on all the selected subflows. */ +static int __mptcp_push_retrans(struct sock *sk, struct mptcp_data_frag *dfrag) { struct mptcp_sendmsg_info info = { .data_lock_held = true, }; struct mptcp_sock *msk = mptcp_sk(sk); struct mptcp_subflow_context *subflow; - struct mptcp_data_frag *dfrag; struct sock *ssk; - int ret, err; - u16 len = 0; - - mptcp_clean_una_wakeup(sk); - - /* first check ssk: need to kick "stale" logic */ - err = mptcp_sched_get_retrans(msk); - dfrag = mptcp_rtx_head(sk); - if (!dfrag) { - if (mptcp_data_fin_enabled(msk)) { - struct inet_connection_sock *icsk = inet_csk(sk); - - icsk->icsk_retransmits++; - mptcp_set_datafin_timeout(sk); - mptcp_send_ack(msk); - - goto reset_timer; - } - - if (!mptcp_send_head(sk)) - goto clear_scheduled; - - goto reset_timer; - } - - if (err) - goto reset_timer; + int ret, len = 0; mptcp_for_each_subflow(msk, subflow) { if (READ_ONCE(subflow->scheduled)) { @@ -2639,7 +2613,7 @@ static void __mptcp_retrans(struct sock *sk) !msk->allow_subflows) { spin_unlock_bh(&msk->fallback_lock); release_sock(ssk); - goto clear_scheduled; + return -1; } while (info.sent < info.limit) { @@ -2662,6 +2636,44 @@ static void __mptcp_retrans(struct sock *sk) release_sock(ssk); } } + return len; +} + +static void __mptcp_retrans(struct sock *sk) +{ + struct mptcp_sock *msk = mptcp_sk(sk); + struct mptcp_subflow_context *subflow; + struct mptcp_data_frag *dfrag; + int err, len; + + mptcp_clean_una_wakeup(sk); + + /* first check ssk: need to kick "stale" logic */ + err = mptcp_sched_get_retrans(msk); + dfrag = mptcp_rtx_head(sk); + if (!dfrag) { + if (mptcp_data_fin_enabled(msk)) { + struct inet_connection_sock *icsk = inet_csk(sk); + + icsk->icsk_retransmits++; + mptcp_set_datafin_timeout(sk); + mptcp_send_ack(msk); + + goto reset_timer; + } + + if (!mptcp_send_head(sk)) + goto clear_scheduled; + + goto reset_timer; + } + + if (err) + goto reset_timer; + + len = __mptcp_push_retrans(sk, dfrag); + if (len < 0) + goto clear_scheduled; msk->bytes_retrans += len; dfrag->already_sent = max(dfrag->already_sent, len); -- 2.56.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel