From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153181pis; Mon, 2 May 2022 13:52:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1sLKANDrVDMU3kiEeEP8odjWR0sgvk/OJmfDVqge/IkyIELrT9vko8TvsgJ4/PudmQvkL X-Received: by 2002:a05:6830:1081:b0:605:e78a:ea4d with SMTP id y1-20020a056830108100b00605e78aea4dmr4790536oto.315.1651524769328; Mon, 02 May 2022 13:52:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524769; cv=none; d=google.com; s=arc-20160816; b=DJoyE2knZmp0Cvc+gmEGtlUXDwtynmEJG5ltOpe0+ZPa+LqTNL7Uc2oX+l2QNHEA5s pnUDjg5Z0lsOJYKpStKQkZl70Ubs6G3x/3os/DpHboI9O/bgkxJSnDO5cfKloYKQHRLR tJyqN2NX9XbHO0RBxiyfom7CkDDDrvXrAdpIS94Cjd74C0fM0ThgUKDOmtU5+gnVBQ/s BBEEB3liCy4X8gPmInO5mp+3xy+V5ov8lkOzHET8WruX7WY5bDSlE3swFYfzjMblctP2 MhS0omERlsbf0gsvLzbxWBP7kM/NU6dLOcgRy7K7MYUaveo9I2g25kAw3VwNKelrqz7q M7sA== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=383T0Rm9RolfrkpMhw6pOvihIUuM7bBZjdcc6tBrp30=; b=kna9J9I0TVvYC8+ghbS1ISCm3/Nc1rmF0GqUSc86+SzUIdZy156vldz5E2ePemQKht XmsyPanMqsEMe7Z8bqPJUcvPZL2tUH3/tnuYLnCiHfScxgZJCuiPB5BKZCrpQYUIqEHO i19uvKeAW8tWB4+cNNeyS8ioUPEc5cAjt+9g5BEZbTqJUI+08g6g/lG6RLlX3UPLfR9q ChrzOyJlABmMreEnBWP+YbYQa+fMIXBL+ngkB1iU08qC+rP0AAaN85WNncmgKYlPFaQO GRYlYN6fMq1bqkqPV/pFFUOXxukp1leqL0RMDXKHrw5Drzz+R6O9NDGVP4oUqrmdR049 qAfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IvDtM510; spf=pass (google.com: domain of mptcp+bounces-5027-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5027-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id f201-20020a4a58d2000000b0033a59f4f920si9881797oob.23.2022.05.02.13.52.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:49 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5027-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IvDtM510; spf=pass (google.com: domain of mptcp+bounces-5027-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5027-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 da.mirrors.kernel.org (Postfix) with ESMTPS id 1967A2E09ED for ; Mon, 2 May 2022 20:52:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C8D373212; Mon, 2 May 2022 20:52:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 884A92F56 for ; Mon, 2 May 2022 20:52:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524765; x=1683060765; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Tl84NCpOr253pS4c/uwm4WkevvE9XpfGA0+EjXDUaKM=; b=IvDtM510XZrjMPZCJYHWD/ecEcPR/Xexrt4DrZN0xTGufECT7oAHZR4R 2OwIBkbY8hR+oBldHu2U9LIK3gIE8Wh8oXdKxkFEQ/JenI1P7bSLw/63a do8XZp2LFi4JpMxh9GAOsCd+soE7y4Jn8/Vyzh1kt6M/yLMMCyke1MG5T qfZ3sJMMkm579xkUa5uG99aTbZ5MDgpJJyAEHsV2vo23LcAv4EEoZ0vwu qK0PFbjp8kw/L9BJtcWsgEJw0Wa3+SgjUlDVZwS76kNus/p/W6mhfJj3Y u3cwUdhQT7yOeqmeEoXo8kyFNyyqXoN5KV8lWPoZ/EX8GLDahSzjaFSlM g==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875181" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875181" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619568" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 1/7] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Date: Mon, 2 May 2022 13:52:31 -0700 Message-Id: <20220502205237.129297-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor Current limits on the # of addresses/subflows must apply only to in-kernel PM managed sockets. Thus this change removes such restrictions on connections overseen by non-kernel (e.g. userspace) PMs. This change also ensures that the kernel does not record stats inside struct mptcp_pm_data updated along kernel code paths when exercised via non-kernel PMs. Additionally, address announcements are acknolwedged and subflow requests are honored only when it's deemed that a userspace path manager is active at the time. Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 15 +++++++++++++-- net/mptcp/pm_netlink.c | 10 ++++++++++ net/mptcp/protocol.h | 6 ++++++ net/mptcp/subflow.c | 4 +++- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 57f67578a47f..8df9cb28d970 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -87,6 +87,9 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk) unsigned int subflows_max; int ret =3D 0; =20 + if (mptcp_pm_is_userspace(msk)) + return mptcp_userspace_pm_active(msk); + subflows_max =3D mptcp_pm_get_subflows_max(msk); =20 pr_debug("msk=3D%p subflows=3D%d max=3D%d allow=3D%d", msk, pm->subflows, @@ -179,7 +182,8 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk= , const struct sock *ssk, bool update_subflows; =20 update_subflows =3D (ssk->sk_state =3D=3D TCP_CLOSE) && - (subflow->request_join || subflow->mp_join); + (subflow->request_join || subflow->mp_join) && + mptcp_pm_is_kernel(msk); if (!READ_ONCE(pm->work_pending) && !update_subflows) return; =20 @@ -208,7 +212,14 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (!READ_ONCE(pm->accept_addr) || mptcp_pm_is_userspace(msk)) { + if (mptcp_pm_is_userspace(msk)) { + if (mptcp_userspace_pm_active(msk)) { + mptcp_pm_announce_addr(msk, addr, true); + mptcp_pm_add_addr_send_ack(msk); + } else { + __MPTCP_INC_STATS(sock_net((struct sock *)msk), MPTCP_MIB_ADDADDRDROP); + } + } else if (!READ_ONCE(pm->accept_addr)) { mptcp_pm_announce_addr(msk, addr, true); mptcp_pm_add_addr_send_ack(msk); } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 473e5aa7baf4..d2b63529bfee 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -805,6 +805,9 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, if (!removed) continue; =20 + if (!mptcp_pm_is_kernel(msk)) + continue; + if (rm_type =3D=3D MPTCP_MIB_RMADDR) { msk->pm.add_addr_accepted--; WRITE_ONCE(msk->pm.accept_addr, true); @@ -1855,6 +1858,13 @@ static void mptcp_nl_mcast_send(struct net *net, str= uct sk_buff *nlskb, gfp_t gf nlskb, 0, MPTCP_PM_EV_GRP_OFFSET, gfp); } =20 +bool mptcp_userspace_pm_active(const struct mptcp_sock *msk) +{ + return genl_has_listeners(&mptcp_genl_family, + sock_net((const struct sock *)msk), + MPTCP_PM_EV_GRP_OFFSET); +} + static int mptcp_event_add_subflow(struct sk_buff *skb, const struct sock = *ssk) { const struct inet_sock *issk =3D inet_sk(ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 54d2b3b2d100..85390146944d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -784,6 +784,7 @@ void mptcp_event(enum mptcp_event_type type, const stru= ct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); +bool mptcp_userspace_pm_active(const struct mptcp_sock *msk); =20 static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk) { @@ -811,6 +812,11 @@ static inline bool mptcp_pm_is_userspace(const struct = mptcp_sock *msk) return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_USERSPACE; } =20 +static inline bool mptcp_pm_is_kernel(const struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_KERNEL; +} + static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool = port) { u8 len =3D TCPOLEN_MPTCP_ADD_ADDR_BASE; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 75c824b67ca9..9567231a4bfa 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -62,7 +62,9 @@ static void subflow_generate_hmac(u64 key1, u64 key2, u32= nonce1, u32 nonce2, static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk) { return mptcp_is_fully_established((void *)msk) && - READ_ONCE(msk->pm.accept_subflow); + ((mptcp_pm_is_userspace(msk) && + mptcp_userspace_pm_active(msk)) || + READ_ONCE(msk->pm.accept_subflow)); } =20 /* validate received token and create truncated hmac and nonce for SYN-ACK= */ --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153169pis; Mon, 2 May 2022 13:52:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzyCRcq5xxw4gwa8JgyJ9ma6ou5+2t8DOnNNBzO+wN990nOIlp8hnl+HxiZH1RYkM2GcxAb X-Received: by 2002:a17:902:bcc2:b0:14f:23c6:c8c5 with SMTP id o2-20020a170902bcc200b0014f23c6c8c5mr13222302pls.131.1651524768096; Mon, 02 May 2022 13:52:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524768; cv=none; d=google.com; s=arc-20160816; b=zvE8HBgJMk2VZfJJ2Kj98TDUhx6/iNoOnMeJK6acKqEYFBdCzsyRx3WShq10alk228 xuP0oeNOKU4OIgEEFM8yITAsmxob+oTWBry4FAjENkM4IOhvZo45X6I4G/sYIAIcuwuH Cd5PamWo4nTxn0DAfkFNhwUpd9Kp+EtExooELyGn5tf6dDTjljDcMc7MzmQrBPnY0w7H Vp88/kKj4Juky5zpLD7ruizsjD7/VLZT14gfPGWYnpECRt/F00Y48p8yQ5R9TBPLN8Xs ylV2cQQIcKoOidBJJaIEGbTQWu3CWmGM3XtQjAyzDe0a7x/23Ms1YNdrNWvvQ4mkvYfB eFFg== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=IbSK/VUyuCPEd7r2BGuY7fYMCDI1sepChl99590wsuA=; b=HSu2P47PczIwOkGYnvXr2SiCFvkCQSfaOAK11simQhgvTnvL76ca2M/c/04fxPosnq hICFBpEw6LxHqYRDCdlDV4Qi8gxOmDqUKFH97TvtosOgUMiA2w0CozItK5+DKNuvf2+q YjdaA0ISs4ewGOLVj/zLPFFc6P/ACE0DL7LfaKMrSC5I7ueaEf3nw+/vMl63e19lIF0x U9xjUTMDEqWVkkIEoqFq79bwVg/YNIJpFKlHRo7bMGRuHQKah/od7oJPVetm0dctol2Q pRSvQDDRvxwzQAUqM68EbYmLZrKS9SB+mpTCdLmoJfPJ+9MoLgMbJi7MaHyYqqEZdiCi Dlng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Cm5tJQRD; spf=pass (google.com: domain of mptcp+bounces-5026-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5026-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id b18-20020a056a000cd200b0050dcf85b9e1si888526pfv.141.2022.05.02.13.52.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:48 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5026-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Cm5tJQRD; spf=pass (google.com: domain of mptcp+bounces-5026-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5026-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id A1D5B280A9C for ; Mon, 2 May 2022 20:52:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0583F3217; Mon, 2 May 2022 20:52:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 EC00F3214 for ; Mon, 2 May 2022 20:52:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524765; x=1683060765; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=StQnr+iQV4akj6hXPJMGV6Aj3OnOzSts05MrHXp935A=; b=Cm5tJQRDD6qplLHBQaNVvd4VXWFQWpzQq1Ax+PxwKaO2KkwaD29KRayD fNmSagSBQxC9QhVu1PgwFXrHB1w3EO1EhobocUegv+jSFYqDFMSsOwvfh /voHcqHl0gtgmszEOV9Oym+5u0dFk4pc6Agby7SNovMJ12TN2jifEVVsP DFvkdiS9k181IB6CdHMiy7XrJYsDXA5xh351Et03WisjqqiInHvNNGjab aydzUdSxh3GscZ0+4LuV9l8/LHFykH4Jj0miyR0yF5JST0oYDW7NxsSOd IztH7tXqMPMyRviJ6NhieB5wiglyxqOhDITFO7qCQroHKkVZBzHyb5VHS Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875183" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875183" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619569" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 2/7] selftests: mptcp: ADD_ADDR echo test with missing userspace daemon Date: Mon, 2 May 2022 13:52:32 -0700 Message-Id: <20220502205237.129297-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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" Check userspace PM behavior to ensure ADD_ADDR echoes are only sent when there is an active userspace daemon. If the daemon is restarting or hasn't loaded yet, the missing echo will cause the peer to retransmit the ADD_ADDR - and hopefully the daemon will be ready to receive it at that later time. Reviewed-by: Matthieu Baerts Signed-off-by: Mat Martineau --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index b27854f976f7..d1de1e7702fb 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2719,6 +2719,17 @@ userspace_tests() chk_add_nr 0 0 fi =20 + # userspace pm type does not echo add_addr without daemon + if reset "userspace pm no echo w/o daemon"; then + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 0 0 0 + chk_add_nr 1 0 + fi + # userspace pm type rejects join if reset "userspace pm type rejects join"; then set_userspace_pm $ns1 --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153188pis; Mon, 2 May 2022 13:52:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwQCHdcz8zDMZk75W25D/ZUTs8HJDPh0ZfYQAoGu8x9rCj0rk9En9Wq7DKd+L3rFio2r0nE X-Received: by 2002:a05:6808:1893:b0:325:c6d0:63ef with SMTP id bi19-20020a056808189300b00325c6d063efmr493687oib.58.1651524770480; Mon, 02 May 2022 13:52:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524770; cv=none; d=google.com; s=arc-20160816; b=CmN7JGRexuTa7RMSKN8nyhg/yc2ApH9wK3CgI2QLWyUewe8oJja8WVCfOoDk1AcHD/ 68+yTCkpkBIVqGBPrSC3PSjwUWK+jjiBuP4qHwVF0rZ8vgRD4nnYv287WupVM5fxE3G0 gUQy+XQFovg6Qf1c/KBXbYzh+Z9fYG14lqAGEPTHwiWGDpWss8mu8MF90YRQKgigJ/v4 B2ya42184iBG54Izgr30qhMCu5ZFhLQK+R6s8ortmpsrhBXAq+PeRC6tYf5prQNwANwR VRS+v4phPNGlkDUF49nMeemTcF9ePkTXYCphSjaOqnyJkQaaWcLIsIFtCLc3kouIwKm1 mTzw== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=GuLHQqaH1F3oYpjpkL8h/kZOyAsuS8gT83CkON03Xwo=; b=XvfCO3LF2Zhfr9J8XhQpfA4WWL/8Im9bT8dI5qampm1A4vlnMsy53m6VA4fxPcwQ58 2dyL/KCMryoLjRxw/LECGeJ7n7+qUF1/L9dVkWrOYxCIw3NCqXTAMEf2JusMS13wGYhb gEtIk3Tby3cZQNf1uDJcwehyrhjVVJrQFPwIFpuqbSt0wpYP++UTIjDJO1WS7eti5Ssc aEKpRA44BPtt/lJZC2Ml/aZVGJ/qA9sNZ8A+QqMkf0U+AtHFI3lR0x5/9b1u6pqiyFKO fUI7jzrh1ltD1kNPOXVCOeqF2YjbGw5XzEtbHj9Jj5Ud3XsTGIOiPfcZgh+NGk1NGKrf Cz8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=D1Utdmlr; spf=pass (google.com: domain of mptcp+bounces-5028-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5028-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id r32-20020a056870e9a000b000e27d5ef2b3si8076007oao.279.2022.05.02.13.52.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:50 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5028-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=D1Utdmlr; spf=pass (google.com: domain of mptcp+bounces-5028-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5028-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 da.mirrors.kernel.org (Postfix) with ESMTPS id 42A382E09C4 for ; Mon, 2 May 2022 20:52:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 16CFE321D; Mon, 2 May 2022 20:52:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 134DD3214 for ; Mon, 2 May 2022 20:52:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524767; x=1683060767; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g98A4rA20yFt0BaxgDASs6GlXnYlxTSYaWEzwtMEDEk=; b=D1UtdmlrBfakr4rUR8DXzxpg3t8PwsKdoyL74dHNkxdif1/PjbeOLU0k LyDz1LFaap6B7WwXBteSLEpuZfOpz9bhRf8IaqYHEx0q6URNQbPxkA6Gn TsinzfxnLJYon8ZOhAWCw8kIJyZQxDGOj5yvZdsMgr6ypOxBDVGj/LroN orHfUwNGWuBXdmwEMY+Y9xLdbOge6Z4MKxq40my1QWaYTkFLcpPrtu3oP 2ilOu4uEH2DW8b2DscdGlVmPF51XJQiIjfXHdENybv8sl11c0hH1fls55 aluDX6LqT+2Urf17qm9y5llb7i8sxeR9bVHTXCrjvv8REi45Tpbe51reH A==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875185" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875185" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619574" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 3/7] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Date: Mon, 2 May 2022 13:52:33 -0700 Message-Id: <20220502205237.129297-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor This change reads the addr id assigned to the remote endpoint of a subflow from the MP_JOIN SYN/ACK message and stores it in the related subflow context. The remote id was not being captured prior to this change, and will now provide a consistent view of remote endpoints and their ids as seen through netlink events. Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- net/mptcp/subflow.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 9567231a4bfa..a0e7af33fb26 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -443,6 +443,7 @@ static void subflow_finish_connect(struct sock *sk, con= st struct sk_buff *skb) subflow->backup =3D mp_opt.backup; subflow->thmac =3D mp_opt.thmac; subflow->remote_nonce =3D mp_opt.nonce; + subflow->remote_id =3D mp_opt.join_id; pr_debug("subflow=3D%p, thmac=3D%llu, remote_nonce=3D%u backup=3D%d", subflow, subflow->thmac, subflow->remote_nonce, subflow->backup); --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153192pis; Mon, 2 May 2022 13:52:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyzZS1XNP01UlddK4oLlmdq9fhycWv+Q7Mh1kR+WbCWn79UVHD9p+NYR5I3m7iDHeJ3gW0m X-Received: by 2002:a05:6808:124b:b0:2da:38f0:945f with SMTP id o11-20020a056808124b00b002da38f0945fmr450254oiv.171.1651524771899; Mon, 02 May 2022 13:52:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524771; cv=none; d=google.com; s=arc-20160816; b=WHmQ10YURCmLH+YAbb/uxtSRYrmYNRkyrRsPlc9/pAbwjLc0aY32ggBjsUzivGzlX6 YSI5KBBoJP8qNMsUaSauN9jH/sUEC1UshG88Afg8FNLrnav7x/GCT7DSJM/Heuwj8auG 6d0btX7hrNadkfUmeJ7aKVa13Ir4HA/8wzEcIVunJvOJEaDeIHwUUh80gC+/bJz7Vtqk C2Zb6D1JObBfThfaopGdtTlTbRx9P4uzDJfyf3AQGuXer6dj+qrvfLW53s6cCFaYBPLd +3Ukc/xrXCn3JK8IK15MUWH1b0POol2fID/CjgNYUfjAtCz3QpAi3+h3BVxnVRZzT4R6 Jp8Q== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=/LIH5vvy+L68+A2DJbTZEUzvaaT9Egj4FVPMCSl4TEQ=; b=PrfyWgIQyDY9z2JeelaQYKQEM+ysdmRVe8FHzxcV7qtSQ7hTMnMyNVBp0p5zmTWts/ Zivl/3SX7K7rfyT2C80PUmKXf+Qm63slPIXGv32JgNhiPnrOqnUWZHrUwmEqy9H5nozv 1f1xiVDOmbogplN+dkc+LnL93FFST7AGQJabnAMzjN2jtCEYMpmm9mg9AzHtLksYjFpb pd2yMlk03CyBGKfyiKDoHdzrm7JeRIEogVQIa1IpD7Thl3NDv+uc8eypeeE6SptgCjdS j4iJMbAH/aHWAVbAIO8AnsVluxmRUfE3Y9MGRkBkfnLOO3S7UqeLzsW6VqEXj4kaooaq AAow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=G8lRNLBD; spf=pass (google.com: domain of mptcp+bounces-5029-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5029-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id s185-20020aca5ec2000000b002fa7d6e7c76si8907822oib.166.2022.05.02.13.52.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:51 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5029-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=G8lRNLBD; spf=pass (google.com: domain of mptcp+bounces-5029-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5029-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 da.mirrors.kernel.org (Postfix) with ESMTPS id 8FDCD2E09E9 for ; Mon, 2 May 2022 20:52:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EB22D3217; Mon, 2 May 2022 20:52:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 755BD3218 for ; Mon, 2 May 2022 20:52:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524767; x=1683060767; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eAce9c3mqUkERzSO2pr1Yle5fx831jjiezcbospqV1Y=; b=G8lRNLBDISKAGF5Jz0u++3qtt0WXZ6BGrKP0VYIs5GTIUIbShdBEyqCL QWdYdbMaPbRipDvMSUlTPnhnuX7utH2+/HufGIIv43u/VwTPz1nv4dHmZ Ys+NDZQ1gZVxb32CvCPmeMLfq+5xzTJB+nAn9f7/dlkZHgBMgwy3btvRK j13Y62Mg0rfk/itNDyultMd5kYYA4B8E4WuH92i7hH9+CnkhsJ9eCKUey wRmoHJDl2XED5k0S997T6lHxiCAiJ1mnAQkEFc3mGNFF2FMw4O9pO31A5 h0LLTphHzByntWUk7hPmXZSt2e6GbuFb/3vy1iYMarjhGabl2/oG94wlm A==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875187" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875187" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619578" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 4/7] mptcp: reflect remote port (not 0) in ANNOUNCED events Date: Mon, 2 May 2022 13:52:34 -0700 Message-Id: <20220502205237.129297-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor Per RFC 8684, if no port is specified in an ADD_ADDR message, MPTCP SHOULD attempt to connect to the specified address on the same port as the port that is already in use by the subflow on which the ADD_ADDR signal was sent. To facilitate that, this change reflects the specific remote port in use by that subflow in MPTCP_EVENT_ANNOUNCED events. Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 6 ++++-- net/mptcp/pm_netlink.c | 11 ++++++++--- net/mptcp/protocol.h | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 88f4ebbd6515..c9625fea3ef9 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1133,7 +1133,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) && add_addr_hmac_valid(msk, &mp_opt)) { if (!mp_opt.echo) { - mptcp_pm_add_addr_received(msk, &mp_opt.addr); + mptcp_pm_add_addr_received(sk, &mp_opt.addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 8df9cb28d970..5d6832c4d9f2 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -200,15 +200,17 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *m= sk, const struct sock *ssk, spin_unlock_bh(&pm->lock); } =20 -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr) { + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); struct mptcp_pm_data *pm =3D &msk->pm; =20 pr_debug("msk=3D%p remote_id=3D%d accept=3D%d", msk, addr->id, READ_ONCE(pm->accept_addr)); =20 - mptcp_event_addr_announced(msk, addr); + mptcp_event_addr_announced(ssk, addr); =20 spin_lock_bh(&pm->lock); =20 diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index d2b63529bfee..eeaa96bcae6c 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -2019,10 +2019,12 @@ void mptcp_event_addr_removed(const struct mptcp_so= ck *msk, uint8_t id) kfree_skb(skb); } =20 -void mptcp_event_addr_announced(const struct mptcp_sock *msk, +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp_addr_info *info) { - struct net *net =3D sock_net((const struct sock *)msk); + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); + struct net *net =3D sock_net(ssk); struct nlmsghdr *nlh; struct sk_buff *skb; =20 @@ -2044,7 +2046,10 @@ void mptcp_event_addr_announced(const struct mptcp_s= ock *msk, if (nla_put_u8(skb, MPTCP_ATTR_REM_ID, info->id)) goto nla_put_failure; =20 - if (nla_put_be16(skb, MPTCP_ATTR_DPORT, info->port)) + if (nla_put_be16(skb, MPTCP_ATTR_DPORT, + info->port =3D=3D 0 ? + inet_sk(ssk)->inet_dport : + info->port)) goto nla_put_failure; =20 switch (info->family) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 85390146944d..a762b789f5ab 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -753,7 +753,7 @@ void mptcp_pm_subflow_established(struct mptcp_sock *ms= k); bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk); void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock= *ssk, const struct mptcp_subflow_context *subflow); -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr); void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); @@ -782,7 +782,7 @@ int mptcp_pm_remove_subflow(struct mptcp_sock *msk, con= st struct mptcp_rm_list * =20 void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); -void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp= _addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); bool mptcp_userspace_pm_active(const struct mptcp_sock *msk); =20 --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153211pis; Mon, 2 May 2022 13:52:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxVKpYYR933qx+C1/58i5/c2q99mQUW1Gw6DkQO3eAmXWZoBi0jHwOYxt184p6Gtd6N91cs X-Received: by 2002:a05:6870:f149:b0:dd:f3b0:986d with SMTP id l9-20020a056870f14900b000ddf3b0986dmr461358oac.148.1651524774123; Mon, 02 May 2022 13:52:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524774; cv=none; d=google.com; s=arc-20160816; b=TIovHQC3i2xLk6lxuBOJu3fEaHedNo17K2ij7yFeLCompW3h/owvqjclNIP1m2KpMp y9nEcX0WLvrFqwKXncswXYESOrC51J4/Cd9iOFma9RYhmqDVV8BsX2yHNqQG9pgtLf3P o0KF3jPSvw1B7LkA0IUx8cHbIsOkgdRIADg06p5W3yshcMUzLtz2Rb0SdBILoI5KKJ78 lrIRO106KTIAzqbHgwVONeyinSmbFJWHjoFz4mobszQOkpVWurWe5JwkvJOnkGDnWST0 lyYC3UpChFsjP1rXh731bVCtPcbPpomb6UU5zQYInOicyJ8v57BMhyQxO4PSfhB4y4A2 Y5Xw== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=QIVokxYOkdEgBwvItk9msVm0MON7+F+ck+bz7DzHqzU=; b=oM2xtYG5SBMsr7y4XCFtB1uLJ4MpmGtw/XjJJHC9OHxQSLCfD/VFMYUw+Wg7XWqRfG E5TyufwRSGsUmJzyant0M2mUQ9b6Tf6scczNWuGY4zfxz25eXxWxdhHlSpUNyq5VaCpG O4fMHtwEg9y6UJ/p+tAFoc81yKCK6rQwjF/KfzEnRuvV+pEnaOjM595pL8mNYlVW/ok/ ifAa03ppY5wOfSeiYZ7LzAKOh4riFFb6RAco/qabMNDVWsffiT6FYazUvjiFteUXHNDI 00TUVpmi3NPZhueHGhG+vKTxgYgGjBCpde9xIHYAhPUaUXfzB3DWCIkhEk4vjRljYxZV VKrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=StjxulLZ; spf=pass (google.com: domain of mptcp+bounces-5031-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5031-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id r13-20020a05683001cd00b0060621b81c2asi1709396ota.307.2022.05.02.13.52.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:54 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5031-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=StjxulLZ; spf=pass (google.com: domain of mptcp+bounces-5031-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5031-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 da.mirrors.kernel.org (Postfix) with ESMTPS id E11BC2E09E1 for ; Mon, 2 May 2022 20:52:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B45903214; Mon, 2 May 2022 20:52:49 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 D5F61321B for ; Mon, 2 May 2022 20:52:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524767; x=1683060767; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8YE41PYOhNCiCTl5tdJDRpWVIfLdzB0W0L7IYHQ/tIA=; b=StjxulLZWa6ziHHVicVx26oEp5f8sDgWLTu9cAR+5X39ayZWQVIOtusj 6i47DzsclsVy0Iu4ZkkMpnFYQAYPgeq9OE1zSeix+9IYK2+r7dHkLxfc9 LsqhI2TyHk3an3j8OMMyxHYvPVIAOrP/ZdgCpvm+SB99GOn6r0aOU0BoH oVLFWMIa+roO0s3Rd7QaDWBe/wg9Kln6hiV8RognWjTHkLnFyJKk21NoY oJOKMqxk1dRK8cajpvycOFFdHxZNhIsLxUn/iKZs3EXd5bCbNMR7+9PPB V49ZCgfDFLT0VrR/ygXhXx4mZfXeuWwH/ZuNCuk3poQI1Z1WzrxY/puPL g==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875190" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875190" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619582" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:43 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 5/7] mptcp: establish subflows from either end of connection Date: Mon, 2 May 2022 13:52:35 -0700 Message-Id: <20220502205237.129297-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor This change updates internal logic to permit subflows to be established from either the client or server ends of MPTCP connections. This symmetry and added flexibility may be harnessed by PM implementations running on either end in creating new subflows. The essence of this change lies in not relying on the "server_side" flag (which continues to be available if needed). Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- net/mptcp/options.c | 2 +- net/mptcp/protocol.c | 5 +---- net/mptcp/protocol.h | 8 ++++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index c9625fea3ef9..e05d9458a025 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -931,7 +931,7 @@ static bool check_fully_established(struct mptcp_sock *= msk, struct sock *ssk, if (TCP_SKB_CB(skb)->seq =3D=3D subflow->ssn_offset + 1 && TCP_SKB_CB(skb)->end_seq =3D=3D TCP_SKB_CB(skb)->seq && subflow->mp_join && (mp_opt->suboptions & OPTIONS_MPTCP_MPJ) && - READ_ONCE(msk->pm.server_side)) + !subflow->request_join) tcp_send_ack(ssk); goto fully_established; } diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index a5d466e6b538..5d529143ad77 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3321,15 +3321,12 @@ bool mptcp_finish_join(struct sock *ssk) return false; } =20 - if (!msk->pm.server_side) + if (!list_empty(&subflow->node)) goto out; =20 if (!mptcp_pm_allow_new_subflow(msk)) goto err_prohibited; =20 - if (WARN_ON_ONCE(!list_empty(&subflow->node))) - goto err_prohibited; - /* active connections are already on conn_list. * If we can't acquire msk socket lock here, let the release callback * handle it diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index a762b789f5ab..187c932deef0 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -911,13 +911,17 @@ static inline bool mptcp_check_infinite_map(struct sk= _buff *skb) return false; } =20 +static inline bool is_active_ssk(struct mptcp_subflow_context *subflow) +{ + return (subflow->request_mptcp || subflow->request_join); +} + static inline bool subflow_simultaneous_connect(struct sock *sk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); - struct sock *parent =3D subflow->conn; =20 return sk->sk_state =3D=3D TCP_ESTABLISHED && - !mptcp_sk(parent)->pm.server_side && + is_active_ssk(subflow) && !subflow->conn_finished; } =20 --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153202pis; Mon, 2 May 2022 13:52:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcExvQbwgFuCgqH9WBuuWluDFyFCqIN6KL9x6n8X/dRrCKP+54JRi8Z7tbQpsWQI1W5WEe X-Received: by 2002:a63:257:0:b0:382:1b18:56a9 with SMTP id 84-20020a630257000000b003821b1856a9mr3900129pgc.347.1651524773006; Mon, 02 May 2022 13:52:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524773; cv=none; d=google.com; s=arc-20160816; b=BrYECHknuUWFsvJ9jT0C+hxfdQUQLU7NQaNnIdKRk2yFrplAvBGk69XzbG1O+XZ0Rt R3dJcOTnQzvzeLuBOB75ae9JdAtSDiW3I8JBKfBpGPk9aiV8upw1seI4vvN6KOD+khIK VGAu0JqEbR5W1bTT8FT84tdH+5l/HY9Ov9KHfJhsITYQayr+M51lRsqwbD2BhrQPCpdy oPkafl+9KeC6LEJUNuV95OwRzFbxf3qP5wvQYMU1H5BMQ5k8Fv964MFf57CBTAuRv+P1 z4CTfEnJimd07oyJpW62XtQHJDctHZiueF+zRJald+BHbW13jF2x94SNKo5U0VYKox0F zxHg== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=vPPX8cQePM3l/jxSJM7jc+RuQA21lKyks1tfRd9Wj5o=; b=C3r0rCj2NPR3sRgYjZ5jR/mjn22g7ozeUPkQUADV6xvK8HJB+4S9xJ0mfBh0F58D5E 1rOtPhZwIIuQD4x/rn3bmYdf3QzQRHBMfy0Z/GMSW1LRZUN2O4IJvsXEwd7wDvRjmurY OxWnP8MWqrOLxr4qIcFbZCgFsV8kUNNoqLcIIDMmZGxdY1HDkH4YIO1vhh0GB5eLzErI dreizJVrAVAeWEUo2j8hcI087YADNPcJRKldCitqZP5/bebAtIgs9XiCZ5h/osARyKRT VVK1LKCASlXmESTOxhLoujG8K1TQ05nQWA2bfeRXah0KDgxVBbw5MQJOIA2WY7Oo1NZY 3TLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Zn6zbpue; spf=pass (google.com: domain of mptcp+bounces-5030-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5030-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id q7-20020a63ae07000000b003ab01935138si15231882pgf.47.2022.05.02.13.52.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:52 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5030-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Zn6zbpue; spf=pass (google.com: domain of mptcp+bounces-5030-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5030-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 63276280AB6 for ; Mon, 2 May 2022 20:52:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 15E59321E; Mon, 2 May 2022 20:52:49 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 20BF13214 for ; Mon, 2 May 2022 20:52:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524768; x=1683060768; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uCmDuCffsSpAMH/ALNDVwMW6WhS/bEFusqTpuRquYcM=; b=Zn6zbpueiyd9hQwKc7IcWAft6jMmBrM8mc44NAO93y7dITrj0rf2tJUM oUEdhw81MRXf7UYzkgmlNCrEP+c5bG32QWsibIabyfl7ujt5/BaP5pMjt +bNSn+/yOAfnP+10mLnxCT0//YE6ruGtAVcRR0dNDkLPB4dn6JlVthxdH B8/L+oVRUdLj5zd581g5tLQ3rOUZ1NvJhOsgIkidvovL/e5FjD2VYj4+v GFlHU//iYp28oem0q7vIF+EAAX+vOuXw5i09pt9JWNwvIGY1hK4xcfbtg ysPJNbNbIYphsx8ahGh1ufW8fMQ5+Xd8tejL7Gf23XjEO8aDdS+KAtp/3 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875192" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875192" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619588" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 6/7] mptcp: expose server_side attribute in MPTCP netlink events Date: Mon, 2 May 2022 13:52:36 -0700 Message-Id: <20220502205237.129297-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor This change records the 'server_side' attribute of MPTCP_EVENT_CREATED and MPTCP_EVENT_ESTABLISHED events to inform their recipient about the Client/Server role of the running MPTCP application. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/246 Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- include/uapi/linux/mptcp.h | 1 + net/mptcp/pm_netlink.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h index 9690efedb5fa..e41ea01a94bb 100644 --- a/include/uapi/linux/mptcp.h +++ b/include/uapi/linux/mptcp.h @@ -188,6 +188,7 @@ enum mptcp_event_attr { MPTCP_ATTR_IF_IDX, /* s32 */ MPTCP_ATTR_RESET_REASON,/* u32 */ MPTCP_ATTR_RESET_FLAGS, /* u32 */ + MPTCP_ATTR_SERVER_SIDE, /* u8 */ =20 __MPTCP_ATTR_AFTER_LAST }; diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index eeaa96bcae6c..a4430c576ce9 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1985,6 +1985,9 @@ static int mptcp_event_created(struct sk_buff *skb, if (err) return err; =20 + if (nla_put_u8(skb, MPTCP_ATTR_SERVER_SIDE, READ_ONCE(msk->pm.server_side= ))) + return -EMSGSIZE; + return mptcp_event_add_subflow(skb, ssk); } =20 --=20 2.36.0 From nobody Tue May 7 04:23:26 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4153222pis; Mon, 2 May 2022 13:52:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZIZY8F1pzW948pnrb0o1oTcVHsO9N7bw1I9wa9b0PwqpAiZWjaIlXzAmo9AABvlLIoKOs X-Received: by 2002:a63:5011:0:b0:3c1:e24a:e5ea with SMTP id e17-20020a635011000000b003c1e24ae5eamr9201266pgb.359.1651524775523; Mon, 02 May 2022 13:52:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651524775; cv=none; d=google.com; s=arc-20160816; b=SgR12zIEnaGTkNngsEs3RfnWK79ltDTT9MJ1CFN+fFkgXRXev3E2dDHc5RSblbl3s0 OoycN3Vyxye00bA3R58O1NQf1Uh8C7S7JXXfJOniDye96M/nRmEyhr3Nz8NmTpcWtKYL 32QjynrDgcgzhcHTzmrg0vvnWkm11eDvvW3v3/IYOEixdfroXwyQYrwG6fjXGnweQwOU ojpte6/qOoWg27cj11J4ofj2OgnaeR/hhB0/0SDiQSxPbPSQCCK4099wbtQCB8rVdgR5 Inf0B2ut5RIGuK6C/sjdXReCReqlxasRKWjhve96184TXPlWYwVAqZ73xouSrsEHVLNq KDUg== ARC-Message-Signature: i=1; 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:message-id :date:subject:cc:to:from:dkim-signature; bh=J7DGS7l03NjbecjqQDdP7OrhMQDOscxAH580g9HHQDA=; b=txXphjHGrbU6OgJ3c8owDw0QuluQxAA/a0OLUjp0D3mLFzrdqHdaTVIC0RIS/9y9/z G2YZaItK+6+Ne2MR1YOY9C7m2qxo62CrSQ0sgYcFZQa3bYc/JSzYo6fGj8kYu9hTgIAj cl4XeuIm0Q1dJW5riYCb4GPVEtwnzr+Bo8rhmCi/DUBzlZeOGfkJh0cEr20RzJTNVzpL js0FqdYTMXYMFDUkBiLIXHq3TCiChmL3k0US6g5B2Ixuyl+VRoeFNWn/EIeXzpRU0axs Ye3ytN1buvdBkrRapbj9o1YrPMjSjffWnhqMdqCO/9vejdv+fU7ZKMdl6n0v1sQT3kg4 02ZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IajvVgYP; spf=pass (google.com: domain of mptcp+bounces-5032-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5032-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id q17-20020a17090311d100b00153b2d16657si10404108plh.607.2022.05.02.13.52.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 May 2022 13:52:55 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5032-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=IajvVgYP; spf=pass (google.com: domain of mptcp+bounces-5032-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5032-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com 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 sv.mirrors.kernel.org (Postfix) with ESMTPS id B5CA0280BD1 for ; Mon, 2 May 2022 20:52:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F22403212; Mon, 2 May 2022 20:52:49 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 01EDA3218 for ; Mon, 2 May 2022 20:52:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651524769; x=1683060769; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9ZNXtLvhcp5bF7tlcfkg+UESgvpjmFh340RfFxsO+X8=; b=IajvVgYPZlNlXb28hl/VqmEpiVuv2bqEfyFNaaLS3nirUczTo7mCKggQ Xy7uwTnZ2OfTehuBQUr9GGjqmN9o33NqpWrDGwcF0Td2/jbETHEcoOQME HqBwLN7nxFZHY6iWDjiVfHSioNAMoySZfeoX1BOFz/mKBrkyrq0AKfczS HEHvlKn6vY1wsfJkWvxgXATo/C+kxXxwrbp7kqV6U8EhBEDigurbLKTOu X3mdoYWoW0Lv3efY2pBv53fguuZcodihBdtItFkx0+xOwubr6KlxO4n2j KVP2ls4yKccNW27Zv2MXzSNtUNFRIHVyMrSS+yUBON3QPGzRUEJwqWj4h A==; X-IronPort-AV: E=McAfee;i="6400,9594,10335"; a="247875194" X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="247875194" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,193,1647327600"; d="scan'208";a="733619592" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.141.55]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2022 13:52:44 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Kishen Maloor , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 7/7] mptcp: allow ADD_ADDR reissuance by userspace PMs Date: Mon, 2 May 2022 13:52:37 -0700 Message-Id: <20220502205237.129297-8-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> References: <20220502205237.129297-1-mathew.j.martineau@linux.intel.com> 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: Kishen Maloor This change allows userspace PM implementations to reissue ADD_ADDR announcements (if necessary) based on their chosen policy. Acked-by: Paolo Abeni Signed-off-by: Kishen Maloor Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a4430c576ce9..98b205c2c101 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -369,8 +369,16 @@ static bool mptcp_pm_alloc_anno_list(struct mptcp_sock= *msk, =20 lockdep_assert_held(&msk->pm.lock); =20 - if (mptcp_lookup_anno_list_by_saddr(msk, &entry->addr)) - return false; + add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, &entry->addr); + + if (add_entry) { + if (mptcp_pm_is_kernel(msk)) + return false; + + sk_reset_timer(sk, &add_entry->add_timer, + jiffies + mptcp_get_add_addr_timeout(net)); + return true; + } =20 add_entry =3D kmalloc(sizeof(*add_entry), GFP_ATOMIC); if (!add_entry) --=20 2.36.0