From nobody Tue May 7 10:11:21 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:590e:0:0:0:0:0 with SMTP id n14csp2247398uad; Mon, 11 Jul 2022 12:16:44 -0700 (PDT) X-Google-Smtp-Source: AGRyM1u1P7WAyYX9e/KcSDIFcFLlWcbj4vxhZG08236hfgFadeb+ilFGEha3pVweULR+hixE2nB2 X-Received: by 2002:a17:90b:2243:b0:1f0:b0a:e40c with SMTP id hk3-20020a17090b224300b001f00b0ae40cmr17498440pjb.76.1657567004044; Mon, 11 Jul 2022 12:16:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657567004; cv=none; d=google.com; s=arc-20160816; b=CHwSQ8SjzSZgld2Ond7kERg3IHPLekxOJuF5i16xmEYMelNuwrhxjVm784E0A0kAJr ofchLHvQBZnWs1m43p8+uzRR+tfiCFM5v4MgQIZSkFMKF/CMR0lxCFXMsbTGMrFBCE3d r9NaHTZ+zrBh6clZbfDUn+CnrrSl63J5f0Sn8AVEDripKgcGri7J0Dvhgx8/GdqzUCl2 h2IrUqqZzhBRJnCsfF+ZbDLhP8poVCv2My7AnUxjzz6IDvL6a93U4reEx+anI/LaQGn6 BTW6fA5WrnxYwRAwByV6EJpli6Mjmyy+G73g/aNCAwCXrElMGCjZObhXU0zOQc3DU3w5 POIA== 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=rZCIhX8AVLI7z7DiH/UCi8Q7Fz3cSSj6jJlg3GKtdCg=; b=jlaOetiKFSq+er03X5st+Yk3nFRdYyCICUVhrkdyE18WBxITHCatY5Ze6/fIfbkpr/ BL5VJLcf9vz2ZW0DLhXKg3jnYIS1z4TXQMV1etyn6VqFytADhNemyVqKw7Rh2WidvEjg mYW1aNfz8dy/e1ua6bxaXTYW8n0PUygamdqwq5qg0urWb1/OSza17N3JQNe1YZJ1mjU7 HxVCxIT0fd+LfmUzjbXGmMGv6fKcdA96JYVh4M2PC/hqrAB0s6muavHDAfQl63rMFpgo /PeB94f6fRKKSouEbKeoAccExo9tRjUJgLQbi84/J+Qp4QyFvIb21iGqmPsucIOUmxL2 9cSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=d7LrO1+c; spf=pass (google.com: domain of mptcp+bounces-6007-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6007-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 l8-20020a63da48000000b004128ed0ebefsi11370337pgj.867.2022.07.11.12.16.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Jul 2022 12:16:44 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6007-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=d7LrO1+c; spf=pass (google.com: domain of mptcp+bounces-6007-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6007-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 8DB34280C4C for ; Mon, 11 Jul 2022 19:16:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A63DE469A; Mon, 11 Jul 2022 19:16:41 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 198B44692 for ; Mon, 11 Jul 2022 19:16:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657567000; x=1689103000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t7KH8qBXV+0o1mxMLu306DNdEfP6w1tkeWJrivYbd+8=; b=d7LrO1+c7mNxZUA9HM5uRH4QE3ca7ZWGGkgPQTLsLWH2mCF5jcSaSm1g qDDTUsi/WYeLuIs4wW7tPuXLWnDYWnil2hzckkamuS38e/I4zPPr8P4+p qK/mChdQhdETS+WS8o+ZilISIu1/KaX4E4+suhMmlGNcy11mT3TQyqnII fXSWaYC9WR0TNCP74N8UH3hw42F4hyIvkSP/E/GH66qrUvkqmV/x7fn/t cZxqKW/XoHEhSqe4hAr7zk1IPemXw8LpZILFvwFMclyhsMOWDAzCz2bIY HF567GV6+6ByVp4vq2BpJ6OwyOeY1BSQWeSIPC4IYXuea5oU8k4qFWJnW g==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="284775354" X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="284775354" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:38 -0700 X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="697742711" Received: from eedeets-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.2.111]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:38 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 1/5] mptcp: introduce and use mptcp_pm_send_ack() Date: Mon, 11 Jul 2022 12:16:29 -0700 Message-Id: <20220711191633.80826-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711191633.80826-1-mathew.j.martineau@linux.intel.com> References: <20220711191633.80826-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: Paolo Abeni The in-kernel PM has a bit of duplicate code related to ack generation. Create a new helper factoring out the PM-specific needs and use it in a couple of places. As a bonus, mptcp_subflow_send_ack() is not used anymore outside its own compilation unit and can become static. Reviewed-by: Mat Martineau Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 56 +++++++++++++++++++++++++----------------- net/mptcp/protocol.c | 2 +- net/mptcp/protocol.h | 1 - 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 5bdb559d5242..8e1d3aec94da 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -463,6 +463,37 @@ static unsigned int fill_remote_addresses_vec(struct m= ptcp_sock *msk, bool fullm return i; } =20 +static void __mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subfl= ow_context *subflow, + bool prio, bool backup) +{ + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + bool slow; + + pr_debug("send ack for %s", + prio ? "mp_prio" : (mptcp_pm_should_add_signal(msk) ? "add_addr" : "rm_= addr")); + + slow =3D lock_sock_fast(ssk); + if (prio) { + if (subflow->backup !=3D backup) + msk->last_snd =3D NULL; + + subflow->send_mp_prio =3D 1; + subflow->backup =3D backup; + subflow->request_bkup =3D backup; + } + + __mptcp_subflow_send_ack(ssk); + unlock_sock_fast(ssk, slow); +} + +static void mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow= _context *subflow, + bool prio, bool backup) +{ + spin_unlock_bh(&msk->pm.lock); + __mptcp_pm_send_ack(msk, subflow, prio, backup); + spin_lock_bh(&msk->pm.lock); +} + static struct mptcp_pm_addr_entry * __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id) { @@ -705,16 +736,8 @@ void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk) return; =20 subflow =3D list_first_entry_or_null(&msk->conn_list, typeof(*subflow), n= ode); - if (subflow) { - struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); - - spin_unlock_bh(&msk->pm.lock); - pr_debug("send ack for %s", - mptcp_pm_should_add_signal(msk) ? "add_addr" : "rm_addr"); - - mptcp_subflow_send_ack(ssk); - spin_lock_bh(&msk->pm.lock); - } + if (subflow) + mptcp_pm_send_ack(msk, subflow, false, false); } =20 int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk, @@ -729,7 +752,6 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk, mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct mptcp_addr_info local, remote; - bool slow; =20 local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) @@ -741,17 +763,7 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *ms= k, continue; } =20 - slow =3D lock_sock_fast(ssk); - if (subflow->backup !=3D bkup) - msk->last_snd =3D NULL; - subflow->backup =3D bkup; - subflow->send_mp_prio =3D 1; - subflow->request_bkup =3D bkup; - - pr_debug("send ack for mp_prio"); - __mptcp_subflow_send_ack(ssk); - unlock_sock_fast(ssk, slow); - + __mptcp_pm_send_ack(msk, subflow, true, bkup); return 0; } =20 diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 2caad4a3adea..6cf5fa191b12 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -508,7 +508,7 @@ void __mptcp_subflow_send_ack(struct sock *ssk) tcp_send_ack(ssk); } =20 -void mptcp_subflow_send_ack(struct sock *ssk) +static void mptcp_subflow_send_ack(struct sock *ssk) { bool slow; =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 07871e10e510..e38b861263ce 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -607,7 +607,6 @@ void mptcp_subflow_shutdown(struct sock *sk, struct soc= k *ssk, int how); void mptcp_close_ssk(struct sock *sk, struct sock *ssk, struct mptcp_subflow_context *subflow); void __mptcp_subflow_send_ack(struct sock *ssk); -void mptcp_subflow_send_ack(struct sock *ssk); void mptcp_subflow_reset(struct sock *ssk); void mptcp_subflow_queue_clean(struct sock *ssk); void mptcp_sock_graft(struct sock *sk, struct socket *parent); --=20 2.37.0 From nobody Tue May 7 10:11:21 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:590e:0:0:0:0:0 with SMTP id n14csp2247407uad; Mon, 11 Jul 2022 12:16:45 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sQ44EFN1geMGnFVPmG7+csmjfSOSyjCoEd3crj/qqoBz2sQ17h3BL0VRkBtQrX6tuiVjM/ X-Received: by 2002:a05:6a00:8cb:b0:510:9ec4:8f85 with SMTP id s11-20020a056a0008cb00b005109ec48f85mr19552025pfu.24.1657567005333; Mon, 11 Jul 2022 12:16:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657567005; cv=none; d=google.com; s=arc-20160816; b=Brktaix+N6tyNRd+gl55xDecBw2nQIjh8M7HxNdLY0XpxXBbQe+wFWJeJrMPkN5gJ3 cJsqhyKqsqAvXyLX6I+4AodqrhRwIwjIEMqo58gAfNzTJc4DKyIWrL6cDNDfPOhTNPpa D47qZ6LUE61GHwRJgZr/XIMgVLi48lH4AIYbcc+jaO9ydEfc0k4bcn5rwstyv135d5lf CJI5AOZ4Hhs+NEVecYpmhXrqCprSzGeKvoxBk5vL1LoQoHxT/+28J+e9/x3927qw2O4u c1eX4hLQZoF/1XFL9NBexCgcERt22lOggRLgwJQsGvKeVRyNFuj65N+NHaonYDjDlSgc V3Gw== 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=Ck70EI5v6GJ0Jz22QWgK9xF1ymLBdmHj/R2sZcgOZpQ=; b=scEWRAisiWYNTE0vV3hlMQWGCnKomQd1N+3YoSjMA16XJQrRj+uyAZRa3KcFZzd77h PspyKfg5CQcteSQthwovle6jHjP+ZQldnorOwjY5e7X/eAPNgWz5wAIcmuTiO130WYE/ 8Js5NyMYSkuXG8BeJLWQ2IWtaV0ndvOYn+DrE0kAj0SugPyaSqK+vcJfyL8uQAGZLh0h lBJKsaFobPHFjZG0oP6ZSLmtZZ0ATRhAj+mLQPE4l6bsBtP1sEM0SwYEqlQ9nsRcl+3N rz2RdxFU9MSEsMTSfs2w6JLmYvabSVtYadoh8zhqq9Ic54lDqtGXPl/bNZlo2/7wbBpN Yozw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=hACmbz3m; spf=pass (google.com: domain of mptcp+bounces-6008-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6008-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 g4-20020a170902868400b0016bdcb8fbd3si10161876plo.78.2022.07.11.12.16.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Jul 2022 12:16:45 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6008-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=hACmbz3m; spf=pass (google.com: domain of mptcp+bounces-6008-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6008-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 B4F55280C61 for ; Mon, 11 Jul 2022 19:16:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 92247469B; Mon, 11 Jul 2022 19:16:42 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 D961F4695 for ; Mon, 11 Jul 2022 19:16:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657567000; x=1689103000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=joQ6Vbeab6laBXOOHJaDUI2swEi5kjt7lAQTHBmWF1s=; b=hACmbz3mWI5m19nYe4J98QqRZZMSpLCbiGCsitArfug04xOjZ7rR4dA7 G3wPQLAIaKgInVZn4LW/HVoMjEyWmL27HdQLOWMJmS80NXL9Mf9yAFbHY ja3aSxOTpeg4YQTq241rHulHpvuphLppdpnWgNk+8ku4BwKflXLxXs4il kAiQuzCFRhpQ/PMKtyJPonwCmS50G/QebHBqBmziHmTIcUn1/26t3F1TU qhFvCZdu/KMH6hNBsMjkrc3Vkhuy3XJ1fvWShPRgIbY86q096s0QUlkoP rNG2C7kY8HdpCyTyBHPky+Bhrsn130reu7qjWDSORwWa3VUOL7v0+XNKR Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="284775355" X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="284775355" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="697742712" Received: from eedeets-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.2.111]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:38 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 2/5] mptcp: address lookup improvements Date: Mon, 11 Jul 2022 12:16:30 -0700 Message-Id: <20220711191633.80826-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711191633.80826-1-mathew.j.martineau@linux.intel.com> References: <20220711191633.80826-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: Paolo Abeni When looking-up a socket address in the endpoint list, we must prefer port-based matches over address only match. Ensure that port-based endpoints are listed first, using head insertion for them. Additionally be sure that only port-based endpoints carry a non zero port number. Reviewed-by: Mat Martineau Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 8e1d3aec94da..fe8e22aff7d2 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -413,7 +413,7 @@ static bool lookup_address_in_vec(const struct mptcp_ad= dr_info *addrs, unsigned int i; =20 for (i =3D 0; i < nr; i++) { - if (mptcp_addresses_equal(&addrs[i], addr, addr->port)) + if (addrs[i].id =3D=3D addr->id) return true; } =20 @@ -449,7 +449,8 @@ static unsigned int fill_remote_addresses_vec(struct mp= tcp_sock *msk, bool fullm mptcp_for_each_subflow(msk, subflow) { ssk =3D mptcp_subflow_tcp_sock(subflow); remote_address((struct sock_common *)ssk, &addrs[i]); - if (deny_id0 && mptcp_addresses_equal(&addrs[i], &remote, false)) + addrs[i].id =3D subflow->remote_id; + if (deny_id0 && !addrs[i].id) continue; =20 if (!lookup_address_in_vec(addrs, i, &addrs[i]) && @@ -919,10 +920,11 @@ static int mptcp_pm_nl_append_new_local_addr(struct p= m_nl_pernet *pernet, /* do not insert duplicate address, differentiate on port only * singled addresses */ + if (!address_use_port(entry)) + entry->addr.port =3D 0; list_for_each_entry(cur, &pernet->local_addr_list, list) { if (mptcp_addresses_equal(&cur->addr, &entry->addr, - address_use_port(entry) && - address_use_port(cur))) { + cur->addr.port || entry->addr.port)) { /* allow replacing the exiting endpoint only if such * endpoint is an implicit one and the user-space * did not provide an endpoint id @@ -968,7 +970,10 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm= _nl_pernet *pernet, } =20 pernet->addrs++; - list_add_tail_rcu(&entry->list, &pernet->local_addr_list); + if (!entry->addr.port) + list_add_tail_rcu(&entry->list, &pernet->local_addr_list); + else + list_add_rcu(&entry->list, &pernet->local_addr_list); ret =3D entry->addr.id; =20 out: --=20 2.37.0 From nobody Tue May 7 10:11:21 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:590e:0:0:0:0:0 with SMTP id n14csp2247418uad; Mon, 11 Jul 2022 12:16:46 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vRTupTydwxozuhys/B5g9nWwTn8xM45hNTk2OXRz0T0cNOWQc2coSlRHUhBr6gr3NTFPn/ X-Received: by 2002:a17:90b:4d01:b0:1ef:d39b:b140 with SMTP id mw1-20020a17090b4d0100b001efd39bb140mr19584919pjb.82.1657567006812; Mon, 11 Jul 2022 12:16:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657567006; cv=none; d=google.com; s=arc-20160816; b=ERVzEt+njCoAnDG3skXgktRcsEhWJcphXhU2jUqvEv16E2pebBxeqcfzLt1LNv1odU ssOhE3i0pCvZOk8DtolDdPZM+3iaQtA651sxqzfarBuHZL3tAYvgWLMRDJYNyx7krQt3 sXrhhTkaKnjqEXrahpBdDUiEvXdweCPCOnimpl2TRNX7Tuj9nK/Sf/MpThJRNFznFHxG e9kX416w7kxLSfTU2PPvq83USUc70Zgn0RS2ZGQ3m6MAPRJ6DRYKaGynCohKBZ4CJlVI AcrvvPKi74Fz2oOxTp73wFlmFnxI5AlDd4pQQV2Ce/Q5bJ0qFKSP2Ty2Ut9aEJXq7TOt dWcA== 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=E9TnCLX1V8A3R/uZ0Ml6mbS7CzGQdcTov7nHQ1TFLPc=; b=P28X8sOmE01ilNAonSddXe9gS2c3HkCsyCN3ggvC5DYMnssWYqaTHQAnopqoMWg5dd nwuRhz3iglKlHAZHFad4jSqaBhk43pmYxEVBb+PjfSwopKcdVjVJbtq/xWi67zV2iFkT smCs84FD1BgoHLxZ3lnm2DDHVhRlFlub7seNoMBoyvqssOZVVcj89c6ODx+wVH9SYmxV yy9sOSiEEirYUm6RedVhBjh8NF+NxU29DA7WfiNrl01346UVxkxxvaKB2GTWHafDy9lt XZefTOMqzeI/1iOm5InzALFqy8wBOhRf2qphBO8DxXQ740NfbRyJ3Irpa/wFfSSsZyaU rjHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HDvZ6VsR; spf=pass (google.com: domain of mptcp+bounces-6009-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6009-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 t26-20020a056a00139a00b0050605f7112bsi12313744pfg.130.2022.07.11.12.16.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Jul 2022 12:16:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6009-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=HDvZ6VsR; spf=pass (google.com: domain of mptcp+bounces-6009-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6009-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 EB3CA280C6D for ; Mon, 11 Jul 2022 19:16:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CFEA44C91; Mon, 11 Jul 2022 19:16:42 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 6BDA64696 for ; Mon, 11 Jul 2022 19:16:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657567001; x=1689103001; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NEiJvTKvSTMVTvV6Cif8kN1PwHk/e+jtjHvC50aicgs=; b=HDvZ6VsRdLpfGWGG384/5gcnkA6nYaFtKFGW5WkjCdXtaajM3xZWv7Ho i4PGH8W8lEG2QBr7buHjX2oidUxIc0O0ae7ngapQPULqYG+cdozM0D+PW vmNJjQVcC2RFd/dI560wuTf8IlICgQVlq4NyNBLiBCnpxBo2Gw46OXGuo gerliS812/dxsqhm0aZ3m/TA94gSa4qZXilaHpJa9VW8fUAk2r/D7sYyH JUCdrn0cd3t19sszOXfZric++GPiKXqh1ByV8cda7PshS2C/a1hXChfdh 11v2rvpRm3lriI3+QyddnyUaS8jWzqUJxoto7MoPakp+PLN/v7RupYAsB A==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="284775357" X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="284775357" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="697742714" Received: from eedeets-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.2.111]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 3/5] mptcp: allow the in kernel PM to set MPC subflow priority Date: Mon, 11 Jul 2022 12:16:31 -0700 Message-Id: <20220711191633.80826-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711191633.80826-1-mathew.j.martineau@linux.intel.com> References: <20220711191633.80826-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: Paolo Abeni Any local endpoints configured on the address matching the MPC subflow are currently ignored. Specifically, setting a backup flag on them has no effect on the first subflow, as the MPC handshake can't carry such info. This change refactors the MPC endpoint id accounting to additionally fetch the priority info from the relevant endpoint and eventually trigger the MP_PRIO handshake as needed. As a result, the MPC subflow now switches to backup priority after that the MPTCP socket is fully established, according to the local endpoint configuration. Reviewed-by: Mat Martineau Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index fe8e22aff7d2..b767a336ad98 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -514,30 +514,14 @@ __lookup_addr(struct pm_nl_pernet *pernet, const stru= ct mptcp_addr_info *info, struct mptcp_pm_addr_entry *entry; =20 list_for_each_entry(entry, &pernet->local_addr_list, list) { - if ((!lookup_by_id && mptcp_addresses_equal(&entry->addr, info, true)) || + if ((!lookup_by_id && + mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) || (lookup_by_id && entry->addr.id =3D=3D info->id)) return entry; } return NULL; } =20 -static int -lookup_id_by_addr(const struct pm_nl_pernet *pernet, const struct mptcp_ad= dr_info *addr) -{ - const struct mptcp_pm_addr_entry *entry; - int ret =3D -1; - - rcu_read_lock(); - list_for_each_entry(entry, &pernet->local_addr_list, list) { - if (mptcp_addresses_equal(&entry->addr, addr, entry->addr.port)) { - ret =3D entry->addr.id; - break; - } - } - rcu_read_unlock(); - return ret; -} - static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk) { struct sock *sk =3D (struct sock *)msk; @@ -555,13 +539,22 @@ static void mptcp_pm_create_subflow_or_signal_addr(st= ruct mptcp_sock *msk) =20 /* do lazy endpoint usage accounting for the MPC subflows */ if (unlikely(!(msk->pm.status & BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED))) &&= msk->first) { + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(msk->first); + struct mptcp_pm_addr_entry *entry; struct mptcp_addr_info mpc_addr; - int mpc_id; + bool backup =3D false; =20 local_address((struct sock_common *)msk->first, &mpc_addr); - mpc_id =3D lookup_id_by_addr(pernet, &mpc_addr); - if (mpc_id >=3D 0) - __clear_bit(mpc_id, msk->pm.id_avail_bitmap); + rcu_read_lock(); + entry =3D __lookup_addr(pernet, &mpc_addr, false); + if (entry) { + __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); + backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); + } + rcu_read_unlock(); + + if (backup) + mptcp_pm_send_ack(msk, subflow, true, backup); =20 msk->pm.status |=3D BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED); } --=20 2.37.0 From nobody Tue May 7 10:11:21 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:590e:0:0:0:0:0 with SMTP id n14csp2247424uad; Mon, 11 Jul 2022 12:16:47 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uO+/h2Wm6UX/EdBTP14l8T+HMhIy/gQs1KTJbr3zO6VPZWlxyPKNEFoAgB5hyVXKhAqnjP X-Received: by 2002:a63:d94a:0:b0:412:6986:326e with SMTP id e10-20020a63d94a000000b004126986326emr17801620pgj.56.1657567007595; Mon, 11 Jul 2022 12:16:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657567007; cv=none; d=google.com; s=arc-20160816; b=LaGFvHNn8/eeZHyKsjy0upBhMxPvrij48S/HcKcTqEhDC3+66LRfB4e4OgTh6NVJqL sdc7ZbkvgIVg7XWZf6JXFylbGJ/y9oNt/X44vc1j7KkIGDU9o2dV08twMEwF+1jbg712 LdveMinpn9q/Gowxmm46C1shqLxJLODiL6akj1xDvviY2BBjQptohlYDVxnyfMne8mfM /lNeF7saaIdHkqbsvd4D7FgSVpKafy8LQWCVasnnjfE+DmZBUELAZIeuP7DXro/Jb0x7 Rb9czz7kqJ1nZ0F+++WQVmFuw7fU+MJkdMcvnjPr2crD4/A5AXPL9pdBvJc5lY6z1Ue1 O9vg== 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=pO33vaqGYNfcax4Dobqu1pMqENTXnH/fV529gfUMZrg=; b=UJMw62mVajdffCzcDi8C+ihfph4WMqXrvrEMb4H059/7BcWbDuq8b0woxt4ma2z1UN Hmpl1+0ZGXfXSUTquZC8OFxyL8MV0wFYykkVtqodghwH7eVPUcYwrFTbMDTrh1yHLEoG 3UGBnW3syQ+1TXg7pZ9jZlkD6pTJ89SXvBaVUQXR5PZ1CV40C9xbl1I+dJJcMyTmZtzO Yhfjp5h5w12A4F1CI8aBclX6PFVyVn2slwyacrNNTeZPj5T45JXf6E99ioveVx/milXF vWLG2sXjHckWwLf0FumfHLd6OhsWahV4zEjRMdXDxM8vOZXUcc6lfYgu5xrLBYe4ZNXQ RKgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=lF5kOh1A; spf=pass (google.com: domain of mptcp+bounces-6010-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6010-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 s13-20020a17090302cd00b0016bc750fb61si12105376plk.190.2022.07.11.12.16.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Jul 2022 12:16:47 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6010-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=lF5kOh1A; spf=pass (google.com: domain of mptcp+bounces-6010-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-6010-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 3AC6B280C6F for ; Mon, 11 Jul 2022 19:16:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E2F5E4C94; Mon, 11 Jul 2022 19:16:42 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 B06234692 for ; Mon, 11 Jul 2022 19:16:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657567001; x=1689103001; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vO0zkgBW9XgcHpCVS57kml2KFt+CKWNlRoirYSa2RXQ=; b=lF5kOh1A/3naVOuHhDp+JvQQJC6Id9CIk3jrb0EPOHqY5xHDxBmY719p 5ZmmFOF+hwJfjjpOfBUJ6m+IBlPdkGeljhAJp3MNEO260Dz0kwverB2u6 a3WiK7Wu11z5YiFNpf0aqo/DuIRnQnuyouCNhJ0gnEStNWIACTn36cB2l GD2pKkY2qnwvsN2WdzahnjMBW2gDGAj/GOvVdD++9gTazefwBFcIOGuUQ yvwhVLHyYTsw5PS0My4xfRmCNykQKzveoYi1o1mpM9IFZEaYk2sJvx7Dl OTRO5CsY/XQxUAg4RWKX6n1oPBIP9lONMOZdKYPDdLFhO8rmjaVEwS5zn A==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="284775359" X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="284775359" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="697742716" Received: from eedeets-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.2.111]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 4/5] mptcp: more accurate MPC endpoint tracking Date: Mon, 11 Jul 2022 12:16:32 -0700 Message-Id: <20220711191633.80826-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711191633.80826-1-mathew.j.martineau@linux.intel.com> References: <20220711191633.80826-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: Paolo Abeni Currently the id accounting for the ID 0 subflow is not correct: at creation time we mark (correctly) as unavailable the endpoint id corresponding the MPC subflow source address, while at subflow removal time set as available the id 0. With this change we track explicitly the endpoint id corresponding to the MPC subflow so that we can mark it as available at removal time. Additionally this allow deleting the initial subflow via the NL PM specifying the corresponding endpoint id. Reviewed-by: Mat Martineau Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 21 ++++++++++++++------- net/mptcp/protocol.h | 1 + 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index b767a336ad98..291b5da42fdb 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -549,6 +549,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) entry =3D __lookup_addr(pernet, &mpc_addr, false); if (entry) { __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); + msk->mpc_endpoint_id =3D entry->addr.id; backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); } rcu_read_unlock(); @@ -764,6 +765,11 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *ms= k, return -EINVAL; } =20 +static bool mptcp_local_id_match(const struct mptcp_sock *msk, u8 local_id= , u8 id) +{ + return local_id =3D=3D id || (!local_id && msk->mpc_endpoint_id =3D=3D id= ); +} + static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_list, enum linux_mptcp_mib_field rm_type) @@ -787,6 +793,7 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, return; =20 for (i =3D 0; i < rm_list->nr; i++) { + u8 rm_id =3D rm_list->ids[i]; bool removed =3D false; =20 list_for_each_entry_safe(subflow, tmp, &msk->conn_list, node) { @@ -794,15 +801,15 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mpt= cp_sock *msk, int how =3D RCV_SHUTDOWN | SEND_SHUTDOWN; u8 id =3D subflow->local_id; =20 - if (rm_type =3D=3D MPTCP_MIB_RMADDR) - id =3D subflow->remote_id; - - if (rm_list->ids[i] !=3D id) + if (rm_type =3D=3D MPTCP_MIB_RMADDR && subflow->remote_id !=3D rm_id) + continue; + if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW && !mptcp_local_id_match(msk, id= , rm_id)) continue; =20 - pr_debug(" -> %s rm_list_ids[%d]=3D%u local_id=3D%u remote_id=3D%u", + pr_debug(" -> %s rm_list_ids[%d]=3D%u local_id=3D%u remote_id=3D%u mpc_= id=3D%u", rm_type =3D=3D MPTCP_MIB_RMADDR ? "address" : "subflow", - i, rm_list->ids[i], subflow->local_id, subflow->remote_id); + i, rm_id, subflow->local_id, subflow->remote_id, + msk->mpc_endpoint_id); spin_unlock_bh(&msk->pm.lock); mptcp_subflow_shutdown(sk, ssk, how); =20 @@ -814,7 +821,7 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, __MPTCP_INC_STATS(sock_net(sk), rm_type); } if (rm_type =3D=3D MPTCP_MIB_RMSUBFLOW) - __set_bit(rm_list->ids[i], msk->pm.id_avail_bitmap); + __set_bit(rm_id ? rm_id : msk->mpc_endpoint_id, msk->pm.id_avail_bitmap= ); if (!removed) continue; =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index e38b861263ce..5d6043c16b09 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -282,6 +282,7 @@ struct mptcp_sock { bool use_64bit_ack; /* Set when we received a 64-bit DSN */ bool csum_enabled; bool allow_infinite_fallback; + u8 mpc_endpoint_id; u8 recvmsg_inq:1, cork:1, nodelay:1; --=20 2.37.0 From nobody Tue May 7 10:11:21 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:590e:0:0:0:0:0 with SMTP id n14csp2247439uad; Mon, 11 Jul 2022 12:16:48 -0700 (PDT) X-Google-Smtp-Source: AGRyM1ta8EnZMxpdMSgoGAbpYB9E5aTPpa33gAsyjkO1jFtWy+gFrqolIBshpDRTX20sty7ldi3s X-Received: by 2002:a63:2785:0:b0:413:655d:fb0 with SMTP id n127-20020a632785000000b00413655d0fb0mr17421091pgn.297.1657567008545; Mon, 11 Jul 2022 12:16:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657567008; cv=none; d=google.com; s=arc-20160816; b=hyk+NGV3kq6EH3+H+qxzAzqdAHkzmIwtj6YtocZm0f8uyhPyrjOqutkT+frGJvzGNM vszCj00REObOKXuyaDO4j3h5BUMzpnjCzqmS46b0X8RJ3wWtzyU+O0AY/BoCGfIAHgNP PrX4T6vA37qb6f4C6qq2jtSMNOlIP2E1uS1H3L80eeqwhKthCb5FRQXcguH1i2FbzoRZ G4j2KZ1PL4zcd2lO1GjLENsB+0YYITrNmzo8tEctyqqTQWYhhpx90Ll8cSyFCci9LCOG FsNm72Uu4f0W9VniiJfn3S9HpKv19tM49+lee9d2n9X4yL8qIgg32ohQKjNGw1NPyTnw P+xA== 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=R6tOsqVLJDH2metQqhc043nbi4VSq7LGfJPK2djYriA=; b=YWMZCbJJpyWQofTTJVSpn/RC3W2Lh/iQfR1GxAhPL6WEeu41H2/hY+HMkIpbv+hXLA W+9VVX1kkH0lf+XGVWHcqKnQd3H873+5QnI/urxJzVJI8Ao5Mt7PYL4khLg48yDJ8bCm XvM8kFc0xXMIVKbBIOYYLrWH5p5naW3IfRyYDUvZKy7LvEqqSAkF49XlvmxajS8zyJY4 ZGK+xnkcNgka3gh0SkjwpWhm4jLzFvqEGeYsKZyu8iyxmuiYmlRguMOuaMZleFZBb/IV y0IjxJiP+u6bJaEbZ4JwfF0t480Ps3HbsYjE3h7nGs6U16VmaxRGLwI8W0+xoJxFy2xg JuUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Rp0VCN43; spf=pass (google.com: domain of mptcp+bounces-6011-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-6011-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. [139.178.88.99]) by mx.google.com with ESMTPS id ls2-20020a17090b350200b001eff0ab1bbasi11595388pjb.132.2022.07.11.12.16.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Jul 2022 12:16:48 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-6011-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Rp0VCN43; spf=pass (google.com: domain of mptcp+bounces-6011-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-6011-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 3A583280C2A for ; Mon, 11 Jul 2022 19:16:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C12674C95; Mon, 11 Jul 2022 19:16:43 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 9BD7A4695 for ; Mon, 11 Jul 2022 19:16:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657567002; x=1689103002; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sX26Sc/Ae3nAyNsrp8P8AJWuFq/C3wjAC5FxQqFb5uw=; b=Rp0VCN43zKyanxJZ9QIjzsvRCPMuXjgkdKbjW0qMQLHq6mIJtNB4O2G3 EJj8Rqceid1VSau7rj0ejAkmp9vghJLsOmBm8pzLt4fnRLx4RDqKM4xba Wsh6PWluViU0Dg1wk2Kw53IhqaxyJPg72dgDnKxr08sMywLt2W5pFDozl MgKapoYiGyNOD15unnBoHSqi3PvbJVwNp1sdCURj1dBHAkvbKwTpYCkkJ DyawKjVnF1rnDeB1Orf3uDSEsfb6QRozSLC4+3E0ZzjGnrWWqI0qOaYXs j/OCCnPaWRZhkG7VtgP+Q3R3XUvd51za0+Ig6Az1NP3cUkik35txFlhIW w==; X-IronPort-AV: E=McAfee;i="6400,9594,10405"; a="284775362" X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="284775362" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:40 -0700 X-IronPort-AV: E=Sophos;i="5.92,263,1650956400"; d="scan'208";a="697742717" Received: from eedeets-mobl1.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.2.111]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2022 12:16:39 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, edumazet@google.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 5/5] selftests: mptcp: add MPC backup tests Date: Mon, 11 Jul 2022 12:16:33 -0700 Message-Id: <20220711191633.80826-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.37.0 In-Reply-To: <20220711191633.80826-1-mathew.j.martineau@linux.intel.com> References: <20220711191633.80826-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: Paolo Abeni Add a couple of test-cases covering the newly introduced features - priority update for the MPC subflow. Reviewed-by: Mat Martineau Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55efe2aafb84..ff83ef426df5 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2428,6 +2428,36 @@ backup_tests() chk_add_nr 1 1 chk_prio_nr 1 1 fi + + if reset "mpc backup"; then + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,backup + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr 0 0 0 + chk_prio_nr 0 1 + fi + + if reset "mpc backup both sides"; then + pm_nl_add_endpoint $ns1 10.0.1.1 flags subflow,backup + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,backup + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr 0 0 0 + chk_prio_nr 1 1 + fi + + if reset "mpc switch to backup"; then + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr 0 0 0 + chk_prio_nr 0 1 + fi + + if reset "mpc switch to backup both sides"; then + pm_nl_add_endpoint $ns1 10.0.1.1 flags subflow + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr 0 0 0 + chk_prio_nr 1 1 + fi } =20 add_addr_ports_tests() --=20 2.37.0