From nobody Thu Sep 18 14:00:25 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:1d48:0:0:0:0:0 with SMTP id 69csp2535263jaj; Fri, 17 Sep 2021 16:33:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw79WhtMFV5fNOiljUEEdD1G3Vs8kGozc9sYf/Ixs4VnXHCixKyuiM4gZA+swAmQ5cIldnC X-Received: by 2002:aa7:9542:0:b0:434:5a64:bc8 with SMTP id w2-20020aa79542000000b004345a640bc8mr13076803pfq.30.1631921614681; Fri, 17 Sep 2021 16:33:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631921614; cv=none; d=google.com; s=arc-20160816; b=LOk8jMcPaSACq228I35i+aCDvu276DaF8aO5/ToZFa6GsgwiORxNvwffiGwBrKO2h7 p7hNY+jrG43Fh7SF3N8lJ7BANHXk9UPDSeyfbD3t747l5YI3XhqQoF8e6stddnJD/Lo7 ECfA1d97lcGTnoDbmu9+9uc3i5vDJop4q43gIRnZyETq5VkXTwii2AiWjziWuyAqqBYT 6izq4X+Qo0wyky/f8P/N4pMQG4SaFpsba7JM115M9CyKyTISqRsicewsRpu5oJX8XzHC Kc56O64omAF2Y7fVd8f+9amzVxBj2VgR/k7eG1DnzSOBTycxarSOxO+kfUx4obNKmZxm CWkg== 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; bh=OxHwz4qTAXnsxoXbBNOkcQ5LkOdyHBTdzrW4e/rAlE0=; b=h7B6i8usMVmSMZH2Yu7pG/ssuNkNjBMKYl1wjIkF17M9iqEC9pKLlT7xefA9AUR/wC h6Ho4L1ydOHMFIZ/R1N2aS+ADzB/K40fJjB7v8H3WxHAwwddY7rYilPnxvEMyff/j4ON ndaQhZPiAcDQftlXreXutBXr/zPbmqlPHZixf8QNwcqzaMqkc+ZQKTEHrq4tpvVqBCLA cND/5Cy6Y6Y87xMQVStyehmmRGVUZz6z0atAz2EoW/+7jCygu+ZlVrNhvaGnpn769cfq Ze3mD6528XPqKT0oBgye9h3xGAAIZDuj2wUrYC774c399Ovj27wNxG2n5cu8Bcwm0Frp YjVw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-1959-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-1959-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (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 q13si9398327plk.433.2021.09.17.16.33.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 Sep 2021 16:33:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-1959-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; spf=pass (google.com: domain of mptcp+bounces-1959-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-1959-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (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 428913E10FE for ; Fri, 17 Sep 2021 23:33:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2AAC43FCB; Fri, 17 Sep 2021 23:33:33 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 1745A2FB2 for ; Fri, 17 Sep 2021 23:33:32 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10110"; a="209979870" X-IronPort-AV: E=Sophos;i="5.85,302,1624345200"; d="scan'208";a="209979870" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Sep 2021 16:33:29 -0700 X-IronPort-AV: E=Sophos;i="5.85,302,1624345200"; d="scan'208";a="483228556" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.205.24]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Sep 2021 16:33:29 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Florian Westphal , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 1/5] mptcp: add new mptcp_fill_diag helper Date: Fri, 17 Sep 2021 16:33:18 -0700 Message-Id: <20210917233322.271789-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917233322.271789-1-mathew.j.martineau@linux.intel.com> References: <20210917233322.271789-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 Will be re-used from getsockopt path. Since diag can be a module, we can't export the helper from diag, it needs to be moved to core. Signed-off-by: Florian Westphal Signed-off-by: Mat Martineau --- include/net/mptcp.h | 4 ++++ net/mptcp/mptcp_diag.c | 26 +------------------------- net/mptcp/sockopt.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 6026bbefbffd..f83fa48408b3 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -12,6 +12,8 @@ #include #include =20 +struct mptcp_info; +struct mptcp_sock; struct seq_file; =20 /* MPTCP sk_buff extension data */ @@ -121,6 +123,8 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_= buff *skb); void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp, struct mptcp_out_options *opts); =20 +void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info); + /* move the skb extension owership, with the assumption that 'to' is * newly allocated */ diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index f48eb6315bbb..fdf0c1f15a65 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -113,37 +113,13 @@ static void mptcp_diag_get_info(struct sock *sk, stru= ct inet_diag_msg *r, { struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_info *info =3D _info; - u32 flags =3D 0; - bool slow; - u8 val; =20 r->idiag_rqueue =3D sk_rmem_alloc_get(sk); r->idiag_wqueue =3D sk_wmem_alloc_get(sk); if (!info) return; =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); - info->mptcpi_local_addr_used =3D READ_ONCE(msk->pm.local_addr_used); - info->mptcpi_subflows_max =3D mptcp_pm_get_subflows_max(msk); - val =3D mptcp_pm_get_add_addr_signal_max(msk); - info->mptcpi_add_addr_signal_max =3D val; - val =3D mptcp_pm_get_add_addr_accept_max(msk); - info->mptcpi_add_addr_accepted_max =3D val; - info->mptcpi_local_addr_max =3D mptcp_pm_get_local_addr_max(msk); - if (test_bit(MPTCP_FALLBACK_DONE, &msk->flags)) - flags |=3D MPTCP_INFO_FLAG_FALLBACK; - if (READ_ONCE(msk->can_ack)) - flags |=3D MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED; - info->mptcpi_flags =3D flags; - info->mptcpi_token =3D READ_ONCE(msk->token); - info->mptcpi_write_seq =3D READ_ONCE(msk->write_seq); - 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); + mptcp_diag_fill_info(msk, info); } =20 static const struct inet_diag_handler mptcp_diag_handler =3D { diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index 8c03afac5ca0..54f0d521a399 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -670,6 +670,38 @@ static int mptcp_getsockopt_first_sf_only(struct mptcp= _sock *msk, int level, int return ret; } =20 +void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info) +{ + struct sock *sk =3D &msk->sk.icsk_inet.sk; + bool slow =3D lock_sock_fast(sk); + u32 flags =3D 0; + u8 val; + + 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); + info->mptcpi_local_addr_used =3D READ_ONCE(msk->pm.local_addr_used); + info->mptcpi_subflows_max =3D mptcp_pm_get_subflows_max(msk); + val =3D mptcp_pm_get_add_addr_signal_max(msk); + info->mptcpi_add_addr_signal_max =3D val; + val =3D mptcp_pm_get_add_addr_accept_max(msk); + info->mptcpi_add_addr_accepted_max =3D val; + info->mptcpi_local_addr_max =3D mptcp_pm_get_local_addr_max(msk); + if (test_bit(MPTCP_FALLBACK_DONE, &msk->flags)) + flags |=3D MPTCP_INFO_FLAG_FALLBACK; + if (READ_ONCE(msk->can_ack)) + flags |=3D MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED; + info->mptcpi_flags =3D flags; + info->mptcpi_token =3D READ_ONCE(msk->token); + info->mptcpi_write_seq =3D READ_ONCE(msk->write_seq); + 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); + static int mptcp_getsockopt_sol_tcp(struct mptcp_sock *msk, int optname, char __user *optval, int __user *optlen) { --=20 2.33.0