From nobody Thu Apr 25 07:20:19 2024 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 34A5C4C6C for ; Wed, 21 Sep 2022 15:26:20 +0000 (UTC) Received: by mail-wr1-f54.google.com with SMTP id n10so10409831wrw.12 for ; Wed, 21 Sep 2022 08:26:20 -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=fOTQ2OP2kuQ01lpDSEmO84syJ2PKMyOPaRZOUAAdprEgmrvNUSszZrp6+3haquzHGM 1V/2niZwPpgrx/7gSJlNAjxEWb0XeZ0UjRdn0KFwkYQmJItUD/ZG4TtwIG656ov9LEoC vos9zokNGQUn+g0oim+i+cWVrsF5lYycoPW7+uQ+Q+M8hufhZ01m8F/nYjUuiplQq2hW TrK6M7aDMyPfoVnZHEK0m+Mf1yHvWbV8+IHaU4+c5b5qfVhvcpkMrKe70FfHDbLlpTZ3 KO7F+MXaTR5yoWSTSgjjZ4aONRp8gemZnOzi9avYmhO35RyDOupBF4WEO9un9lvtwTrW wEYw== 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=w0l1hyOr+BXt+yIECSRIcA6tBAszwtyUzWtY2nk+yGBux62j+uzep3aiaehejtw7S3 KOq+wKyJ7wz11LhBZFFwcnvKuf57BA7BSoHZg3ljVLx2PgD8050Jw5YdTCCwU8QpKgfS zT4Wst0dgx6pxW+DlUTt4x3ZFUPI1ZAkc7Tm4G/mL5ILS3wElZydleV2Mx90Z9rEts7F lvABfNG3OJjyKxFzOmR/Uu5K9yQOJoZj4R/K2CwXdfijsdg//AmRVN8O25hZ6DFuLJ7B B6i8UDCYliYj2nTJUBcNYrkt6eGau4UTpIyMR7iae+uRMZtP9IdB89wtiimi8ina03ew Jd8A== X-Gm-Message-State: ACrzQf0XO2AwxFpUtsnewlisffDpVEVtM46bzgTwgTV1lxGzZWJ0g8w4 Y5uvyUhCFBAcSFR3mfEAreKOlqde61nom+Scu3W/nFFxwcFmgJWlYPQaKlGltR5+V4blk72BMxg 0nlahvEU004d6TR2iwfM= X-Google-Smtp-Source: AMsMyM5s6k5ZFm6VZg4GBI3x79g0o2Zxdv2FucgogqsPcm8PR7FetW1kwkRX2jUHCqVWAAUS7whpRA== X-Received: by 2002:a5d:64c4:0:b0:228:e143:ddb8 with SMTP id f4-20020a5d64c4000000b00228e143ddb8mr17177223wri.148.1663773978915; Wed, 21 Sep 2022 08:26:18 -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 p4-20020a05600c358400b003b4935f04a4sm3994435wmq.5.2022.09.21.08.26.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Sep 2022 08:26:18 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v1 1/5] mptcp: add TCP_FASTOPEN_CONNECT socket option Date: Wed, 21 Sep 2022 17:25:35 +0200 Message-Id: <20220921152539.1851441-2-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921152539.1851441-1-benjamin.hesmans@tessares.net> References: <20220921152539.1851441-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 07:20:19 2024 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 EFEFF4C6D for ; Wed, 21 Sep 2022 15:26:21 +0000 (UTC) Received: by mail-wr1-f51.google.com with SMTP id n10so10409883wrw.12 for ; Wed, 21 Sep 2022 08:26:21 -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=had5XNA/x00YhZHcvEL77ogIUXrns8lC4EN07371GJV2iRcNh8EW/jGN3ziArtDhWH au7LRaxkk+V/u7yRXpnSoFxFkaW1Rt3kAeDvQ23lOoV/9mliNjsWFqzUPU3kMJgPcHyY inTkynPx1dmb0sKAvRXsqnDN30b1/BctAo8PioL2ESbwK7ABnxfkbu5mVesz4DwLdFGb kUCQjwZZ9hXEkQ59e8hd6PZ8niIRqGZtbiPlD2xJtkRQodGC2Zdty/otvwSkxSIVbPXg s3fGhE2phYHPXOPZlskWK9ZyDXUVu/VINBg4rA8jSd7u4wBIbax+0Dn3mXAIR0ZOLwug pQiw== 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=hI9gUOIY8383clZwXCUzgn7XAZCRyUE/kR/OrFeM8mxgo3QRXlQgIaon1w6KC5MNYl h1iDs4gZQDalqh4N+lL4wjOzCd+kCUdpD0xxXy6oI1ynaR3ov3VA2wp0TtGa1WLo+Sth /kP2kEk87U+ph2fbp3gBW+xeY7poRkUQrRCAm9+WQAELrNrEw8ffD3JcNDjAc0lctRAD 54LLZBe0MECyf9ANAbkathCChQ3Z3ZuPrwhxIzeTDBLMGwE4b1OGnW9/zaDGxEvk/sBl y7Cns7OZ9RAAPlCt2S62O3Tnn0fxpt6X4oAB6oMkCIzhHd6BNPyXA8JMXCjBJ0+BFhfm v0Pw== X-Gm-Message-State: ACrzQf09eEq8ikkPIgLiKsA7aW/SC1UtjjFM7pRWwMCBOfkBHAOu3zEQ B4vAw1PanJTSfCospVbS8Gw+YLPsp2KrhVjgp2+KPjh45FuFh/qdJ9h81r5kNIhapnZCadf9EnO n4VyLJJmK4vegwzzmNvM= X-Google-Smtp-Source: AMsMyM4W0qdNxTObOvgUWxUtICd3MLAorUy8SyViSjru4ojcVy0Lx0hEFEma2DsiNHT+eZ5ly0w+IQ== X-Received: by 2002:adf:db44:0:b0:22a:56eb:927f with SMTP id f4-20020adfdb44000000b0022a56eb927fmr17932488wrj.627.1663773979756; Wed, 21 Sep 2022 08:26:19 -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 p4-20020a05600c358400b003b4935f04a4sm3994435wmq.5.2022.09.21.08.26.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Sep 2022 08:26:19 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v1 2/5] tcp: export tcp_sendmsg_fastopen Date: Wed, 21 Sep 2022 17:25:36 +0200 Message-Id: <20220921152539.1851441-3-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921152539.1851441-1-benjamin.hesmans@tessares.net> References: <20220921152539.1851441-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 07:20:19 2024 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 89F854C72 for ; Wed, 21 Sep 2022 15:26:22 +0000 (UTC) Received: by mail-wr1-f42.google.com with SMTP id g3so10409630wrq.13 for ; Wed, 21 Sep 2022 08:26:22 -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=Cl0QWFGxCWG418mR28KAVV/a+LLCD7/GfroCYwhEdDU=; b=aqVTOtwf8Tx5IuTC7Wbud2V0GR6/YQGfamUvzwRCM1Vbq1OH1zHZhY+7nzPdXDrEUd GzaKfdQAkSGUf3ge9oV9nymIPFx9+pIYwlNH2c9sg9nHjQ2IGdFqWw9jJkCE/QwT1X02 mNXFts99WT26wy/xjs6oTJUUKGpe4gyAo8RRgUaqRyHnojcGRQZ21nX/xHATJ7AxzXgL IB82wpNi0ngwwc8fAUKeuah3dCAZRyeIO3NL/q+CVQD7xwa3medWw9qMTEzq0k1o79PF V/4GuFBYTT7POcA1eKYCNk7Z1jhAbn4jw0J/4aTmLs3zEqLYnqpPSnMH/IljK68dk2C7 lv/w== 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=Cl0QWFGxCWG418mR28KAVV/a+LLCD7/GfroCYwhEdDU=; b=15jBgLFi8vW70HLBoY5v2rhl5InYeMsoAkfR9yS3npYR5qS7FB1OXJ6w9ZufUWqtF4 bvr9fbCQdT7NMJDcsP/V4gKj7iOyKWL4QBE5wAn1BCB/jYt1z2+M6cehAxXLZL1bcikW q9C87AU2YlKGyzf0XBNdk8xnSD8xlSdQDhbHs0NnuWXQT+mSflBc+oidsnn3ev1TX7tC SUArMyyY4fXQ3zAwGE+3UolhoEZ9swgk75k0uJIBNGFnBzwHZ2U9bWZMDTXoAAYT0TXi YjJfCG9HHAowU48W4SJT97aQKnmY9LzeCAQ+/iWfL5mPfP4Fb1HKgvCe/lsmice9uPPW IXMg== X-Gm-Message-State: ACrzQf1pfTjatvkOABHZ38Ur54a9YB6sSx9VxDtx8hqU9mgQW30biq1v 0nieV2L/KShQyFlH8PPbXyubXP8rhjdY0ffImqeGzCuLqzoR9iV12zfZLXrOaLyqx4WGxteh3nN YebwhftNZB30Pqn6AiIM= X-Google-Smtp-Source: AMsMyM7pG2NIncBQ6Gb4KvNcCplVDzjFHVHuosCZWHeTos9H6HHS9Jf0i1mIt4kKMXqDaALNv7QXKQ== X-Received: by 2002:a05:6000:815:b0:22a:418e:f354 with SMTP id bt21-20020a056000081500b0022a418ef354mr17765274wrb.97.1663773980510; Wed, 21 Sep 2022 08:26:20 -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 p4-20020a05600c358400b003b4935f04a4sm3994435wmq.5.2022.09.21.08.26.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Sep 2022 08:26:20 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v1 3/5] mptcp: handle defer connect in mptcp_sendmsg Date: Wed, 21 Sep 2022 17:25:37 +0200 Message-Id: <20220921152539.1851441-4-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921152539.1851441-1-benjamin.hesmans@tessares.net> References: <20220921152539.1851441-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) 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 07:20:19 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 28EA94C63 for ; Wed, 21 Sep 2022 15:26:23 +0000 (UTC) Received: by mail-wr1-f49.google.com with SMTP id r7so10504999wrm.2 for ; Wed, 21 Sep 2022 08:26:22 -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=eltcDqSR2JIjJjVY7p5nTjxc6ETlVySwp0BIGdSe/dg=; b=0m5rEFZZgvYdpOKCX8JfQpgX0KLWhSv8PzyMENIJ0jkq0ChciDuH73BxjHA5d45fE5 A8oX04Pet/qwLZPsHwmhbShd6FQnJxwPwSxpGhyqVh1fg5+TZIlbfAbjObNUM98df067 I4OkB2OABz0WGczNOb2B9t3BSaLuKnKkglzud8aKXL0MaWf807Gao/LKgGRUyzAzdXME 1xlAwbQ1wkrLyV/WPbmsVdexCsaHJJ0WMIA4ung4zaDQ8JqwiZ3S3lwFanNH9TvhrrQz 7jrfZr/VC0Cxcg5b7QDMHyg4KJcsNSVWYqigftBuwSAGl1nywCdkqHThL1M/2Q6PieLQ Wx6Q== 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=eltcDqSR2JIjJjVY7p5nTjxc6ETlVySwp0BIGdSe/dg=; b=Dr4Ik823+t5v+UDuiheS9J8ZkW+99vKwQwOoz40c2GHbssdvNXEcqVYBGOSui4e9lv aiqaPp8Kwk+Q6/HivsWMAVMh6UfRpHBO84w3RF7FKpR4BIDtgp1HT+YFpAz64GxC9kI4 3AaOMzIr4JYrShTCbDzCTMr1BtS2N4JJAiMB0fkNeZiIAeRBHYQQytBidzayrfiL6ISs uzwXRSLabPXAIYGHMXliFWPEp5sG1B1TkJS+MCSiDAfPbVF0fphTIA+f4lGfDlfdSM60 Ovl+X745l2Qa3aDZ+vtzWemfIZzopqBe3KF6gbPjTgqnsVL5Tiy6y4xhSpMd8aujG2tD aahw== X-Gm-Message-State: ACrzQf3n7J0ws8Wan+RISVrYc8GnDiDtS6gGSQyraE8MJ5IFaT76Y07v b3Xsqzk1zlR2RElTePomF/253w1PAK1FZIRfw0EfArd+UM4cPoOqCYNlea6zjQJjSDUbMTlRWP6 4H2zhospkCEWriJ9WP4Y= X-Google-Smtp-Source: AMsMyM6anTIy5FNlXpFKGP4xJcwmD1JbFK5IKFDa3wZpE64AUpUtrCXpYs5kzTM7xDY/k3i7ehJuvA== X-Received: by 2002:a05:6000:1c18:b0:22b:13e3:19d3 with SMTP id ba24-20020a0560001c1800b0022b13e319d3mr5859513wrb.699.1663773981292; Wed, 21 Sep 2022 08:26:21 -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 p4-20020a05600c358400b003b4935f04a4sm3994435wmq.5.2022.09.21.08.26.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Sep 2022 08:26:21 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Dmytro Shytyi , Benjamin Hesmans Subject: [PATCH mptcp-next v1 4/5] mptcp: add MSG_FASTOPEN support Date: Wed, 21 Sep 2022 17:25:38 +0200 Message-Id: <20220921152539.1851441-5-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921152539.1851441-1-benjamin.hesmans@tessares.net> References: <20220921152539.1851441-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" From: Dmytro Shytyi Support for TFO when it's used via sendmsg() or sendto(). Signed-off-by: Dmytro Shytyi Signed-off-by: Benjamin Hesmans --- Notes: Imported code from Dmytro's series net/mptcp/protocol.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index f5f20910cd83..aa6e13949b23 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1673,17 +1673,14 @@ static int mptcp_sendmsg(struct sock *sk, struct ms= ghdr *msg, size_t len) int ret =3D 0; long timeo; =20 - /* we don't support FASTOPEN yet */ - if (msg->msg_flags & MSG_FASTOPEN) - return -EOPNOTSUPP; - /* silently ignore everything else */ msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL; =20 lock_sock(sk); =20 ssock =3D __mptcp_nmpc_socket(msk); - if (unlikely(ssock && inet_sk(ssock->sk)->defer_connect)) { + if (unlikely(ssock && (msg->msg_flags & MSG_FASTOPEN || + inet_sk(ssock->sk)->defer_connect))) { struct sock *ssk =3D ssock->sk; int copied_syn =3D 0; =20 --=20 2.25.1 --=20 Disclaimer: https://www.tessares.net/mail-disclaimer/=20 From nobody Thu Apr 25 07:20:19 2024 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 D64CF4C6C for ; Wed, 21 Sep 2022 15:26:23 +0000 (UTC) Received: by mail-wr1-f51.google.com with SMTP id x18so4454102wrm.7 for ; Wed, 21 Sep 2022 08:26:23 -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=td7eeUdAoD+sboAvcQa/UeCUj1r6FvEiNL/P94CpwKo=; b=dnjXBBoxQEcsJ35HWg58CVDXUysNQIoIeqoEQRZSU6ymQaUfAG/dud/14b2VvYinYp RV2toIzYYdiOayx/qevsT5nMFwaceZvqeX4LUoFTyMyyDKxyJehBlKJTTKhQ7X604zmT CctSY99KwGDghaecVqKKoxdBg+0PUlultYFJUsJu6oF9PrwojZJKlSH6R8jFP9X94UoG RJpZbgYwAeP1H/mYgQreK/dse0uF3i8FQONvKN47FC5+togsebnF+r/Vx5HqGTPqiQRO 1jLOTpoLRUQZo3hbzYstdTwUpH/L/qHEb8fk/jlry03GKUK3wvnEEADgAV53uQ7tHlho ZgpA== 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=td7eeUdAoD+sboAvcQa/UeCUj1r6FvEiNL/P94CpwKo=; b=AdK8Gpr0Cm9DoVHPEF6LuJ9UJQ1bvOHDNAxWqTVG7brgpOC3XUYuB8VTwCO8fOXKls N//9PQPx/eCO6FwtlbJy7ngRVZIpARpp18qlD1/H/FHuHYsd/BuOZ7WM0lnr9RP4WVQw cqiSxTfuiMC8E0HOj5A4eJ+jUz/JjqAIoyT/cxf4yjBTw3sfiaWQIzBnNKlSTWWozwW/ 4cE4JfKg50zcEUROAsyT6oBLFmLJ9DJ/BmVUS82njPSp5fumbuqYyE/zS+BJuxc6gttx aR8NWjQNScJ4GzfaG5CtXyJR2MhaP0ghHWX/fs5pOobKGnpOcIvD+IIOdYGzqJu3ZbCi xUbw== X-Gm-Message-State: ACrzQf0GWgWUlPGL5nJ16xn9orWPDk/ii+Ok0jKXMRRXdrfvHVN5ITuZ 0GB47HN1hC0Nc0w6vYjsvBZjoWavuJ1rfLGlJwSJXYHEA9AQ6TO58bGYAc+JLb+lX/gSQ/Eoiom DR61PZnaU3kIju/V1/BU= X-Google-Smtp-Source: AMsMyM4/yVckasR7Uh9OnPBnX/rQQ7cCbJ1vvUYuobUmVRYoqFsB/QeZODUA9Hxyuy5jyloWpMNKzg== X-Received: by 2002:a05:6000:cf:b0:228:e37b:361b with SMTP id q15-20020a05600000cf00b00228e37b361bmr17677997wrx.374.1663773981984; Wed, 21 Sep 2022 08:26:21 -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 p4-20020a05600c358400b003b4935f04a4sm3994435wmq.5.2022.09.21.08.26.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Sep 2022 08:26:21 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v1 5/5] mptcp: poll allow write call before actual connect Date: Wed, 21 Sep 2022 17:25:39 +0200 Message-Id: <20220921152539.1851441-6-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921152539.1851441-1-benjamin.hesmans@tessares.net> References: <20220921152539.1851441-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 --- net/mptcp/protocol.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index aa6e13949b23..308a09b3c0b6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3733,10 +3733,12 @@ static __poll_t mptcp_poll(struct file *file, struc= t socket *sock, { struct sock *sk =3D sock->sk; struct mptcp_sock *msk; + struct socket *ssock; __poll_t mask =3D 0; int state; =20 msk =3D mptcp_sk(sk); + ssock =3D __mptcp_nmpc_socket(msk); sock_poll_wait(file, sock, wait); =20 state =3D inet_sk_state_load(sk); @@ -3751,6 +3753,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 (ssock && state =3D=3D TCP_SYN_SENT && inet_sk(ssock->sk)->defe= r_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