From nobody Thu Apr 25 08:43:16 2024 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AEE83C2F for ; Thu, 22 Sep 2022 13:56:36 +0000 (UTC) Received: by mail-wr1-f49.google.com with SMTP id n12so15654912wrx.9 for ; Thu, 22 Sep 2022 06:56:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date; bh=m+4EL+V9F08z3c08xBzYaGa4a0MyGPdJ/MhJQ9u3gjs=; b=SgHAsn42lOdDe9drrfZaJUBWupsWV+7vQAtzGZ6CcW8G5+C56BSJfejjlNRRsLHa+l BQSKSTm2bE+r97r1hMpQsCjZ+O8xtK+mDoi+C25toUHsL8+Fl4w9lEjo/LkRwb1hMEYv NWqgCB0dHGDyb4U8sig00bVWe7MnkTaR5MaWCiE+lOEd8rEAJI0iKW30wEqTgJOk6ecq tLyoVMIC0wuRMUvRZxA5fmjifrArdKbARb+2OKp1f9KdIp8f7JJF3WfKrbQHw+sfvpRL eFRwMAr6vGoD7CRjOV/DdDxORdz5RewHD6B+Q391x0T/X2s+1HEWF0mfVcEI0lOZyiU7 vf5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date; bh=m+4EL+V9F08z3c08xBzYaGa4a0MyGPdJ/MhJQ9u3gjs=; b=1BthQFP5MZV6sddwf5GMbY7WKrC3i65QemRCaLisZvv4X97hCKJJTHCsR4y/I8qO3H XbkQhMBBc6HHV2xh+g3MPcku01wGz9b1w6MAAetLoIcLgOJXuXnt854xbZkL/aHRXX5q /xlCHoV3iYHB9aMBxFjCVcoxW0W6VzdbjD0P8gtlD0FGx88rdWjXnYsG5BHP9BsRhxx+ s65ckIbtZOpqbymcnVd8c18Z4KFTwtjkvkrgzQgjki7te9vlo1YMpqSz0s33YnKXgIWe g++oN6CFzRT6D1mhKjCCkj93Uc6J1tr4R6VeOZ96WU0oONgfAB3dLb9KV+focGql3M9f TphA== X-Gm-Message-State: ACrzQf2uF4eLuUTYteqZAWcOEECsm7IruQqVlzN4KgarNrrXQgYMmC2O 6uIlGAv5bRcerzpxTg1Qb6PY8YP3kL4zTuKFZuJ6VAqRc9y17V5bPHncLqw2w/PlQzNcjMwZf25 rzyEjJIRIWEoCRBIJSMcp9A== X-Google-Smtp-Source: AMsMyM4U/4ixscaP2okpxbHzG9xlbcX5cUHhZCmcQtphBA1nJyQfH6NMr+cFlRiMrhsfFrm3hXVAPQ== X-Received: by 2002:a05:6000:243:b0:226:d241:11e6 with SMTP id m3-20020a056000024300b00226d24111e6mr2106715wrz.187.1663854994161; Thu, 22 Sep 2022 06:56:34 -0700 (PDT) Received: from vdi02.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b003a844885f88sm6577053wmq.22.2022.09.22.06.56.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Sep 2022 06:56:33 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v2 1/4] mptcp: add TCP_FASTOPEN_CONNECT socket option Date: Thu, 22 Sep 2022 15:56:24 +0200 Message-Id: <20220922135627.2019807-2-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> References: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Set the option for the first subflow only. For the other subflows TFO can't be used because a mapping would be needed to cover the data in the SYN. Signed-off-by: Benjamin Hesmans --- Notes: v1: - also support getsockopt() for TCP_FASTOPEN_CONNECT - remove comment about msk->first. __mptcp_nmpc_socket() should be good= here net/mptcp/sockopt.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 423d3826ca1e..c7cb68c725b2 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -559,6 +559,7 @@ static bool mptcp_supported_sockopt(int level, int optn= ame) case TCP_NOTSENT_LOWAT: case TCP_TX_DELAY: case TCP_INQ: + case TCP_FASTOPEN_CONNECT: return true; } =20 @@ -567,7 +568,7 @@ static bool mptcp_supported_sockopt(int level, int optn= ame) /* TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS, * TCP_REPAIR_WINDOW are not supported, better avoid this mess */ - /* TCP_FASTOPEN_KEY, TCP_FASTOPEN TCP_FASTOPEN_CONNECT, TCP_FASTOPEN_NO_= COOKIE, + /* TCP_FASTOPEN_KEY, TCP_FASTOPEN, TCP_FASTOPEN_NO_COOKIE, * are not supported fastopen is currently unsupported */ } @@ -768,6 +769,19 @@ static int mptcp_setsockopt_sol_tcp_defer(struct mptcp= _sock *msk, sockptr_t optv return tcp_setsockopt(listener->sk, SOL_TCP, TCP_DEFER_ACCEPT, optval, op= tlen); } =20 +static int mptcp_setsockopt_sol_tcp_fastopen_connect(struct mptcp_sock *ms= k, sockptr_t optval, + unsigned int optlen) +{ + struct socket *sock; + + /* Limit to first subflow */ + sock =3D __mptcp_nmpc_socket(msk); + if (!sock) + return -EINVAL; + + return tcp_setsockopt(sock->sk, SOL_TCP, TCP_FASTOPEN_CONNECT, optval, op= tlen); +} + static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *msk, int optname, sockptr_t optval, unsigned int optlen) { @@ -796,6 +810,8 @@ static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *= msk, int optname, return mptcp_setsockopt_sol_tcp_nodelay(msk, optval, optlen); case TCP_DEFER_ACCEPT: return mptcp_setsockopt_sol_tcp_defer(msk, optval, optlen); + case TCP_FASTOPEN_CONNECT: + return mptcp_setsockopt_sol_tcp_fastopen_connect(msk, optval, optlen); } =20 return -EOPNOTSUPP; @@ -1157,6 +1173,7 @@ static int mptcp_getsockopt_sol_tcp(struct mptcp_sock= *msk, int optname, case TCP_INFO: case TCP_CC_INFO: case TCP_DEFER_ACCEPT: + case TCP_FASTOPEN_CONNECT: return mptcp_getsockopt_first_sf_only(msk, SOL_TCP, optname, optval, optlen); case TCP_INQ: --=20 2.25.1 --=20 Disclaimer: https://www.tessares.net/mail-disclaimer/=20 From nobody Thu Apr 25 08:43:16 2024 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C2023C30 for ; Thu, 22 Sep 2022 13:56:36 +0000 (UTC) Received: by mail-wr1-f50.google.com with SMTP id r7so15727587wrm.2 for ; Thu, 22 Sep 2022 06:56:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date; bh=G3FI+a0WxAwNMcUnh0b427qJ8UdMTqO31XG/ICJRL4s=; b=QUBDchijDtz7Rz8NCfozASvmV56sQAEC2mRB209GDlUkNSupA4EeJsibs+C01zuzca IX4a7ceUEaqLMmNy7p1HmdahHKkV7pHHRk1wtXY+f0gkTRKaR986c/uh5sNQRuBStT9t jNL4SuIjOTGFvQqcwhKOiL404c3H4rlRGSw/Vfdo2Sx2B08sGijJyWT0JC+eHvaowGBj 2lTCvT3+wDGORXIQtmFLfRnQW2aBpev/vDxh0iBv0OUyzZguy/y8si8r+NyvHB3oTQGu 6sUT7AJwOb1PfDl5xtK1a2VUsTZdMChRbrpXTtImTM2AabPhUJjGvIqp+yG6yxiHhmPx 6elQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date; bh=G3FI+a0WxAwNMcUnh0b427qJ8UdMTqO31XG/ICJRL4s=; b=O4XTB4BKYdPWwGX5vjYLoBcFZ6d+4awYV05ZGhMIkURvavmJ7Knrt2a10q9EMFqFr5 +oZZu83hu/HK+SfXNS6G3bvu41JcareHKAwrY0M9rUtcuwrsD/Ebl0PMbmK0sGcp3PtZ LNn7vjwOImJb51ru0WyDD5BDPYMHEYEswEfoddMRnFRlN+ev6PhmbCQ6GT/uvr2PzigI Xyo8lwK0VQAorrvJj09dLNLMuFuIa7uIL2/EidhP9RJrUdZ2Zx5k9jPeWXDWPL6uIWNc wAjQlHjApv4DJjsJwknsgopMng/IZpR1iCrY/hVNhb5UG97mDaBwQL7lMqjt+rALyTtF kCkA== X-Gm-Message-State: ACrzQf35VDP9+Xg+rH1hWpU4UjrBv7z9u39k/hBO8hir+K//fU12XDwl 7fxEImb+26R0yp9NlXErZ/svGlwqRkMNr2NgMzMeauLrVQsw5k7tTXv7CTh2CT1Dlv8KQrbzjPs /m2+y8EwV3xxav88JoSzjVA== X-Google-Smtp-Source: AMsMyM7CU2F3/OZcD61mkb8iR5uCRVm1lvGRo3Wu9WTgI0uouskdYQo5kizSvw38O+2KBnCnnXzaRA== X-Received: by 2002:a5d:6986:0:b0:228:60f9:b013 with SMTP id g6-20020a5d6986000000b0022860f9b013mr2082210wru.102.1663854994895; Thu, 22 Sep 2022 06:56:34 -0700 (PDT) Received: from vdi02.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b003a844885f88sm6577053wmq.22.2022.09.22.06.56.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Sep 2022 06:56:34 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v2 2/4] tcp: export tcp_sendmsg_fastopen Date: Thu, 22 Sep 2022 15:56:25 +0200 Message-Id: <20220922135627.2019807-3-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> References: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" It will be used to support TCP FastOpen with MPTCP in the following commit. Signed-off-by: Benjamin Hesmans --- include/net/tcp.h | 2 ++ net/ipv4/tcp.c | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/net/tcp.h b/include/net/tcp.h index 27e8d378c70a..4f71cc15ff8e 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -327,6 +327,8 @@ void tcp_remove_empty_skb(struct sock *sk); int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw); int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size); int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size); +int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied, + size_t size, struct ubuf_info *uarg); int tcp_sendpage(struct sock *sk, struct page *page, int offset, size_t si= ze, int flags); int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset, diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 5702ca9b952d..5237a3f08c94 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1162,9 +1162,8 @@ void tcp_free_fastopen_req(struct tcp_sock *tp) } } =20 -static int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, - int *copied, size_t size, - struct ubuf_info *uarg) +int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied, + size_t size, struct ubuf_info *uarg) { struct tcp_sock *tp =3D tcp_sk(sk); struct inet_sock *inet =3D inet_sk(sk); --=20 2.25.1 --=20 Disclaimer: https://www.tessares.net/mail-disclaimer/=20 From nobody Thu Apr 25 08:43:16 2024 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A41863C32 for ; Thu, 22 Sep 2022 13:56:37 +0000 (UTC) Received: by mail-wr1-f47.google.com with SMTP id cc5so15700265wrb.6 for ; Thu, 22 Sep 2022 06:56:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date; bh=f3B+f8Lfmy+gOo9uZDCGPmY0byFX4mkSkoKXcctGEoQ=; b=pf71WgE6isL0CIrkCrI/3o45lRyxoHelWAZjg8Q4YhapLr2KsQ+dW+9QgfZhwEa9J/ xBagz1pgvsiyLnJ7eR6MrpfbPg/QJX1rrWRtNqrIAfnFWAnMSbrww+6yK/LfFJN6QEGN C+pWigWDQmUh0w/WfLyeLJy1eBr4uGNTWKxDKMIrSiQtYzu/0mD8DECHDtl73c4OTEBr E19IK2gr4dhE8VJHgHTV9V5s0gD+nSAHiTOqb1x6MjrSsBazqpLlObplWBTjPoibTGXa jmZ6dO7XK0NEsZc0b8pJ5a3pBkyeg1ffbCxmSaFmIrNsq0hMbi4XI/i4Uz2ITsN4y4C1 XLLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date; bh=f3B+f8Lfmy+gOo9uZDCGPmY0byFX4mkSkoKXcctGEoQ=; b=T4HnZtSgV1A9LOGMgHjo7uAcf08FmCjVGgY1c2e0JxnsjESYN971I4zi0nl/bz/Vj6 AcHSv3EUKE6w/FZVnCCWaKn632U9vbIDzcL7vMjrWB/h33xJ2BJYaVw49MAhSsphjbVr hILyqSczKQTj28nPhgSm9/amkBkKjBVoXMOgb2Nei0rz2NyppiE1AdApLADXR0/V5AOo wsGELzQsWC2Ig2J33LYn/zgMUAYW3klN6IqjInnbLM2dQpg4oCIDfWF3UZzgSUeaTpP6 3iZYals9Ybuetyene9+r1BG4K65bhJcoljtccEI42UO/IaXSUFB1auq7aHQc4j7UI4ln pCCw== X-Gm-Message-State: ACrzQf24rUvwWKGPCCCFg0cRTAgIApISpX4QCitlCTrwBdGN1QuuLtQV +pUUdV/CoGY+4MtJ7R6MyVdR/+SABELf2MtDHQ6KmpmiXki7XSqW4BYnViytE8TQNI/5F2mpX3j UtcjH8xXP7Jgu06keliM8cQ== X-Google-Smtp-Source: AMsMyM55G/j1lW18emOqK+yutfpq04JnwPCwmJ1HbgTfABToUxIe7padUputjC0YxKizszLFJo4AQQ== X-Received: by 2002:a5d:424a:0:b0:228:811f:c1a2 with SMTP id s10-20020a5d424a000000b00228811fc1a2mr2089250wrr.262.1663854995733; Thu, 22 Sep 2022 06:56:35 -0700 (PDT) Received: from vdi02.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b003a844885f88sm6577053wmq.22.2022.09.22.06.56.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Sep 2022 06:56:35 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v2 3/4] mptcp: handle defer connect in mptcp_sendmsg Date: Thu, 22 Sep 2022 15:56:26 +0200 Message-Id: <20220922135627.2019807-4-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> References: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When TCP_FASTOPEN_CONNECT has been set on the socket before a connect, the defer flag is set and must be handled when sendmsg is called. This is similar to what is done in tcp_sendmsg_locked(). Signed-off-by: Benjamin Hesmans --- Notes: v1: - error case use latest patch from Paolo (propagate fastclose error) - I believe the use __mptcp_nmpc_socket(msk); is correct here (instead = of msk->first but would be nice is someone can confirm - add unlikely for the TFO check - propagate the ssk state to the msk (Paolo) =20 v2: - Question from v1's notes answered by Paolo. net/mptcp/protocol.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7d4e197ec567..f5f20910cd83 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1668,6 +1668,7 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct page_frag *pfrag; + struct socket *ssock; size_t copied =3D 0; int ret =3D 0; long timeo; @@ -1681,6 +1682,27 @@ static int mptcp_sendmsg(struct sock *sk, struct msg= hdr *msg, size_t len) =20 lock_sock(sk); =20 + ssock =3D __mptcp_nmpc_socket(msk); + if (unlikely(ssock && inet_sk(ssock->sk)->defer_connect)) { + struct sock *ssk =3D ssock->sk; + int copied_syn =3D 0; + + lock_sock(ssk); + + ret =3D tcp_sendmsg_fastopen(ssk, msg, &copied_syn, len, NULL); + copied +=3D copied_syn; + if (ret =3D=3D -EINPROGRESS && copied_syn > 0) { + /* reflect the new state on the MPTCP socket */ + inet_sk_state_store(sk, inet_sk_state_load(ssk)); + release_sock(ssk); + goto out; + } else if (ret) { + release_sock(ssk); + goto do_error; + } + release_sock(ssk); + } + timeo =3D sock_sndtimeo(sk, msg->msg_flags & MSG_DONTWAIT); =20 if ((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) { --=20 2.25.1 --=20 Disclaimer: https://www.tessares.net/mail-disclaimer/=20 From nobody Thu Apr 25 08:43:16 2024 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91C703C26 for ; Thu, 22 Sep 2022 13:56:38 +0000 (UTC) Received: by mail-wr1-f48.google.com with SMTP id z6so15752464wrq.1 for ; Thu, 22 Sep 2022 06:56:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares.net; s=google; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date; bh=4mTVb33SQX6GPn0CWDxmkK/0imHagQT+Jol7Om6Wbnw=; b=H8GFC6bbtBF2qw0PLr0r0F5yFb4OnJ4a9Q386Hdb+FdFkhZinpA9nrX5T9PGxcWAct M+Vby6A1G+MC/0LGkx8/n1P92wuDvfonDwYoiA+UgELWzsgUa9FFE6kNfcpRSQfvW4rF ejqlLeGbZgG0q4MOMdwfovIvecUO+XOTKkS6j+8HS4jTu5w+akyZ0r5h8ieRenJn3x5Q 7XPmYN1Fl+Thhexk+tUhR1waD4wV5m4YncHhL1XtNuRTKMZDsqk1ILtydDV0oRV/YqwP Ki6gvntbK2goaFaTS2GQbf4Du4aSXNh+mQPKfQ/ryftcoAnzjOB2B+L7oddnX0h5wdZ2 lWFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date; bh=4mTVb33SQX6GPn0CWDxmkK/0imHagQT+Jol7Om6Wbnw=; b=ETIxr2P0u/LnAzP/K29ZO59rC7ehvikq+kkf2XZrJTGzGQcM7oTxuHHqYKrylRdOQX CxxtrQqPqUE9/OOpMKy+ty9FlNPT1JNQxWifkLHKPxV1h/UD29JVuungfoE+kZCpW9IB 49qlOQ4B72Q7MSBpDk38kDpbs8pkdukmScLdD3ggtprkbHNumfCF6y9ZqFXTCLhqy8SM j0D+pFVbD/vlCjciSK1jbPDdft7MOefouwwCv5rMzkxeRTdLzou0WQuwWJA1jmLvARgb +ruE6Kk8ke6cTB3RYO2Z7/a7zmYdXN69nnJZDiXbasIbos+mEkZcsgTJA/UXRydyzXwe yvdQ== X-Gm-Message-State: ACrzQf3rR1yO4mvxCYrBlb4DxVQVIH5AGpbl+H3y42mVRyZwAEwdsxVr AE9S9ARA2BgmoWRzXs34rBnqsbU+g0C3sq03Mz/HHIe6nnFTf3LaHAmvNeyLwdG25yaemu/Fdob h7mO71KUPDXwL7OCJCxwDWQ== X-Google-Smtp-Source: AMsMyM6bYjdUCVnTTYsh+bSw2w/6pJUtC/2Qd6MGQ8fd7cTNrWZvucCPiM9TS1usfrtXxiToxxle+A== X-Received: by 2002:a05:6000:178c:b0:22b:7f5:c724 with SMTP id e12-20020a056000178c00b0022b07f5c724mr2112360wrg.384.1663854996553; Thu, 22 Sep 2022 06:56:36 -0700 (PDT) Received: from vdi02.nix.tessares.net (static.219.156.76.144.clients.your-server.de. [144.76.156.219]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b003a844885f88sm6577053wmq.22.2022.09.22.06.56.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Sep 2022 06:56:36 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v2 4/4] mptcp: poll allow write call before actual connect Date: Thu, 22 Sep 2022 15:56:27 +0200 Message-Id: <20220922135627.2019807-5-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> References: <20220922135627.2019807-1-benjamin.hesmans@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If fastopen is used, poll must allow a first write that will trigger the SYN+data Similar to what is done in tcp_poll(). Signed-off-by: Benjamin Hesmans --- Notes: v2: - Using __mptcp_nmpc_socket() without lock on msk socket was unsafe. I= nstead copy the defer_connect from mptcp_stream_connect() and check this fla= gs instead. (Paolo's review) net/mptcp/protocol.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index f5f20910cd83..0eeb8115c9d0 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3616,6 +3616,7 @@ static int mptcp_stream_connect(struct socket *sock, = struct sockaddr *uaddr, =20 do_connect: err =3D ssock->ops->connect(ssock, uaddr, addr_len, flags); + inet_sk(sock->sk)->defer_connect =3D inet_sk(ssock->sk)->defer_connect; sock->state =3D ssock->state; =20 /* on successful connect, the msk state will be moved to established by @@ -3754,6 +3755,9 @@ static __poll_t mptcp_poll(struct file *file, struct = socket *sock, if (state !=3D TCP_SYN_SENT && state !=3D TCP_SYN_RECV) { mask |=3D mptcp_check_readable(msk); mask |=3D mptcp_check_writeable(msk); + } else if (state =3D=3D TCP_SYN_SENT && inet_sk(sk)->defer_connect) { + /* cf tcp_poll() note about TFO */ + mask |=3D EPOLLOUT | EPOLLWRNORM; } if (sk->sk_shutdown =3D=3D SHUTDOWN_MASK || state =3D=3D TCP_CLOSE) mask |=3D EPOLLHUP; --=20 2.25.1 --=20 Disclaimer: https://www.tessares.net/mail-disclaimer/=20