From nobody Mon Feb 9 20:10:36 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:32da:0:0:0:0:0 with SMTP id f26csp607118uao; Sat, 17 Sep 2022 15:29:35 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6I6IZPCdXVhwVv8peqWedSX0fD35zsZPXt4Z08gW78vXmFRO+ckwLUBlXkLklYQySRDppq X-Received: by 2002:a0c:da14:0:b0:4aa:aad9:e450 with SMTP id x20-20020a0cda14000000b004aaaad9e450mr9744332qvj.130.1663453774989; Sat, 17 Sep 2022 15:29:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1663453774; cv=pass; d=google.com; s=arc-20160816; b=Aq7171mBTlDcg20eZ2WSXfed4je+bX6EVqupsg8nmYnY9rt3oVxPG8LjFhKo4p6hA/ x0Cug2JPVVqCSnwV2aDvGt7dSlvpIN4PWHDZyryDKk3/9DcAX0IDRjVdZypnc5uq6DVR vcxOHZ6V3NhljorX5QIoYs1l3KhwPZEY1lrICo/oxSnJdBRrySFlyEeMMGeld03Yj8rq iUVDN8yxtfQ4VycxQ+DB1aD4qGc8NjtzBnbWDsgjZCUWgP6WVwS9FLX+qTtS7ld8R3Zp xbxRAOwaM/xEsm6k+p8aF3HZZ6htuUZgebivisWQEwjKkrG7bgmbEMrHngPgdbq9wC9q MVyg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:date :subject:message-id:cc:to:from:dkim-signature; bh=7IYuOTC/csJn4GK6bWNW85nwG5yGcE+PlbLHcHsmsH0=; b=RbZQVavH2Izwt8YK1eFegnJ0SHPywEYpMiiqO1Z7+Qz6Ik1Bpr3NVp6JnqjV1ga3mv SEF3bU2TIAoRXYQfFk7WfknHmte3IwNYSAOADpz0a+YyhTk1eqM8eHsJeQWSo5v+gKxV aDd6L72XgmA6k2osDuyqO+lvtO84uLcCJ18WBfD5b7lokhEOZgq9apBhrkm7BxvN2yJY Q3wABLTKkd2ue8/GUwc3IjGTQA7cwMStPR/F4QrGQ7kD24FlrMS8WZ3eossqsck2PDjb F3h6qkaKX3mZG2f52+tYaGbIHvKmbZYcA3fVZkWxHIKjHvUcNHdIc3ApFUd7ICQP+zC/ zXTg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@shytyi.net header.s=hs header.b=TbSkzJ5+; arc=pass (i=1 spf=pass spfdomain=shytyi.net dkim=pass dkdomain=shytyi.net dmarc=pass fromdomain=shytyi.net>); spf=pass (google.com: domain of mptcp+bounces-6295-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6295-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id b5-20020ac87fc5000000b0035ce2ebc998si375451qtk.147.2022.09.17.15.29.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Sep 2022 15:29:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6295-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@shytyi.net header.s=hs header.b=TbSkzJ5+; arc=pass (i=1 spf=pass spfdomain=shytyi.net dkim=pass dkdomain=shytyi.net dmarc=pass fromdomain=shytyi.net>); spf=pass (google.com: domain of mptcp+bounces-6295-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6295-wpasupplicant.patchew=gmail.com@lists.linux.dev" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id C9D0D1C20971 for ; Sat, 17 Sep 2022 22:29:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E2AAE5C81; Sat, 17 Sep 2022 22:29:31 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from sender11-of-o51.zoho.eu (sender11-of-o51.zoho.eu [31.186.226.237]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9BA35CA5 for ; Sat, 17 Sep 2022 22:29:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1663453760; cv=none; d=zohomail.eu; s=zohoarc; b=itcpAeE80FIJYwj5SB/rpDIbzmDCUArKcdB8G8ueS07C7lBCwa1LAI2mCwlPxwUh2yhVCKHN/HH1QSByRvm19bvNxqGxmJ9G/CEHrrEZhEmbgJ3MTgZ4T2k5ao1URxNjF+VQYGQWp46hnuolaRUN0T3Q/LIdP0UWtAHahLkQZkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.eu; s=zohoarc; t=1663453760; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=7IYuOTC/csJn4GK6bWNW85nwG5yGcE+PlbLHcHsmsH0=; b=a1wm9IlSysrnJOmgHrq1XthFkv4NhaiTa9NujOQtiGJp+oYL9ELF5/rzMduv2uepddhZibC5nF4waEToyfuMCx9Gj7PmBBkqE2WFPep0jFXnDXtOMf/tdmtM5v7sQCm4Q7igyz5gh7XMq81qCNMBmyMpz+xuhkOY4j9vVD9jyl8= ARC-Authentication-Results: i=1; mx.zohomail.eu; dkim=pass header.i=shytyi.net; spf=pass smtp.mailfrom=dmytro@shytyi.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1663453760; s=hs; d=shytyi.net; i=dmytro@shytyi.net; h=From:From:To:To:Cc:Cc:Message-ID:Subject:Subject:Date:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=7IYuOTC/csJn4GK6bWNW85nwG5yGcE+PlbLHcHsmsH0=; b=TbSkzJ5+5JKo8vm3sBgpg72u4GGHnMXzfBXt3gVh0yARm3O4FGz6+i1ZWaCotWVb c9kGBucCBx66oVa5Uv2IjJQFtMLdP5zaTpnHEHPbzg6bATd1u9AxNdVN6A8VuvNzurB C6STK2c+pSanlf4wUD4hn8t2CNDC4PHXURkhxHuI= Received: from doris.localdomain (243.34.22.93.rev.sfr.net [93.22.34.243]) by mx.zoho.eu with SMTPS id 1663453758103740.42406034695; Sun, 18 Sep 2022 00:29:18 +0200 (CEST) From: Dmytro Shytyi To: mptcp@lists.linux.dev Cc: Dmytro Shytyi Message-ID: <20220917222853.2406-4-dmytro@shytyi.net> Subject: [RFC PATCH mptcp-next v7 03/11] Initiator: MSG_FASTOPEN sendto(). request cookie Date: Sun, 18 Sep 2022 00:28:45 +0200 X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220917222853.2406-1-dmytro@shytyi.net> References: <20220917222853.2406-1-dmytro@shytyi.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 X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" Initiator: MSG_FASTOPEN in sendto triggers the mptcp_sendsmg_fastopen. It requests a MPTFO cookie. Suggestion @palbeni(JAN 17): 'split the patch in several small one'. Signed-off-by: Dmytro Shytyi --- net/mptcp/fastopen.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.c | 4 ++-- net/mptcp/protocol.h | 6 ++++++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/net/mptcp/fastopen.c b/net/mptcp/fastopen.c index 0c9ef6f5d528..9974508e0f4c 100644 --- a/net/mptcp/fastopen.c +++ b/net/mptcp/fastopen.c @@ -3,3 +3,53 @@ */ =20 #include "protocol.h" + +int mptcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, + size_t len, struct mptcp_sock *msk, + size_t *copied) +{ + const struct iphdr *iph; + struct ubuf_info *uarg; + struct sockaddr *uaddr; + struct sk_buff *skb; + struct tcp_sock *tp; + struct socket *ssk; + int ret; + + ssk =3D __mptcp_nmpc_socket(msk); + if (unlikely(!ssk)) + goto out_EFAULT; + skb =3D tcp_stream_alloc_skb(ssk->sk, 0, ssk->sk->sk_allocation, true); + if (unlikely(!skb)) + goto out_EFAULT; + iph =3D ip_hdr(skb); + if (unlikely(!iph)) + goto out_EFAULT; + uarg =3D msg_zerocopy_realloc(sk, len, skb_zcopy(skb)); + if (unlikely(!uarg)) + goto out_EFAULT; + uaddr =3D msg->msg_name; + + tp =3D tcp_sk(ssk->sk); + if (unlikely(!tp)) + goto out_EFAULT; + if (!tp->fastopen_req) + tp->fastopen_req =3D kzalloc(sizeof(*tp->fastopen_req), + ssk->sk->sk_allocation); + + if (unlikely(!tp->fastopen_req)) + goto out_EFAULT; + tp->fastopen_req->data =3D msg; + tp->fastopen_req->size =3D len; + tp->fastopen_req->uarg =3D uarg; + + /* requests a cookie */ + ret =3D mptcp_stream_connect(sk->sk_socket, uaddr, + msg->msg_namelen, msg->msg_flags); + if (!ret) + *copied =3D len; + return ret; +out_EFAULT: + ret =3D -EFAULT; + return ret; +} diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 0e5db0a634d3..af99a03021c9 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1672,9 +1672,9 @@ static int mptcp_sendmsg(struct sock *sk, struct msgh= dr *msg, size_t len) int ret =3D 0; long timeo; =20 - /* we don't support FASTOPEN yet */ + /* we don't fully support FASTOPEN yet */ if (msg->msg_flags & MSG_FASTOPEN) - return -EOPNOTSUPP; + ret =3D mptcp_sendmsg_fastopen(sk, msg, len, msk, &copied); =20 /* silently ignore everything else */ msg->msg_flags &=3D MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 1e21293bceaa..21f9bf6d2f7e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -837,6 +837,12 @@ void mptcp_event_addr_removed(const struct mptcp_sock = *msk, u8 id); bool mptcp_userspace_pm_active(const struct mptcp_sock *msk); int mptcp_stream_connect(struct socket *sock, struct sockaddr *uaddr, int = addr_len, int flags); =20 +// Fast Open Mechanism functions begin +int mptcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, + size_t len, struct mptcp_sock *msk, + size_t *copied); +// Fast Open Mechanism functions end + static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk) { return READ_ONCE(msk->pm.addr_signal) & --=20 2.25.1