From nobody Mon Apr 29 03:24:33 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 ED8843C35 for ; Fri, 23 Sep 2022 12:19:40 +0000 (UTC) Received: by mail-wr1-f47.google.com with SMTP id t7so20114612wrm.10 for ; Fri, 23 Sep 2022 05:19:40 -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=WOPJtPXMb9Ive+iThxjyZ/53oRwhcvi17WtUOkoD1cXTr89SGzBCyolkPO10UYHvG5 59gsC7SDMU+sNeiTxm7Pld3m2QISIvDsPEgz8uZRvtt9gLmkuzZI4S2N6CLHx7tIfzXv sTE2Wljl0HAb80u91tLjWgACKn59LHgPuun+zhzrHWes1UAi3Wtar+5Cszj7t6fxijjI 6vuIinH7nPRmBKuF9kRRHLZTKp0I5sgSA4mK9t+AJ6gd1+Y9Dgc0mQcgWhhRcnsNpLjF OlHdUgL87AsBHrNxLRon2k2YeBqpJXpy5EdkS5WZAWO8rqGXH8jXS70lVd+oZuB8+ZOq WVFQ== 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=aK4Ep+XZSdzoyciPOqlIaesy2DD+UI3f7gBcyf6ZROTDhWpyGJoMSqVQIA6CAOBrW1 n4hvYNmDwxlpMaP4oJV3d++FGZlIgcYUI0ZQUEzuUzvDepftZC6j2s+RDBb8q0ya+x17 Pm7F8VKxWKfiDT3fYP9XjbeZwGjDB/wH0piLXTNQJiB2nOh3/xV/YkPPTALIgkTdo1dr 19DjVN2hk3DsNb1mSSOivoc1Q1CFMzjsorPEzT9/uSZ6pDld2vs3+DdiB7b1cxOIUgMD Tp6mBArDvAZ2SCyUySFwx5WGpAFknFbkpHrdm+RxLxrSGK8CrjyNxC7IFfQ5jfQrkZK3 kkAA== X-Gm-Message-State: ACrzQf3AcfaM2oU/DG1YH1NSxZbhjyPPB8cdySGj68sA+Ea47hXdL8FM kIBM913lcwBxu7MDRaz/obXiVW6dq8uVMAzWfcwHDBfeQzd8Qs2kYZdNNj9tS4cbdLOwVsUuVFF pYQY8mpAd8rcW8Cb/7GM= X-Google-Smtp-Source: AMsMyM72x2KNpeuQSc9fcBVn5eBCIMpONy4GRP2u7gMVuSNmBznP80TYYG86AThGuwscsbiXPfZNFg== X-Received: by 2002:a5d:6c6b:0:b0:225:dde:ab40 with SMTP id r11-20020a5d6c6b000000b002250ddeab40mr5118864wrz.690.1663935578764; Fri, 23 Sep 2022 05:19:38 -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 bj1-20020a0560001e0100b0022b0214cfa6sm8939309wrb.45.2022.09.23.05.19.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:19:38 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v3 1/4] mptcp: add TCP_FASTOPEN_CONNECT socket option Date: Fri, 23 Sep 2022 14:19:10 +0200 Message-Id: <20220923121913.2135229-2-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923121913.2135229-1-benjamin.hesmans@tessares.net> References: <20220923121913.2135229-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 Acked-by: Paolo Abeni Reviewed-by: Matthieu Baerts --- 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 Mon Apr 29 03:24:33 2024 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 C3B813C36 for ; Fri, 23 Sep 2022 12:19:41 +0000 (UTC) Received: by mail-wr1-f43.google.com with SMTP id t7so20114674wrm.10 for ; Fri, 23 Sep 2022 05:19:41 -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=VWV4BzegnDOYqkcuzawhqLZQCNJYnsc6brVAmAUMKcs=; b=Gej20UWRieMQzeXkAc6S8PMedHJzjet/4jYhX5LAqThn9AcRmaX24yGpQKDeIzVXzY DAyHeasXuSr3YRikULhL1iOD8PUHyh1hicpHBSU67zhhLU4HiD3EDc/+O7aj9fzX9nYk Jhtp/rxS+n3qlxBCpvDFthdpyeB8s85lQWAUEBLycEn4e4TcDIgeLOcG37mcux/62BPa elx9JrzwHtwH8kBZc6ho3bYHZbZBohOxBIMLUV2DBGoTt+NJ9V2yBtEQII71xD7oyJic 9psL9XIJi+3MPXf18aod1RgJkczWQR4071LS/lz44aLxga/kG4Pbdyr/CdDkr8S1CiQy kTQQ== 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=VWV4BzegnDOYqkcuzawhqLZQCNJYnsc6brVAmAUMKcs=; b=VZQGJsGe7ynJAch6TJ+qlmt3jDptztAGqHAYEJrgOpLOzbM3oGHXSuFl3yvnl/XQEu 48GGTriV2GoapLtTu3MS0EEtBv3rFXuliSg1rOnva2gzn5FNaA8hKzjmr7oMDgw7QibB /7qgPDFBHC8drxrz9+EtGIvRie8RGkpi/AbN0ucr+2nl+uhXkx7jzktqWrcst5NjuwJw BjcMAfJs290pB6+9ANpct/YImfuMQKorgCEeM9h9B31rPhAg/tPYrgvtAhDnqRX5pLKA kf7qTUcbQshG7E2ysuH+TJRllIqexe+QvMmQC5cU5aLdxZWDgYNPXKHQdK05wsAdRtxI HM0A== X-Gm-Message-State: ACrzQf096uxqN4zBBwnBbnY2AUciecq3EEamHYYXMHYNTEaAeJK5BBRo LxXuwtdMUdgGkJ/oYLrhpXfIOW2Bq0DTVkTJHzuyKgL+ToU+JTAqU/Ty+RszwR6m5QENJQWTw1y EYwGsbuo8wAYmKRmnRJ4= X-Google-Smtp-Source: AMsMyM6kqnKQ4I+Pzzj3Gcoi7fjvMWV/N4PH43KKra+6RGF/KsQC4FQFItct+6PHNFzN+NbeRMBHPQ== X-Received: by 2002:a5d:4dcd:0:b0:228:d1e4:9cf1 with SMTP id f13-20020a5d4dcd000000b00228d1e49cf1mr4775164wru.182.1663935579512; Fri, 23 Sep 2022 05:19:39 -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 bj1-20020a0560001e0100b0022b0214cfa6sm8939309wrb.45.2022.09.23.05.19.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:19:39 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans , Dmytro Shytyi Subject: [PATCH mptcp-next v3 2/4] tcp: export tcp_sendmsg_fastopen Date: Fri, 23 Sep 2022 14:19:11 +0200 Message-Id: <20220923121913.2135229-3-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923121913.2135229-1-benjamin.hesmans@tessares.net> References: <20220923121913.2135229-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. Co-developed-by: Dmytro Shytyi Signed-of-by: Dmytro Shytyi Signed-off-by: Benjamin Hesmans Acked-by: Paolo Abeni Reviewed-by: Matthieu Baerts --- 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 Mon Apr 29 03:24:33 2024 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 AF7433C3C for ; Fri, 23 Sep 2022 12:19:42 +0000 (UTC) Received: by mail-wr1-f46.google.com with SMTP id t14so20142389wrx.8 for ; Fri, 23 Sep 2022 05:19:42 -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=sEdKo/amd96dudg5/yt7fXWidiXwoZIvb354Ws11Dh4=; b=Tb8ntJxJKh4CyWug4kiRGXaLHe8wxZkdZoKoXvtf5JxYGzi2SAYUbVrrx5bvdGkYS1 SaUWrbJsBEOCon7tDh6TgWZPA8IFE5YjnHC2XU7yyXHrKVJndAE0MTZ9xC4SWHy5XiNW EpRci4tSsh4/8yE9HDp2NzTE5GX6QUjDMuDSBEpHZWnJVEvgtlC1KUoTgugfjHxbBaXO IdMrSDfgTp0bkypher/slboicTdGnob3r0MTiI7Ndy9oOEkZlll1y2I2cOotxup+r71q r0Sz3HwzCvWOSjrz379xJKGY8MD+6GhqpElWS6/+F7ntKPDrUnLzJYXNLI27H4eSi4d3 h92w== 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=sEdKo/amd96dudg5/yt7fXWidiXwoZIvb354Ws11Dh4=; b=iB9Kwd79DO4zvTY1Mw9unUV6SZtxQr6NWtTNb7yAwoGFO1TaGY6TBrHyz9exBT3Bzu CpDzqoxJMqwkraYBUEQk6g/Zv599R7ZYvyU7w2ql9n8t4YqEi5XSmxnwsghr4zCVoU0E NQz9HEEdSaBv3fbEIm3r6JkMko7ifbdRAYqJyg1ZR9WOrAcTvbH/RpnhVJSv5neKy1UI R/y3zfZGsEPDO9B/AFCptZNSuR6Xg3zyCvm/AE9nXYLOwqfpDKFFW8d4b+6Xq7jr+sWe xNGgseGv744vHL7d0gCJrXoy3IeByWLa0o7zUMADRt+pR1jfVVdJ8UC+XF1p+zeI7RGf oFBg== X-Gm-Message-State: ACrzQf0pqTvPOzxT8uuv/TYZWEk9+4ROkG0tPn9sO1cxVy5YoDUaHX4f /KfkhT+XQxHUtKfYf/64fv4iMkdf9w9aT8Jv6ygMHgcTZHf0cxXbbgkkM/8r3WxqA/af60QBRWu Lzk4/gMcv+hagYsHFWK8= X-Google-Smtp-Source: AMsMyM6jQhAv6oWGoX3ZUUJ+y++y4CxrGVSsfZJCvJMtooos/rFgxd7nUpUsO8J86al8i7Tor/OgXQ== X-Received: by 2002:a5d:47aa:0:b0:226:dbf6:680c with SMTP id 10-20020a5d47aa000000b00226dbf6680cmr5089177wrb.581.1663935580316; Fri, 23 Sep 2022 05:19:40 -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 bj1-20020a0560001e0100b0022b0214cfa6sm8939309wrb.45.2022.09.23.05.19.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:19:40 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Dmytro Shytyi , Benjamin Hesmans Subject: [PATCH mptcp-next v3 3/4] mptcp: handle defer connect in mptcp_sendmsg Date: Fri, 23 Sep 2022 14:19:12 +0200 Message-Id: <20220923121913.2135229-4-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923121913.2135229-1-benjamin.hesmans@tessares.net> References: <20220923121913.2135229-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 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-of-by: Dmytro Shytyi Co-developed-by: Benjamin Hesmans Signed-off-by: Benjamin Hesmans Acked-by: Paolo Abeni Reviewed-by: Matthieu Baerts --- 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 Mon Apr 29 03:24:33 2024 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 360F13C35 for ; Fri, 23 Sep 2022 12:19:43 +0000 (UTC) Received: by mail-wr1-f41.google.com with SMTP id n12so20154907wrx.9 for ; Fri, 23 Sep 2022 05:19:43 -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=hsDsqFy1lu4aN5Hfj0Jc/hMWOFycdjRkU/r6yHKxmhPM2kLU5tZGuXC/McpEdVTq4z dm33P9Yce9Oyjg3SKhBI4iHtCGaL5Odty1NIJhk+fcfQ6RhgJORjV2312VM4ldvBsrbA 8yeE8Rd6dmL5Rpzc8o185+PlzbNtlfQJBG3zWAEb4LImAoxLw2CxUHKNU5ueEPafmzwm Ar7oxXd4P/P57RoYDgAWIbSx0IzTANXRjYPJ1UzhOfCsVGpa2aL0Mj3FpF1KAo1Cegk1 0Ze06qs0hX0ye5PH1TY0kaRQEPYFDpQ4GXcUxIEArRtsAPtXZxOgMtv/2kb3N48HN9dv 5KoA== 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=gZuLXdkUzqnsSeB2bnBrNf0v0qS/7MRTJHgaR0SFPUYRWlN0BM5zMBMvTin+uLs0mC ISMcLZGi7JhXpap3Ju0QwFC9QC01UOPjgSG++Dl40oziEnYldFiDxJhKUmElRhcb2cZ/ Zkh574ym5JQF22I5G9R9VLqkpnStYZsCCrpVoJb8TS1Jmbfqaz7kgcWwCR7CjefIP5lP 5vPjWFAuQmiAssh06oqdW/xJ95Xu8071zx/QVztyfS9ZD38tCWv8Iq680rsnLvomS2xg K52oXTqUe2/tyAnE2bhuZQT5nlLua0AYKJ0ytkpTawjLXBKRk8DTS6dq/I//WUsJb+HN EeAg== X-Gm-Message-State: ACrzQf2QMio7MjKQbzC0Nkq6d/IhMQcBTCo174fwvOmVz3oC5Zo32pXF UlgqEGshjnfW9Y57N1XrH31ZEO6rG8K3cIY2eE/L2MohyWgjgIFEQEw1dpRaCcDnnzn5cK3JfQZ NYmgG2D8pn83fZA96iVc= X-Google-Smtp-Source: AMsMyM47bau1UQFj/vikZPTRVITWLP1Hqn/+I0YQhUPqOglXClI1vDLyfzUayxDl0jfN96jC0U7GDA== X-Received: by 2002:a05:6000:697:b0:22a:f737:b10f with SMTP id bo23-20020a056000069700b0022af737b10fmr4848718wrb.222.1663935581352; Fri, 23 Sep 2022 05:19:41 -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 bj1-20020a0560001e0100b0022b0214cfa6sm8939309wrb.45.2022.09.23.05.19.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:19:41 -0700 (PDT) From: Benjamin Hesmans To: mptcp@lists.linux.dev Cc: Benjamin Hesmans Subject: [PATCH mptcp-next v3 4/4] mptcp: poll allow write call before actual connect Date: Fri, 23 Sep 2022 14:19:13 +0200 Message-Id: <20220923121913.2135229-5-benjamin.hesmans@tessares.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923121913.2135229-1-benjamin.hesmans@tessares.net> References: <20220923121913.2135229-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 Acked-by: Paolo Abeni Reviewed-by: Matthieu Baerts --- 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