From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415678piq; Fri, 8 Apr 2022 12:46:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZgPUJ+m949uc0f0ACKsOSfsqjZksR5r6ljo7lTyzrZ694qAD8Oa/wix+Mak0mtAoLL8XL X-Received: by 2002:a17:907:d2a:b0:6df:8b4b:2b3b with SMTP id gn42-20020a1709070d2a00b006df8b4b2b3bmr19557143ejc.575.1649447175028; Fri, 08 Apr 2022 12:46:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447175; cv=none; d=google.com; s=arc-20160816; b=SuEWbesOAfe5qu0MCnkiDT/7GKNJFkuB3u0W69S5cDQ7SrLpyJSliE0M+fVzizuzBu RADU/ej1olaUiwlaS8e1uqyvA+h6CxdehtkWHcZSAk/l5qy4AwKppMd54fBlhhyBLSO3 aL3tKYIsHwEVWUqrSkbummlTxu3N031wY/28nH9FyFMMymAupzg40iJ2hdhsFY/Izftq ngHqC7tE+b0z00gfpoEY/wvPlpHbcNE9UOH8qtA7ipZZiO08oZJctFSD/jBb9O/MLNap LvIcp62sZyfKO3oCs7ONny5z0Xu8oliq3B7tpADFxTlDEKePlp3wjFksZNeMNfrSMI4/ S93Q== 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=Z4VY6LXQHdPP8n+9yiNmwaBbVMjWPniNoD1S20iYJoM=; b=L194Tz42hCZJbFOE8SCNYBHqVpbuiTyHVIYyiGgZPbkwzgQRzUQFSsX6oFIY/x7XVe 2TIz3g783aDoObPslqdLu61XBElD5tCiLMGVTPrYpbpQ4fOPVyg1gb8NWMv0dwSzdirS cvkXEoHKk5VPVx1GdXQsUo+r70eYjO88XFh8hZIRecgkBE1Mp1mdjuyJ0IkT0RLMsdtC Npeph2y5uHXTJ9oLtvmh3Xfo+DghetA1nRh/bc6L80VKwRGR3TqLZueeEwKacy489dd1 Yq4vZCsR6gZ1h79SvHxhg7Y1os/ZJerGTN3KWrPIiRvnokoLgzmcHlNxupgV805hFepA 26mQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GLLwRNX0; spf=pass (google.com: domain of mptcp+bounces-4686-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4686-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id d14-20020a170906c20e00b006df76385f01si1526175ejz.929.2022.04.08.12.46.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:15 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4686-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GLLwRNX0; spf=pass (google.com: domain of mptcp+bounces-4686-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4686-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 ewr.edge.kernel.org (Postfix) with ESMTPS id B7AE31C03E1 for ; Fri, 8 Apr 2022 19:46:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 876B42C80; Fri, 8 Apr 2022 19:46:12 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 3128C2CA1 for ; Fri, 8 Apr 2022 19:46:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447171; x=1680983171; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zdAkC0JYrW2Pdheuu2gZ1bu45Lzie2GfL/O91yGB45o=; b=GLLwRNX0/jfvLVptDdti4FshE0XGxNmdh+R7Lz0QuHPLwYqo7qD6Dr0b x4PogMkQo+AKi5LQdNAB9ICnDeF1kYy1L6vHxpKfwF2g+vKpn73WuSn/d WfgG80HbLihBTz+1/wGGPEsbEcwFGVxgL8IskNV+SjdOusMUxohoxE6jw rsuOiFNjJ5M2ztbAtJXcDQ1D4EW2/JqI5xyM+0NiJVP9MqR2SGEIkEiZT 7bkEWHZM2CcqmAg90wZ/SsVAcDCar7FO+xqbkO3/vEiTJUvEM1Ky/Ldnb CxuxftDxzI73NV+QN/Y7kl0xI6GMhZKd4tEtJx4UsicMnFPT4ZT+ld+lC w==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365294" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365294" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602147" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:07 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 1/8] mptcp: optimize release_cb for the common case Date: Fri, 8 Apr 2022 12:45:54 -0700 Message-Id: <20220408194601.305969-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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 mptcp release callback checks several flags in atomic context, but only MPTCP_CLEAN_UNA can be up frequently. Reorganize the code to avoid multiple conditionals in the most common scenarios. Additional clarify a related comment. Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/protocol.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 0cbea3b6d0a4..2a9335ce5df1 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3092,15 +3092,17 @@ static void mptcp_release_cb(struct sock *sk) spin_lock_bh(&sk->sk_lock.slock); } =20 - /* be sure to set the current sk state before tacking actions - * depending on sk_state - */ - if (__test_and_clear_bit(MPTCP_CONNECTED, &msk->cb_flags)) - __mptcp_set_connected(sk); if (__test_and_clear_bit(MPTCP_CLEAN_UNA, &msk->cb_flags)) __mptcp_clean_una_wakeup(sk); - if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags)) - __mptcp_error_report(sk); + if (unlikely(&msk->cb_flags)) { + /* be sure to set the current sk state before tacking actions + * depending on sk_state, that is processing MPTCP_ERROR_REPORT + */ + if (__test_and_clear_bit(MPTCP_CONNECTED, &msk->cb_flags)) + __mptcp_set_connected(sk); + if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags)) + __mptcp_error_report(sk); + } =20 __mptcp_update_rmem(sk); } --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415701piq; Fri, 8 Apr 2022 12:46:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytZx7JpgxRnxK++8rX2/9eJXVRVDvnBzA73axVtm49HbHjpvtXIk6YcIdFn9i1Kaz0UmX8 X-Received: by 2002:a05:6402:254b:b0:419:49af:429c with SMTP id l11-20020a056402254b00b0041949af429cmr21548300edb.276.1649447179124; Fri, 08 Apr 2022 12:46:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447179; cv=none; d=google.com; s=arc-20160816; b=e4IJl6K/hrL4gM5IKmt3tICV2Ylq0JkvUdCrBC/KF0gRisnGvOqCH5sgn+rXy6x/7G 98mFBjKnRLDPueJvUATO9GTJ9MXfMRUrkNaJ3awHI3W/vriXhR1rREmTpWH2XdNZKemJ 84VVvQWDGAivplhJRoPJG+KuYkSmld2lp2yqxs0+UssuawyxwbSL2xx9Bq664aD5m9pQ frarGqgVkapqMa0UJOtbtv+PplLx5YJioLDPSesaDnvnnFnrlpRMjp6hQBw0m/6ow3vb hLgjepXKBEQMzfDvmOo8N8CSP3B2uwcoWWp0usciCGmkpAFj4nDvBY9BjE8ogw/Z1rhD OiGQ== 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=ZINaSoAU9V/HjHNs3A0tTsIc8cBMfvgKhTmog7n8NdQ=; b=hy2NHvUFkmGBRi4hEtYtvBSEFRwhG8QwMft/jOXaR7MVjlYJgcXgFymNbj4vfKX3/O qKdFlwWx+EUgNic7sk/LBMeTmolJUsHrTaK7syAbdifOfLmLAoQOXo289dVFYH3OJU7C VSwNH+ug6Ik4IPkzmQsgG0RlM8UtiLIYCR7t4tjNRhG6cFqAq2vNnldoFlK+Q562KaTV DZP0o83JKuxNZ6bvtAnXBF0YWBmNikgtN3g7Tq5Vf4jffxFJtGR3ix0r9IDdpd/EhygI nCowyXLPwEBkHR2U+PzGKYHaBHqzitKrpycDZ1CIYoKVl2nWMjnoY96s3snMRZ02KHmz Mrdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AJx4eG56; spf=pass (google.com: domain of mptcp+bounces-4689-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4689-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id r3-20020a50c003000000b00418c2b5bdecsi1390661edb.206.2022.04.08.12.46.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4689-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AJx4eG56; spf=pass (google.com: domain of mptcp+bounces-4689-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4689-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 ewr.edge.kernel.org (Postfix) with ESMTPS id 551311C0C4E for ; Fri, 8 Apr 2022 19:46:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E6EA62C80; Fri, 8 Apr 2022 19:46:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 CED9D2CA7 for ; Fri, 8 Apr 2022 19:46:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447173; x=1680983173; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Naww5WAF6j8utdrDnHxc3XOrwlWX7aHlT9VXi8XwnA4=; b=AJx4eG564ECJWTwn/xUlEmUdSCKum0lMfYK9aVVhpM2GOMfYvyxQDJnf 0t8SXyc9E5TfuwFbxox6u6klL+yMuSofoXHYhGrva35QxpPFoLewTpL/q JN3Ca5ewpMz+GQ0tRsaJKhCkXJancaasC1MWobbC0/Sm4SKNxP+1Yy9fW uEHgnWiK+ND03fhd7jIfz7+BymNLokb+7wJw6MJGSd9e27UV9aNmMQiRe iwPbBZpnAkxMF8cUtQd19A1ne9zuFdbIlRRl6ObVsGoQZOWqQxOtcOyQi B5efgCDatpOsPvRW8fqgF8rE/KA5qWzuxYl7XF8A5s9EHk9Sh+dIkdlEs w==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365297" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365297" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602152" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:08 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Davide Caratti , Mat Martineau Subject: [PATCH net-next 2/8] mptcp: reset the packet scheduler on incoming MP_PRIO Date: Fri, 8 Apr 2022 12:45:55 -0700 Message-Id: <20220408194601.305969-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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 an incoming MP_PRIO option changes the backup status of any subflow, we need to reset the packet scheduler status, or the next send could keep using the previously selected subflow, without taking in account the new priorities. Reported-by: Davide Caratti Fixes: 40453a5c61f4 ("mptcp: add the incoming MP_PRIO support") Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 19 +++++++++++++++---- net/mptcp/protocol.c | 2 ++ net/mptcp/protocol.h | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 01809eef29b4..8aa0cdb7ad46 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -262,14 +262,25 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, spin_unlock_bh(&pm->lock); } =20 -void mptcp_pm_mp_prio_received(struct sock *sk, u8 bkup) +void mptcp_pm_mp_prio_received(struct sock *ssk, u8 bkup) { - struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct sock *sk =3D subflow->conn; + struct mptcp_sock *msk; =20 pr_debug("subflow->backup=3D%d, bkup=3D%d\n", subflow->backup, bkup); - subflow->backup =3D bkup; + msk =3D mptcp_sk(sk); + if (subflow->backup !=3D bkup) { + subflow->backup =3D bkup; + mptcp_data_lock(sk); + if (!sock_owned_by_user(sk)) + msk->last_snd =3D NULL; + else + __set_bit(MPTCP_RESET_SCHEDULER, &msk->cb_flags); + mptcp_data_unlock(sk); + } =20 - mptcp_event(MPTCP_EVENT_SUB_PRIORITY, mptcp_sk(subflow->conn), sk, GFP_AT= OMIC); + mptcp_event(MPTCP_EVENT_SUB_PRIORITY, msk, ssk, GFP_ATOMIC); } =20 void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 2a9335ce5df1..8f54293c1d88 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3102,6 +3102,8 @@ static void mptcp_release_cb(struct sock *sk) __mptcp_set_connected(sk); if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags)) __mptcp_error_report(sk); + if (__test_and_clear_bit(MPTCP_RESET_SCHEDULER, &msk->cb_flags)) + msk->last_snd =3D NULL; } =20 __mptcp_update_rmem(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3c1a3036550f..aca1fb56523f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -124,6 +124,7 @@ #define MPTCP_RETRANSMIT 4 #define MPTCP_FLUSH_JOIN_LIST 5 #define MPTCP_CONNECTED 6 +#define MPTCP_RESET_SCHEDULER 7 =20 static inline bool before64(__u64 seq1, __u64 seq2) { --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415705piq; Fri, 8 Apr 2022 12:46:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzHicnfpFl5PAmhha+9lrq5fDhc60XHKtO1VAUnm+i234Yh2qhr3IQIx8VZSzZhV/bkiMnG X-Received: by 2002:a17:907:60d0:b0:6e8:3f85:4da0 with SMTP id hv16-20020a17090760d000b006e83f854da0mr8325474ejc.143.1649447179523; Fri, 08 Apr 2022 12:46:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447179; cv=none; d=google.com; s=arc-20160816; b=yaBZwltp9UKwKDVMxJwOE1KLF3141fvrLInNUK1DINvTI09rAdrSvS/moCEOWmYiLS wfmB0OawHv7iWMB6kU3qb45iSRjZH2rlq7T54mj8csZKD3oEuscFPStKxQCzBsd0o+2q 600GTKgikzDxIlX5YRldpFQ1k3Qm6ciOCc9FDm9RzgiPIsa8s41itHUnuvaieX/bir9s 8TbglmipKdhnQwduG8CvrhaREDiYDDdnOQyHalELO+gzqorCqdaqAFVyrDsQjMA0CnwY YdOSMGw5zhLHFJXVFqkVp+m1ALtdKFYL1L+lRRWwULJYMTXVqEanv0jiaNg3+JIo0qiD TAww== 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=A8zkU3Vtz2ZumMubvi7rxRyDCv1vlHkPkc+Ul8DRMKQ=; b=alBX1eXGt6jK0Ze0aIwQmW6ypZubDt1W1Yd4WfbXOR+nsb/LR47l0y0nT3kZdBEB54 rlthwXHMohY6qeaGvCtqW0WmRVQRFylvbxTS+boq42I21U63ODEmDOxhZZp9bb2oWOSh pWlcg8D2sC0ZVJoztSsqbyQz33mpeC20WkmKUD3InYej1Fpyj1J1/jrLKElZZVBGAwjd OIlTl2hSUR11ESH3pb1Z28uDl2g+kxwhPVS8+foJO6HegZskU5cIW3TThmHttawf20kB u584X0i6v2sredA3rpTUqpHT/6b1h3Qr2UQWd3AJGj6SCsDCzYqN6Ta9gwEvNAn3Utov A5mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kqkh7fJv; spf=pass (google.com: domain of mptcp+bounces-4690-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4690-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id lz15-20020a170906fb0f00b006e8634df8b9si1162358ejb.728.2022.04.08.12.46.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4690-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kqkh7fJv; spf=pass (google.com: domain of mptcp+bounces-4690-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4690-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 ewr.edge.kernel.org (Postfix) with ESMTPS id 979A31C0B5C for ; Fri, 8 Apr 2022 19:46:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 039DB2CA7; Fri, 8 Apr 2022 19:46:15 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 8A3F52CA5 for ; Fri, 8 Apr 2022 19:46:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447172; x=1680983172; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Rog/TReWZB7KzG+B5MlA9/Qw4RMiJg/AX7/ruffGZHM=; b=kqkh7fJvQU99FsPuDxG9+n2c1NjWC5hWtEuokQpEFQYVkeMTdLRq3oey AISDL4aq+5zpwIuBBh381U9r1rdTNsiwKI/mrCbzgnGjV7HMEXaLFzJUa C1Uhxery3hgspQdjfiIkR0jtD0a2+8RHTucLA/ewYysroLHCh7VyohJcM szMSkKj05T12eINUj0X6bHK+mLnQ7XVzHj2Rv/LekTGz7bW8Aa+pOoc1R +EALVadLJHY/hU8/AiuSoZggOvGhm1QP51UYIHs5Z+pdYg65zlz0qSMuW OkHBv2JlwPdioVpJ8U83Y8LDjhvgsDDfNaANDa2OScJ1VDK87cbiCXmfq Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365299" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365299" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602155" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:08 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Davide Caratti , Mat Martineau Subject: [PATCH net-next 3/8] mptcp: reset the packet scheduler on PRIO change Date: Fri, 8 Apr 2022 12:45:56 -0700 Message-Id: <20220408194601.305969-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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 Similar to the previous patch, for priority changes requested by the local PM. Reported-and-suggested-by: Davide Caratti Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index b5e8de6f7507..e3dcc5501579 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -727,6 +727,8 @@ static int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_so= ck *msk, if (!addresses_equal(&local, addr, addr->port)) continue; =20 + 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; --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415707piq; Fri, 8 Apr 2022 12:46:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLiaPx9KpV/Yms6/QFsEATPmtZgL6JLh3NQV7MCzrEty6ISF1+U8M+yYFg6lyztLdzOQW/ X-Received: by 2002:a17:907:6089:b0:6db:a3d7:3fa9 with SMTP id ht9-20020a170907608900b006dba3d73fa9mr20645722ejc.593.1649447180206; Fri, 08 Apr 2022 12:46:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447180; cv=none; d=google.com; s=arc-20160816; b=L4yKR66V7VzWskfzTHRHH4HkZS3cbDtUnNTTYl0BE+3ziHNQnm1zDHqaIsn2hLR47u Nko8gh+/C7wFJWGNnwA2tVuyxUyvWCueWeenMR5qiYdrTIRUhQyAynBrxB98Ky/S679h 4+Z+3UaluWBTvOIsarUvM8QrkAak28wcSomH3NJtOJTufGbZiI3F2U5uTxxRwSL6A5Zc x+guqLuVL1blvWQVlY1SqFxPPXeki86odiOwFeBnEqHBma/17Theuoxd1pRbhJeGIiFK yb7LWw6EW6mjEmmrssnIN2k5LwMP4ZV9UBR+meVDW88P4A6wfPSzeqQD7AupdKdoD0ct 0AgA== 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=mMn/cNdopNWsURNxb/S06d1Ub/vhMXgigGD9XXegPdI=; b=qkd01JuNy95iy3PNHqz/GEIESNmv0RLiAicwIZKDUkI3UKAOL41nTYX+vDvJWNodcm Hd5ZvUzUnkvqdXXtT/lBtv1trkqxNWRyjY+fhSwQLVHUrvKysRDp9T43NZDMyn+lLJM5 oaLXvgnyx6+uSf7rUIiLuBSm2XdIDS3dJU1WhXCAK9YKALVYCV6MpuI27KTycopzuIzm enHnx4/JEvZSwS4P1SBc8V+2vMMFSlL5cRMijx8Vgd8BzkuNoeq7pRa3oEVRAdyw4/+k em2CIH7JL+cB9MvJpEnX1jvf5jH+ehdjEcekpTFsRMEYD8K1W6zKCaEXFXpM3UyBbjZG CU9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Syr2jPTT; spf=pass (google.com: domain of mptcp+bounces-4691-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4691-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id lz15-20020a170906fb0f00b006e8634df8b9si1162358ejb.728.2022.04.08.12.46.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:20 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4691-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Syr2jPTT; spf=pass (google.com: domain of mptcp+bounces-4691-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4691-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 ewr.edge.kernel.org (Postfix) with ESMTPS id AC47A1C0CBD for ; Fri, 8 Apr 2022 19:46:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 17B2C2CA5; Fri, 8 Apr 2022 19:46:15 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 B14982CA2 for ; Fri, 8 Apr 2022 19:46:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447173; x=1680983173; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=A6/HcZMYr7wj1VttDcE9T6xhb2rGLh7zrqQJJHG02VE=; b=Syr2jPTTf2nT3C+ArD7ThRqjT6rBgfg6zer28RPB8WjtbZfgtTw2zOE4 7Hkt84knXnlcFO6ZfK7K9+UR4h4BI+8tmY5JifOipb+SVPPimh0vFsKAT HpKxGY9v8QmZKkD/IPIj35OARul5RdxxsTE80taoc6CQX/ceS2TcMRJYK xjIrJuXu5AS4cxvUT7WoPqrd8iK6au3wrZ2lQhB2cDW6j5PRomMtMVLwk y3sh1CJM3P2AF+5B2DwKxqFZXHj5I6WOgbT52pBUncs49tmIObklAClhP 2mr3OqPniMv+hQvZlNU0Si4jGeXBo9Ei0gFbJCl8cw9Iyz5/GWIsI2bkz w==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365301" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365301" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602158" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Geliang Tang , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Florian Westphal , Mat Martineau Subject: [PATCH net-next 4/8] mptcp: add pm_nl_pernet helpers Date: Fri, 8 Apr 2022 12:45:57 -0700 Message-Id: <20220408194601.305969-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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: Geliang Tang This patch adds two pm_nl_pernet related helpers, named pm_nl_get_pernet() and pm_nl_get_pernet_from_msk() to get pm_nl_pernet from 'net' or 'msk'. Use these helpers instead of using net_generic() directly. Suggested-by: Florian Westphal Signed-off-by: Geliang Tang Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index e3dcc5501579..c20261b612e9 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -55,6 +55,17 @@ struct pm_nl_pernet { #define MPTCP_PM_ADDR_MAX 8 #define ADD_ADDR_RETRANS_MAX 3 =20 +static struct pm_nl_pernet *pm_nl_get_pernet(const struct net *net) +{ + return net_generic(net, pm_nl_pernet_id); +} + +static struct pm_nl_pernet * +pm_nl_get_pernet_from_msk(const struct mptcp_sock *msk) +{ + return pm_nl_get_pernet(sock_net((struct sock *)msk)); +} + static bool addresses_equal(const struct mptcp_addr_info *a, const struct mptcp_addr_info *b, bool use_port) { @@ -206,43 +217,39 @@ select_signal_address(struct pm_nl_pernet *pernet, co= nst struct mptcp_sock *msk) =20 unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk) { - const struct pm_nl_pernet *pernet; + const struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); =20 - pernet =3D net_generic(sock_net((const struct sock *)msk), pm_nl_pernet_i= d); return READ_ONCE(pernet->add_addr_signal_max); } EXPORT_SYMBOL_GPL(mptcp_pm_get_add_addr_signal_max); =20 unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk) { - struct pm_nl_pernet *pernet; + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); =20 - pernet =3D net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); return READ_ONCE(pernet->add_addr_accept_max); } EXPORT_SYMBOL_GPL(mptcp_pm_get_add_addr_accept_max); =20 unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk) { - struct pm_nl_pernet *pernet; + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); =20 - pernet =3D net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); return READ_ONCE(pernet->subflows_max); } EXPORT_SYMBOL_GPL(mptcp_pm_get_subflows_max); =20 unsigned int mptcp_pm_get_local_addr_max(const struct mptcp_sock *msk) { - struct pm_nl_pernet *pernet; + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); =20 - pernet =3D net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); return READ_ONCE(pernet->local_addr_max); } EXPORT_SYMBOL_GPL(mptcp_pm_get_local_addr_max); =20 bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk) { - struct pm_nl_pernet *pernet =3D net_generic(sock_net((struct sock *)msk),= pm_nl_pernet_id); + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); =20 if (msk->pm.subflows =3D=3D mptcp_pm_get_subflows_max(msk) || (find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap, @@ -508,7 +515,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) struct pm_nl_pernet *pernet; unsigned int subflows_max; =20 - pernet =3D net_generic(sock_net(sk), pm_nl_pernet_id); + pernet =3D pm_nl_get_pernet(sock_net(sk)); =20 add_addr_signal_max =3D mptcp_pm_get_add_addr_signal_max(msk); local_addr_max =3D mptcp_pm_get_local_addr_max(msk); @@ -604,7 +611,7 @@ static unsigned int fill_local_addresses_vec(struct mpt= cp_sock *msk, unsigned int subflows_max; int i =3D 0; =20 - pernet =3D net_generic(sock_net(sk), pm_nl_pernet_id); + pernet =3D pm_nl_get_pernet_from_msk(msk); subflows_max =3D mptcp_pm_get_subflows_max(msk); =20 rcu_read_lock(); @@ -1023,7 +1030,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct sock_common *skc) if (addresses_equal(&msk_local, &skc_local, false)) return 0; =20 - pernet =3D net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); + pernet =3D pm_nl_get_pernet_from_msk(msk); =20 rcu_read_lock(); list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { @@ -1214,7 +1221,7 @@ static int mptcp_pm_parse_addr(struct nlattr *attr, s= truct genl_info *info, =20 static struct pm_nl_pernet *genl_info_pm_nl(struct genl_info *info) { - return net_generic(genl_info_net(info), pm_nl_pernet_id); + return pm_nl_get_pernet(genl_info_net(info)); } =20 static int mptcp_nl_add_subflow_or_signal_addr(struct net *net) @@ -1308,7 +1315,7 @@ int mptcp_pm_get_flags_and_ifindex_by_id(struct net *= net, unsigned int id, =20 if (id) { rcu_read_lock(); - entry =3D __lookup_addr_by_id(net_generic(net, pm_nl_pernet_id), id); + entry =3D __lookup_addr_by_id(pm_nl_get_pernet(net), id); if (entry) { *flags =3D entry->flags; *ifindex =3D entry->ifindex; @@ -1655,7 +1662,7 @@ static int mptcp_nl_cmd_dump_addrs(struct sk_buff *ms= g, void *hdr; int i; =20 - pernet =3D net_generic(net, pm_nl_pernet_id); + pernet =3D pm_nl_get_pernet(net); =20 spin_lock_bh(&pernet->lock); for (i =3D id; i < MPTCP_PM_MAX_ADDR_ID + 1; i++) { @@ -2167,7 +2174,7 @@ static struct genl_family mptcp_genl_family __ro_afte= r_init =3D { =20 static int __net_init pm_nl_init_net(struct net *net) { - struct pm_nl_pernet *pernet =3D net_generic(net, pm_nl_pernet_id); + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet(net); =20 INIT_LIST_HEAD_RCU(&pernet->local_addr_list); =20 @@ -2189,7 +2196,7 @@ static void __net_exit pm_nl_exit_net(struct list_hea= d *net_list) struct net *net; =20 list_for_each_entry(net, net_list, exit_list) { - struct pm_nl_pernet *pernet =3D net_generic(net, pm_nl_pernet_id); + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet(net); =20 /* net is removed from namespace list, can't race with * other modifiers, also netns core already waited for a --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415680piq; Fri, 8 Apr 2022 12:46:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzopnP/VqElMRIiMN4MWG2ERKUd6dxmw9S4pH7dhlEPHpdL+Y8FS5f9tl4rX45kth89nvxQ X-Received: by 2002:a17:902:ab81:b0:156:96c5:bd9c with SMTP id f1-20020a170902ab8100b0015696c5bd9cmr21156025plr.89.1649447175122; Fri, 08 Apr 2022 12:46:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447175; cv=none; d=google.com; s=arc-20160816; b=O4b8Wtss0yaiCq3qp9dGrspJnmr6/i97ZzgIebGszwB6HPT+wWwyqAGZ1tYGeXSv1x I1Mjy5eBL/b3Zh/aTXJ127DtM+bt/hReB2U8NUnyM66rltyavy5uBC5S7UUJGYxvga4R FEIPK5PSyqkfBt+fzGIjFiFV1/wIpDPcbkDHFOIIeVP06fEyGIKbtO18USs1vSklbYTN yCXLNy8YMKuLf8o5PAH9PkWvTHkWWLGAZ68OGMeypzL4a4MqcxdVS5BdrrAqQiZSh3Qr ri4jT+7CQxECoO+ijj4Kxlil9R9ahsKUbajHm4KB0TVU4aItpWskUhms4wkkH8WyCD4N 9o1w== 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=yZwMxX8uUMQCKA3Flxb7d6BgB7Ew2vLiCC4n+WojzNA=; b=ScSZIP37yjM0N7IKqf9OyzBKnmszZPtORSMCCzW48SlwDfRK+rJOfwyl34g1zfx6I/ 8Vdz/b6X7T61hYCLOIjRUqos06WQpVCXxVlQanUQCZpXDmYUnfvXKfwozAOLy3oA3Pdp E9qdq1Vjm/TtV3ly7I+oST9eJ1qc1gYCI89zaCOZS/Ro+xhxO/XIQWt4iRv19T41qNmU nWlf5FNU9Aa+rXFSA5DKPaM9l9M78oz9gTAJnZM7gTAT/Itbfd1ZR4JC/GloEhoh6MyC sTd7JszalATEogoWlYYYz+gxiKUrFmQbVdNq1XQSt+AxhwYLoM82PJyKxpgQACCbVNmd qJZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JjTrX+Do; spf=pass (google.com: domain of mptcp+bounces-4687-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4687-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id u14-20020a056a00158e00b004fa3a8e009bsi1804467pfk.338.2022.04.08.12.46.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:15 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4687-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JjTrX+Do; spf=pass (google.com: domain of mptcp+bounces-4687-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4687-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 995E83E0A4B for ; Fri, 8 Apr 2022 19:46:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AA4FA2CA4; Fri, 8 Apr 2022 19:46:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 4BF292CA2 for ; Fri, 8 Apr 2022 19:46:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447171; x=1680983171; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=t6VdNUbE9ZxhADIvxQwrdlpYEV9mOXXWVZlnKfEDQU8=; b=JjTrX+Do4GgoqKNF3Lqd1LunY8J66hpmcg45C3oDdpdHWPRAJ1B4BVTl kuwPWD/5kpB55SLWumeQmURbRITOwufIaW2Rlx752Ljz8B350Kz+HgVAt B1EwoINLEG2DYCrTxT0fFf0+oeb0AL+tu8hHjsqlUgQ2mPdduxhh8M3UP u60yW9qd7HJkbr40YJ4fdoK91NwGn+JZTONis0EaNbqjvtbf9/8wvW+uv k5A7QB24umusF42NKd4DIgXd1PEAIkfjDuVCtiaQrLpU6QIE5gBXItLZv PLc4bbkO8xCrv2WKaAloYSRhRS2I74Q4Sj6Jy6V3zJIeFkrikNzMAHQ+d g==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365306" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365306" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:10 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602162" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:09 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Florian Westphal , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 5/8] mptcp: diag: switch to context structure Date: Fri, 8 Apr 2022 12:45:58 -0700 Message-Id: <20220408194601.305969-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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: Florian Westphal Raw access to cb->arg[] is deprecated, use a context structure. Signed-off-by: Florian Westphal Signed-off-by: Mat Martineau --- net/mptcp/mptcp_diag.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index f44125dd6697..c4992eeb67d8 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -66,20 +66,28 @@ static int mptcp_diag_dump_one(struct netlink_callback = *cb, return err; } =20 +struct mptcp_diag_ctx { + long s_slot; + long s_num; +}; + static void mptcp_diag_dump(struct sk_buff *skb, struct netlink_callback *= cb, const struct inet_diag_req_v2 *r) { bool net_admin =3D netlink_net_capable(cb->skb, CAP_NET_ADMIN); + struct mptcp_diag_ctx *diag_ctx =3D (void *)cb->ctx; struct net *net =3D sock_net(skb->sk); struct inet_diag_dump_data *cb_data; struct mptcp_sock *msk; struct nlattr *bc; =20 + BUILD_BUG_ON(sizeof(cb->ctx) < sizeof(*diag_ctx)); + cb_data =3D cb->data; bc =3D cb_data->inet_diag_nla_bc; =20 - while ((msk =3D mptcp_token_iter_next(net, &cb->args[0], &cb->args[1])) != =3D - NULL) { + while ((msk =3D mptcp_token_iter_next(net, &diag_ctx->s_slot, + &diag_ctx->s_num)) !=3D NULL) { struct inet_sock *inet =3D (struct inet_sock *)msk; struct sock *sk =3D (struct sock *)msk; int ret =3D 0; @@ -101,7 +109,7 @@ static void mptcp_diag_dump(struct sk_buff *skb, struct= netlink_callback *cb, sock_put(sk); if (ret < 0) { /* will retry on the same position */ - cb->args[1]--; + diag_ctx->s_num--; break; } cond_resched(); --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415687piq; Fri, 8 Apr 2022 12:46:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJ5XroMV1KeIwjRmC+jhXl0+gQdRZkKORMDD7ZuUHu0UizJ11hmNhPzoDOw3ywcbNYstGS X-Received: by 2002:a63:5b53:0:b0:39c:c6b8:d53b with SMTP id l19-20020a635b53000000b0039cc6b8d53bmr7069521pgm.166.1649447176429; Fri, 08 Apr 2022 12:46:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447176; cv=none; d=google.com; s=arc-20160816; b=c7o87PkFjSj/m7/gRu9Lrs0J5rliYYw8+Mx/xRkO2X+gO9UQ3anZqjf+t6Q8Uu/rI0 1TFKytum2WRCavjwk44S85OLatv1z+PWpWHTYEFK/Ho072FW6MfS7uZfAtfAysJed3Z/ 2EgN69+/zzSW5gl7ptwBwxm6XSfb4n+XW/Mb2Kbreq70wB2un2UadNuTFORX9Ueo3BXL /tLNlDNgus83ZCgoyaN7zMtHguu80rOrSe+NNtPVV2SxL4igI6qCxKcmozfWh6U80NSr d5F4rjL4v0ic3LYAr4l2tmTmNzV96XUxccy4zpLoXvI+iLeuRcc4PTq8VhLLX+WiW/K1 +TXA== 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=XxZRoQwBqCMT4RUpjNOtsKyTZcRgkcUBnDQipmdjHKc=; b=mdmTtb72N1ADg5L/eWHs91d4sFrsAi4u9tgYK/+wzFuTh6FlYz9+eTu2jmDAA7RbQX GdCQDwIrTGVjfIAcnhyvWuUjmV7+WqBV3pVafa0BWmvstSgaXAlj+lPdZKXb5QKHSBAM 4KS+FxfU2EpjhuqNvdbSz57L4JhwhVoxW3Fg1v0NgP1O+qFvs+dA6ulSCxT60TdwunTl m8IAFBa7onfEa1z3eFAQyrRmGGKqDHtlWptxMN5+eBR3qmbre+jprlRcFzP6cck6VrS3 dASrPMrsoC/abRy+DK141QbAoxjYbmmcevBkyfT19HiTaCfOe2QP9KlwUoDPglON1Wv7 pa9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=KN7ztfRb; spf=pass (google.com: domain of mptcp+bounces-4688-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4688-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id il6-20020a17090b164600b001ca8db710bcsi6215896pjb.179.2022.04.08.12.46.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:16 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4688-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=KN7ztfRb; spf=pass (google.com: domain of mptcp+bounces-4688-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4688-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 sjc.edge.kernel.org (Postfix) with ESMTPS id B5D633E0F46 for ; Fri, 8 Apr 2022 19:46:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CADB72CA6; Fri, 8 Apr 2022 19:46:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 B3FDD2CA1 for ; Fri, 8 Apr 2022 19:46:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447172; x=1680983172; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/4vjDVJ7ph3o8sUs30XSct9CMH0dy4bXdz1/3w7fzo0=; b=KN7ztfRbXFjdSg0/44cboc26hh1Ic/fFTQcoBkxrrqz1NrYF+gC8n9IW Zddi6T+E/YFaQoHNVvvPbg+t+pG/7qmz92DczDprdxQSl5kyVCd1VyJzn I/vjpmtbEsaAogQH3k4aV2y7wJPYSps7WxB/Zt0TRClnq9UOoKBsCqn1s mpE1HaI/szSRD7cC/KfkaoUBicqgYCK++obU86auPcjzyEmxJj1PizYHE y0KxF6RG7zPT2kiTDb58SZoV1/VLT58/peqFCjPwpQJVxbhztYSw/Pzl4 He2+Jw/eX3EmQOo4rpUf9Hl8zXtFiOUp1AMtJBY6rHdZ2tdHVK6c/7qVT w==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365309" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365309" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:10 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602172" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Florian Westphal , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 6/8] mptcp: remove locking in mptcp_diag_fill_info Date: Fri, 8 Apr 2022 12:45:59 -0700 Message-Id: <20220408194601.305969-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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: Florian Westphal Problem is that listener iteration would call this from atomic context so this locking is not allowed. One way is to drop locks before calling the helper, but afaics the lock isn't really needed, all values are fetched via READ_ONCE(). Signed-off-by: Florian Westphal Signed-off-by: Mat Martineau --- net/mptcp/sockopt.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index f949d22f52bd..826b0c1dae98 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -853,15 +853,11 @@ static int mptcp_getsockopt_first_sf_only(struct mptc= p_sock *msk, int level, int =20 void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info) { - struct sock *sk =3D &msk->sk.icsk_inet.sk; u32 flags =3D 0; - bool slow; u8 val; =20 memset(info, 0, sizeof(*info)); =20 - slow =3D lock_sock_fast(sk); - info->mptcpi_subflows =3D READ_ONCE(msk->pm.subflows); info->mptcpi_add_addr_signal =3D READ_ONCE(msk->pm.add_addr_signaled); info->mptcpi_add_addr_accepted =3D READ_ONCE(msk->pm.add_addr_accepted); @@ -882,8 +878,6 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struc= t mptcp_info *info) info->mptcpi_snd_una =3D READ_ONCE(msk->snd_una); info->mptcpi_rcv_nxt =3D READ_ONCE(msk->ack_seq); info->mptcpi_csum_enabled =3D READ_ONCE(msk->csum_enabled); - - unlock_sock_fast(sk, slow); } EXPORT_SYMBOL_GPL(mptcp_diag_fill_info); =20 --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415719piq; Fri, 8 Apr 2022 12:46:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOuWvp73l5mCBnYTZ6IMiT6y4FY7urx61f/5lbmTpca45BRx+TaFm5tZbR1dJgq+hOy4pI X-Received: by 2002:a65:6951:0:b0:381:f10:ccaa with SMTP id w17-20020a656951000000b003810f10ccaamr16425823pgq.587.1649447182072; Fri, 08 Apr 2022 12:46:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447182; cv=none; d=google.com; s=arc-20160816; b=rGe6ZDAZazggsCs5yfQwxju46Ys1wsJWw286V4uvJMUzqNgqo0yyfWbAt4nI0XPkUd q4T6cVWzujH1bv4uOx11pZTluIU52bGVAC6F36ALGqSwuACGEUED9y35Pfx1Ox86jp8o G8EPOymq94/K+S88rNcUx09kMWk5utCJZPr5fv3U183jz9ZVXuZaPWPImhNRCb5UBnSv 0Fxivnqo3nYhazXf8Y9fyRdVHcf/DPHkBrO8R/SSRyCBABDrYENlG0Do7P+PEf9zPh3c 29g1V4Hsc9SZ0ZGZv5LmZPn2JkMG5ESum/zRpTLyR3O/HmJkzWgeccb4KOKhwHUShGct WKTg== 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=18Mo4fSyvrodyRNIUcBvFrnWITaFzUBg29epmqBmuA0=; b=VVOpHDOaeH9Ed/0tilPIm3T0PVWjci05PdJJObIaykr+OnLU6VxUOMTDeoUUI4uMu6 5kXDXkiO2XUDWMChbjoPlqY+QfBc1arzcSLrapnpfJ94TUuu0iGC46wBLby3z+pq/ePs fQ4/EPglzd7HIEOQrz7SDy6Nzwoyx9W2OJre8nbMe1tX+r6VEqeIE1XZPPcH9hXelu1j TnZI2OdD+rg9Ni+HOHGGwTDnKHo0ux0jMCGIaum7Im+Np4ymKMIN1pgjhu2Oo6XkLCCe E7FJAuL3ch2yUC7evcTjMJrrt57WlE5z4cSRniRZOMAstd4XOWMlQ1w5SgZzOjxC5bfI xuAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TyAESyKP; spf=pass (google.com: domain of mptcp+bounces-4693-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4693-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id m15-20020a656a0f000000b00382b21d7ab8si2570169pgu.761.2022.04.08.12.46.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:22 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4693-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TyAESyKP; spf=pass (google.com: domain of mptcp+bounces-4693-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4693-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 68B253E0E6A for ; Fri, 8 Apr 2022 19:46:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A0052CA4; Fri, 8 Apr 2022 19:46:16 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 E9D382CA1 for ; Fri, 8 Apr 2022 19:46:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447174; x=1680983174; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8mvYeN//jyhruds3zSZPUfIAa/8HM8kPyXTpqdPQdT0=; b=TyAESyKPWBKzyNjoNm8o7JAuLm4hh4QgwBk26oCw/ztQzoqZh3m0JUwb W2QNMhheV7TSQiMFqfJVTWeNe1VBFMZC2Rt+dlvtG4HU0zf4WHaZFv8eW YIb7e1ybnQk5vS3cQXlAk/kZ7m7KlRTkp4gdTi8DvAarfoU7Hm+gI4frL UeFkgksZdpuAr8H6ZqS1MICO9kn49+FUXFI5KIFXpLr2MFGpdXqK7vsk4 gwgFyPEVXjBSGGW052QLDvCaydDThkdkiJviH/muVCnPf0vW4WefheGFH Fw7zoBRzXoXsljeYZcULyreomatNY6RrbEi5poJz9eRWrk6vJ1lM1MIU3 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365312" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365312" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:11 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602177" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Florian Westphal , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 7/8] mptcp: listen diag dump support Date: Fri, 8 Apr 2022 12:46:00 -0700 Message-Id: <20220408194601.305969-8-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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: Florian Westphal makes 'ss -Ml' show mptcp listen sockets. Iterate over the tcp listen sockets and pick those that have mptcp ulp info attached. mptcp_diag_get_info() is modified to prefer msk->first for mptcp sockets in listen state. This reports accurate number for recv and send queue (pending / max connection backlog counters). Sample output: ss -Mil State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 20 127.0.0.1:12000 0.0.0.0:* subflows_max:2 Signed-off-by: Florian Westphal Signed-off-by: Mat Martineau --- net/mptcp/mptcp_diag.c | 91 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index c4992eeb67d8..dbb6d876a203 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -69,8 +69,83 @@ static int mptcp_diag_dump_one(struct netlink_callback *= cb, struct mptcp_diag_ctx { long s_slot; long s_num; + unsigned int l_slot; + unsigned int l_num; }; =20 +static void mptcp_diag_dump_listeners(struct sk_buff *skb, struct netlink_= callback *cb, + const struct inet_diag_req_v2 *r, + bool net_admin) +{ + struct inet_diag_dump_data *cb_data =3D cb->data; + struct mptcp_diag_ctx *diag_ctx =3D (void *)cb->ctx; + struct nlattr *bc =3D cb_data->inet_diag_nla_bc; + struct net *net =3D sock_net(skb->sk); + int i; + + for (i =3D diag_ctx->l_slot; i < INET_LHTABLE_SIZE; i++) { + struct inet_listen_hashbucket *ilb; + struct hlist_nulls_node *node; + struct sock *sk; + int num =3D 0; + + ilb =3D &tcp_hashinfo.listening_hash[i]; + + rcu_read_lock(); + spin_lock(&ilb->lock); + sk_nulls_for_each(sk, node, &ilb->nulls_head) { + const struct mptcp_subflow_context *ctx =3D mptcp_subflow_ctx(sk); + struct inet_sock *inet =3D inet_sk(sk); + int ret; + + if (num < diag_ctx->l_num) + goto next_listen; + + if (!ctx || strcmp(inet_csk(sk)->icsk_ulp_ops->name, "mptcp")) + goto next_listen; + + sk =3D ctx->conn; + if (!sk || !net_eq(sock_net(sk), net)) + goto next_listen; + + if (r->sdiag_family !=3D AF_UNSPEC && + sk->sk_family !=3D r->sdiag_family) + goto next_listen; + + if (r->id.idiag_sport !=3D inet->inet_sport && + r->id.idiag_sport) + goto next_listen; + + if (!refcount_inc_not_zero(&sk->sk_refcnt)) + goto next_listen; + + ret =3D sk_diag_dump(sk, skb, cb, r, bc, net_admin); + + sock_put(sk); + + if (ret < 0) { + spin_unlock(&ilb->lock); + rcu_read_unlock(); + diag_ctx->l_slot =3D i; + diag_ctx->l_num =3D num; + return; + } + diag_ctx->l_num =3D num + 1; + num =3D 0; +next_listen: + ++num; + } + spin_unlock(&ilb->lock); + rcu_read_unlock(); + + cond_resched(); + diag_ctx->l_num =3D 0; + } + + diag_ctx->l_num =3D 0; + diag_ctx->l_slot =3D i; +} + static void mptcp_diag_dump(struct sk_buff *skb, struct netlink_callback *= cb, const struct inet_diag_req_v2 *r) { @@ -114,6 +189,9 @@ static void mptcp_diag_dump(struct sk_buff *skb, struct= netlink_callback *cb, } cond_resched(); } + + if ((r->idiag_states & TCPF_LISTEN) && r->id.idiag_dport =3D=3D 0) + mptcp_diag_dump_listeners(skb, cb, r, net_admin); } =20 static void mptcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, @@ -124,6 +202,19 @@ static void mptcp_diag_get_info(struct sock *sk, struc= t inet_diag_msg *r, =20 r->idiag_rqueue =3D sk_rmem_alloc_get(sk); r->idiag_wqueue =3D sk_wmem_alloc_get(sk); + + if (inet_sk_state_load(sk) =3D=3D TCP_LISTEN) { + struct sock *lsk =3D READ_ONCE(msk->first); + + if (lsk) { + /* override with settings from tcp listener, + * so Send-Q will show accept queue. + */ + r->idiag_rqueue =3D READ_ONCE(lsk->sk_ack_backlog); + r->idiag_wqueue =3D READ_ONCE(lsk->sk_max_ack_backlog); + } + } + if (!info) return; =20 --=20 2.35.1 From nobody Sun Apr 28 18:39:27 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp415710piq; Fri, 8 Apr 2022 12:46:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz+YzDOiOh9K4boas+783q6216O/YyvnBR58zb5VQ8oWwlRvJSveONzHTCsM6mufePf5zCc X-Received: by 2002:a17:90b:1d86:b0:1c7:85c9:96a6 with SMTP id pf6-20020a17090b1d8600b001c785c996a6mr23849381pjb.95.1649447180934; Fri, 08 Apr 2022 12:46:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649447180; cv=none; d=google.com; s=arc-20160816; b=KSX7PQebIH7v9AJhoHMm0ecca/zlp9t51g28nM/iKK/vv1x7OuP7HyEDFJ/IPA+o5m HAMy0b+g/148kUXfQl+r/u0WSTm3jvrAUxX7gj8nD2NL9g9MTZz+7vzxyaq/VSnKdil0 bwjui9pgvxAqSAeLvKSqBGEDEF/iN3O1ROn5Y2KV9shb4ffp6C+5k8AfsAov1nxIaWdQ 35OQL1VgNs9kMZNdqy7LXQ/NOxnBzu8l4xVVSsldYUHVbfX38zfP06jtf6VzAnTf7rcu Kx1ktztN0lCYxZqCZcejX1WRyOObh49biqUL4h4GsmVScuuu0OPZvmqpD7j3a6BI8wu5 W/5g== 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=/cC+HW2EqyCwb3hd8//ODyrDBGO1MHoxes0e1F2wpkg=; b=IRmryNa762URHRuL1MOPZ8kxhcjRduYFcl9whg/ZmdoNbTw03npy6cElE74Aqh9+yv ApAjvmOUjf3hLRg6Uh/3GHE1v5tYaVPdSOAu+0x7D+jf6RbycuUgfynGV3FgdWp5LwKj ADhlbz8Uqo7JKwb6bVwE9ZVF4zeZmFv34ZnWAsgQEnzhU0bgAi2TleQbZrP4HPolKJ6s ErJs4H76pfZN1x1FobHhcBs8nhxSfZOnOtYt3EZK0VcnPrjAZrAE9nbS+8d3W9ppcFTG Gbh71bMc9l3Qod3oT/FVnqBx8+iGbH9+SNXN/z1/4E3LHFIsxQCFQydW8w47Myg5kA4v tbJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XI8yZEzX; spf=pass (google.com: domain of mptcp+bounces-4692-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4692-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id m15-20020a656a0f000000b00382b21d7ab8si2570169pgu.761.2022.04.08.12.46.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Apr 2022 12:46:20 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4692-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XI8yZEzX; spf=pass (google.com: domain of mptcp+bounces-4692-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4692-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 556D53E0F84 for ; Fri, 8 Apr 2022 19:46:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2228E2CA2; Fri, 8 Apr 2022 19:46:16 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 06BAE2CA8 for ; Fri, 8 Apr 2022 19:46:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649447174; x=1680983174; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NABinCF0LHq/aOKg0y7Mwz+78G28IHxmsB6Mx1C7my4=; b=XI8yZEzXUR2VM4ybKxs8aMFACg+4vSUWN9SVx33XC8newK9+SDo5prpr NNMfHQ2aIqIhXQ62VCReWLt19ocixo6HMzXjBWFgcUsiHVT7b9IURU5JW bWgrh92pnimB83JV/Q1+8Zm9+IeHvRW9FPGNAioGLfnDTOgXBKYfQDaHO QZfnlGJEmzdZbZrxMZm4w8YRO+FrJSHWLpIh9ICj6oiZzyU3HYXMVdzGz rR6lvDlkWlKG1hrgq1vqx9yj44bZxiVBW8o35zh3zAYrCLA9TcR+eCynD BpK+SoguU9dspG9ov5/q5OdJP49SMSU+ms6SC1/5N90oZYSrtqknbT8+C Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10311"; a="322365317" X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="322365317" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:11 -0700 X-IronPort-AV: E=Sophos;i="5.90,245,1643702400"; d="scan'208";a="659602181" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.134.75.99]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2022 12:46:11 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Florian Westphal , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 8/8] selftests/mptcp: add diag listen tests Date: Fri, 8 Apr 2022 12:46:01 -0700 Message-Id: <20220408194601.305969-9-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220408194601.305969-1-mathew.j.martineau@linux.intel.com> References: <20220408194601.305969-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: Florian Westphal Check dumping of mptcp listener sockets: 1. filter by dport should not return any results 2. filter by sport should return listen sk 3. filter by saddr+sport should return listen sk 4. no filter should return listen sk Signed-off-by: Florian Westphal Signed-off-by: Mat Martineau --- tools/testing/selftests/net/mptcp/diag.sh | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index ff821025d309..9dd43d7d957b 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -71,6 +71,43 @@ chk_msk_remote_key_nr() __chk_nr "grep -c remote_key" $* } =20 +__chk_listen() +{ + local filter=3D"$1" + local expected=3D$2 + + shift 2 + msg=3D$* + + nr=3D$(ss -N $ns -Ml "$filter" | grep -c LISTEN) + printf "%-50s" "$msg" + + if [ $nr !=3D $expected ]; then + echo "[ fail ] expected $expected found $nr" + ret=3D$test_cnt + else + echo "[ ok ]" + fi +} + +chk_msk_listen() +{ + lport=3D$1 + local msg=3D"check for listen socket" + + # destination port search should always return empty list + __chk_listen "dport $lport" 0 "listen match for dport $lport" + + # should return 'our' mptcp listen socket + __chk_listen "sport $lport" 1 "listen match for sport $lport" + + __chk_listen "src inet:0.0.0.0:$lport" 1 "listen match for saddr and spor= t" + + __chk_listen "" 1 "all listen sockets" + + nr=3D$(ss -Ml $filter | wc -l) +} + # $1: ns, $2: port wait_local_port_listen() { @@ -113,6 +150,7 @@ echo "a" | \ 0.0.0.0 >/dev/null & wait_local_port_listen $ns 10000 chk_msk_nr 0 "no msk on netns creation" +chk_msk_listen 10000 =20 echo "b" | \ timeout ${timeout_test} \ --=20 2.35.1