From nobody Thu Apr 25 15:53:06 2024 Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5200BEA8 for ; Tue, 22 Nov 2022 03:51:23 +0000 (UTC) Received: by mail-pf1-f194.google.com with SMTP id y203so13205640pfb.4 for ; Mon, 21 Nov 2022 19:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T0ydhPJoXSyhpeuxe/hVgjBauVZHn6Z/85xIJA53WwM=; b=p/GQ2d3IOWkvExxDHSDyko5DE6DfV+SulXDJHZOukRW08jwP2pSxRJDUe5cWlmz1ud 19daSZ67BmCcppkKdjIZIiGoxAvDgudElUXwPlp66pupKb/xM+plzENrDet5M8YsL9eP eMrjaRio8Aq4iz9cdD8LZAXp41QCdiEfIOuz5BaOjbClt5lYToQ6JbW+SWKtE8cIxjrQ XDpsIvJ56orxVlJ/pZOMd9JEnk+SX3dExWC67q5wSU9NAq38YsXGCSxTHzps/7xVV5a0 kym2M+bBgdIx3iBk6ZDNBvABn9ZLKxWQRiRjtql7IrjVO2VzJ9tIzUYunPURi6AV55+N zShg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T0ydhPJoXSyhpeuxe/hVgjBauVZHn6Z/85xIJA53WwM=; b=BuBe0NDvBe+0gApPGbopG7mkK29SOJO+fkHjr0obzBBE7R1/IGKBieQYREjNIG9pnl 5aoYN4rNSlYflYavGstJiiMfx5ZcKo3XLKem/h6ceBM8J6rrOFHDiMc/xgWqd/lqZBGK Hk1AiCj7aiSDIq/VRUMdHJ/Z1iK9adVxzdtp1d7kZQTOp35xjipcfwygv2wu7pIyekwI j5EcsAFCpTm03whzmhJx3A94C7WP+Z1at3EjTR2NLNfRKRBP4rV8YgzngJ1tBI34FSj2 5UYI7xtxzP0e/bxhBIgKowWtYGhY7BXuyuxqGMIUJgNm8UWm+BpJfYmQKkEvm90e1Xe4 UmCg== X-Gm-Message-State: ANoB5pkgC7g+Vf1Pi1Bi9PKChS+EtbvhSN3qLA/0UNuAaDOCtPxcrxIZ 8bsAMFthc+O8GuwRoOrkhuE= X-Google-Smtp-Source: AA0mqf6xl2boawgUchA5waH0TOaXNGBIoFS821TvakAkK4PExRepErIiKVWoAQ698HCrINJ8fzfexg== X-Received: by 2002:a05:6a00:24c1:b0:56e:a001:8cb0 with SMTP id d1-20020a056a0024c100b0056ea0018cb0mr3577341pfv.60.1669089082774; Mon, 21 Nov 2022 19:51:22 -0800 (PST) Received: from localhost.localdomain ([162.14.78.182]) by smtp.gmail.com with ESMTPSA id x11-20020a170902ec8b00b001869d71228bsm10707220plg.170.2022.11.21.19.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Nov 2022 19:51:21 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v7 1/4] mptcp: introduce 'sk' to replace 'sock->sk' in mptcp_listen() Date: Tue, 22 Nov 2022 11:49:20 +0800 Message-Id: <20221122034923.804955-2-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221122034923.804955-1-imagedong@tencent.com> References: <20221122034923.804955-1-imagedong@tencent.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: Menglong Dong 'sock->sk' is used frequently in mptcp_listen(). Therefore, we can introduce the 'sk' and replace 'sock->sk' with it. Signed-off-by: Menglong Dong --- net/mptcp/protocol.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index a4fd971a7aa4..f9bcc724d9e2 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3655,12 +3655,13 @@ static int mptcp_stream_connect(struct socket *sock= , struct sockaddr *uaddr, static int mptcp_listen(struct socket *sock, int backlog) { struct mptcp_sock *msk =3D mptcp_sk(sock->sk); + struct sock *sk =3D sock->sk; struct socket *ssock; int err; =20 pr_debug("msk=3D%p", msk); =20 - lock_sock(sock->sk); + lock_sock(sk); ssock =3D __mptcp_nmpc_socket(msk); if (!ssock) { err =3D -EINVAL; @@ -3668,16 +3669,16 @@ static int mptcp_listen(struct socket *sock, int ba= cklog) } =20 mptcp_token_destroy(msk); - inet_sk_state_store(sock->sk, TCP_LISTEN); - sock_set_flag(sock->sk, SOCK_RCU_FREE); + inet_sk_state_store(sk, TCP_LISTEN); + sock_set_flag(sk, SOCK_RCU_FREE); =20 err =3D ssock->ops->listen(ssock, backlog); - inet_sk_state_store(sock->sk, inet_sk_state_load(ssock->sk)); + inet_sk_state_store(sk, inet_sk_state_load(ssock->sk)); if (!err) - mptcp_copy_inaddrs(sock->sk, ssock->sk); + mptcp_copy_inaddrs(sk, ssock->sk); =20 unlock: - release_sock(sock->sk); + release_sock(sk); return err; } =20 --=20 2.37.2 From nobody Thu Apr 25 15:53:06 2024 Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 569D4EA8 for ; Tue, 22 Nov 2022 03:51:25 +0000 (UTC) Received: by mail-pl1-f193.google.com with SMTP id y4so12447983plb.2 for ; Mon, 21 Nov 2022 19:51:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ItPs0xNbAoC8iNFB4T5B/tl90pqN6u7kcnVF047XcB8=; b=caPpNw1Ver6sRCf4Nl20IZgnpRV7+gN0DIfb8LwdcsR9OHmdPLomaQ6uph5FuoG6rB jRkSu8gtntan50rBUAPyQ33/5JuZA/Q8Llf3r1MAUjyTf6MoAGmpSN1StujswoK0s/1s l9pVvUgFsg9hWQEdqF6ppk+jJ7D4NNLynpHMrqh2zafp9QDmuK7w7G3anIRNGbQAr//y OFgGPHhTU7ur//E4rVVRIYYB1BcStz6wd9mu13YETyDu6hP5l3tv0mL5SE/3DkVwAdWZ CYCnyaHKcNl0GO+dybz6AaVEHcGHRUQqmO4+WoKNw3pl7zPPloxaYLVzLCcw4xRfDWhC X0Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ItPs0xNbAoC8iNFB4T5B/tl90pqN6u7kcnVF047XcB8=; b=o98ypetJYBCimxn1clWmLwC733U1Gi0GLzYMuIJKJDiXuZj9yyahFWs1lqtL7G2jJT efKHlfIPW25JFO8loaU/MYASlC/5lTU7ptCoopUIJHQcchNgbtTcgc+VpK6R6N1qJImM DrZwDcILFbeSoYCJxfGi36tFOrHnByPH4jw49x8CupdROG4L9papYpZQ58epL9wwNzoI gfcZQJTwPyCaIh+mz+zmQ4duWH0V3do3imiWoat1TFvvLiOJ462p726dygJdzm/T0g/L Szl3A/eunVhH6u7WtgtC8H7AUjGu2VajHgZBhHoxWUg4EbtghdTIDxQwzjqaLsFGUdoI BzSA== X-Gm-Message-State: ANoB5pl0RQooDeEGF7rsko0JvHfon0cSaudVQHC1rVgd2NKVABwSXoRy FoLdyUZ0nb4WM9mLicU3524= X-Google-Smtp-Source: AA0mqf6hEdF/iJ/pMna/ahNPbVHxZMGAQDWSwJIu9Ydhhtz6IP3uZ6p7dVui7Fb4SyGe0i3jyBMuOQ== X-Received: by 2002:a17:902:f391:b0:178:71f9:b8fc with SMTP id f17-20020a170902f39100b0017871f9b8fcmr2237459ple.44.1669089084775; Mon, 21 Nov 2022 19:51:24 -0800 (PST) Received: from localhost.localdomain ([162.14.78.182]) by smtp.gmail.com with ESMTPSA id x11-20020a170902ec8b00b001869d71228bsm10707220plg.170.2022.11.21.19.51.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Nov 2022 19:51:24 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v7 2/4] mptcp: add statistics for mptcp socket in use Date: Tue, 22 Nov 2022 11:49:21 +0800 Message-Id: <20221122034923.804955-3-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221122034923.804955-1-imagedong@tencent.com> References: <20221122034923.804955-1-imagedong@tencent.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: Menglong Dong Do the statistics of mptcp socket in use with sock_prot_inuse_add(). Therefore, we can get the count of used mptcp socket from /proc/net/protocols: & cat /proc/net/protocols protocol size sockets memory press maxhdr slab module cl co di ac io= in de sh ss gs se re sp bi br ha uh gp em MPTCPv6 2048 0 0 no 0 yes kernel y n y y y= y y y y y y y n n n y y y n MPTCP 1896 1 0 no 0 yes kernel y n y y y= y y y y y y y n n n y y y n Signed-off-by: Menglong Dong --- v6: - introduce the 'MPTCP_INUSE' flag and check if msk is in use by it v5: - rebase to solve merge conflict v4: - rename MPTCP_DESTROIED to MPTCP_DESTROYED v2: - decrease the statistics for listening mptcp socket inuse with mptcp_listen_inuse_dec() - add MPTCP_DESTROIED flags to store if mptcp_destroy_common() was called on the msk. For fallback case, we need to decrease the statistics only once, and mptcp_destroy_common() can be called more than once. --- net/mptcp/protocol.c | 8 +++++++- net/mptcp/protocol.h | 13 +++++++++++++ net/mptcp/subflow.c | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index f9bcc724d9e2..9c1152e16005 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3073,6 +3073,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, msk->snd_una =3D msk->write_seq; msk->wnd_end =3D msk->snd_nxt + req->rsk_rcv_wnd; msk->setsockopt_seq =3D mptcp_sk(sk)->setsockopt_seq; + clear_bit(MPTCP_INUSE, &msk->flags); =20 if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack =3D true; @@ -3179,6 +3180,8 @@ void mptcp_destroy_common(struct mptcp_sock *msk, uns= igned int flags) skb_rbtree_purge(&msk->out_of_order_queue); mptcp_data_unlock(sk); =20 + mptcp_inuse_dec(sk); + /* move all the rx fwd alloc into the sk_mem_reclaim_final in * inet_sock_destruct() will dispose it */ @@ -3542,6 +3545,7 @@ static int mptcp_connect(struct sock *sk, struct sock= addr *uaddr, int addr_len) =20 mptcp_token_destroy(msk); inet_sk_state_store(sk, TCP_SYN_SENT); + mptcp_inuse_inc(sk); subflow =3D mptcp_subflow_ctx(ssock->sk); #ifdef CONFIG_TCP_MD5SIG /* no MPTCP if MD5SIG is enabled on this socket or we may run out of @@ -3674,8 +3678,10 @@ static int mptcp_listen(struct socket *sock, int bac= klog) =20 err =3D ssock->ops->listen(ssock, backlog); inet_sk_state_store(sk, inet_sk_state_load(ssock->sk)); - if (!err) + if (!err) { + mptcp_inuse_inc(sk); mptcp_copy_inaddrs(sk, ssock->sk); + } =20 unlock: release_sock(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 6a09ab99a12d..441bbd77ae8e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -116,6 +116,7 @@ #define MPTCP_WORK_EOF 3 #define MPTCP_FALLBACK_DONE 4 #define MPTCP_WORK_CLOSE_SUBFLOW 5 +#define MPTCP_INUSE 6 =20 /* MPTCP socket release cb flags */ #define MPTCP_PUSH_PENDING 1 @@ -382,6 +383,18 @@ static inline struct mptcp_data_frag *mptcp_rtx_head(c= onst struct sock *sk) return list_first_entry_or_null(&msk->rtx_queue, struct mptcp_data_frag, = list); } =20 +static inline void mptcp_inuse_inc(const struct sock *sk) +{ + if (!test_and_set_bit(MPTCP_INUSE, &mptcp_sk(sk)->flags)) + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); +} + +static inline void mptcp_inuse_dec(const struct sock *sk) +{ + if (test_and_clear_bit(MPTCP_INUSE, &mptcp_sk(sk)->flags)) + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); +} + struct csum_pseudo_header { __be64 data_seq; __be32 subflow_seq; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 437a283ba6ea..2e3bf29b4006 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -749,6 +749,7 @@ static struct sock *subflow_syn_recv_sock(const struct = sock *sk, mptcp_sk(new_msk)->setsockopt_seq =3D ctx->setsockopt_seq; mptcp_pm_new_connection(mptcp_sk(new_msk), child, 1); mptcp_token_accept(subflow_req, mptcp_sk(new_msk)); + mptcp_inuse_inc(new_msk); ctx->conn =3D new_msk; new_msk =3D NULL; =20 --=20 2.37.2 From nobody Thu Apr 25 15:53:06 2024 Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3C487EA8 for ; Tue, 22 Nov 2022 03:51:27 +0000 (UTC) Received: by mail-pf1-f195.google.com with SMTP id d192so13242296pfd.0 for ; Mon, 21 Nov 2022 19:51:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ddvDW/MDUtgM+qsmGJtiTql+jw6vfIq1S7pyop6Cv2k=; b=OZLE+ZYJegoTvyjsPlGfv/KHH7144dl/v2J6pgfgO3R3zk86KeT7ESSob/8R6kh3E9 s9jIkEDv3VJT6N41qfng8fNCb0zYQu3TZ05hRX8VAbKn8Xmvipf0E3d+LoKqYrIO2T52 tYxKAiknXOyAk001BeOl3//qqi2XJ+7yd5pfSCR8QQtC5ZSZAE2QCUT6Uh4qHTAGPAXT uhvxO6gSkVXDRWR4/rwQqmLdH/QeGzL88LZadaMSIO3FmKFqHUeMj1wXt5V4uIdlhZl7 ka2HYHyiXcsy+bzElE5Fraqi8YPzIJXja27vK/f7++XDXCNOAID26L6Ch2SRqugd2ge/ Ishw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ddvDW/MDUtgM+qsmGJtiTql+jw6vfIq1S7pyop6Cv2k=; b=3KC76ybxRz5bkY9XAmtjbGqZUbnGU5CzwVfrULxglk1y9BXbY1C9/dkmwM6aWhDDk9 dBc4IuX4S7LesQ4aik0+3FgYzv1N6CPYTYmucNOUVtPptgO90uBCVVPuVqlKFMD4KW9l zd2hB+343Zbi1FbdY9vtpHW4ZrP9d4JfHoKgAXm19neIQGkfm4XBCP157XK/ErNbRaWS fIlCJvMnLFZBA6wiePnFhzaRtMKQfmuyFKeqzK46+VBh2XfJIFBJMmoSf/P2LYr4lfVF ntGBE8wizeC2/Wqvz16p2OnLxu52JAdxshlp8Vy90o0Httx8DWOMNPa18stjWNTFAl5i ObOA== X-Gm-Message-State: ANoB5pkvzOsOHTfRahpSY7tHJNMHtoJpekhrLOlZnjIbsBCgv2graunT gVbiBmpYEVX3RBNPDrBvuNoBSATThVgMDUQ0 X-Google-Smtp-Source: AA0mqf7Ut+5MgOdEqCiLGM1S0Ji9DhX3sYaDnP6X1t+ggiphU9+Ogmiw+f17uDVzPGh7uamilqMTwg== X-Received: by 2002:a63:2043:0:b0:477:5e25:4ca8 with SMTP id r3-20020a632043000000b004775e254ca8mr5067885pgm.511.1669089086758; Mon, 21 Nov 2022 19:51:26 -0800 (PST) Received: from localhost.localdomain ([162.14.78.182]) by smtp.gmail.com with ESMTPSA id x11-20020a170902ec8b00b001869d71228bsm10707220plg.170.2022.11.21.19.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Nov 2022 19:51:26 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v7 3/4] selftest: mptcp: exit from copyfd_io_poll() when receive SIGUSR1 Date: Tue, 22 Nov 2022 11:49:22 +0800 Message-Id: <20221122034923.804955-4-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221122034923.804955-1-imagedong@tencent.com> References: <20221122034923.804955-1-imagedong@tencent.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: Menglong Dong For now, mptcp_connect won't exit after receiving the 'SIGUSR1' signal if '-r' is set. Fix this by skipping poll and sleep in copyfd_io_poll() if 'quit' is set. Signed-off-by: Menglong Dong --- tools/testing/selftests/net/mptcp/mptcp_connect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/test= ing/selftests/net/mptcp/mptcp_connect.c index e54653ea2ed4..518c6d653c0e 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -586,7 +586,7 @@ static int copyfd_io_poll(int infd, int peerfd, int out= fd, bool *in_closed_after char rbuf[8192]; ssize_t len; =20 - if (fds.events =3D=3D 0) + if (fds.events =3D=3D 0 || quit) break; =20 switch (poll(&fds, 1, poll_timeout)) { @@ -692,7 +692,7 @@ static int copyfd_io_poll(int infd, int peerfd, int out= fd, bool *in_closed_after } =20 /* leave some time for late join/announce */ - if (cfg_remove) + if (cfg_remove && !quit) usleep(cfg_wait); =20 return 0; --=20 2.37.2 From nobody Thu Apr 25 15:53:06 2024 Received: from mail-pj1-f68.google.com (mail-pj1-f68.google.com [209.85.216.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59B07EA8 for ; Tue, 22 Nov 2022 03:51:29 +0000 (UTC) Received: by mail-pj1-f68.google.com with SMTP id o5-20020a17090a678500b00218cd5a21c9so809827pjj.4 for ; Mon, 21 Nov 2022 19:51:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=niWQtG1fWIVuG/NRj2Q8+EYIVC8ygMo41dzMZHL4cCc=; b=CogAgdhYGXh0HbudKT/RNjJkh1ASZr5KW+jxvJTd18Z/OUM2BYQ9QxjHKLXKEsOpa8 0Svw3oEM+VL/o7Xz22gA6ZaZbEJVdadYjLMZv+AjOl5afgHotFw4MnvzBDmhvHHIv7EV NpdDTWtODGC7BZ2169NoKn7buWCUCPCJdNSGr/W+P1aLp/5tWNIzVgAM0zLjMRoE/+qw Fin6kn5iKoNqMuy+lu3QJsyTP4t2fEzL65OpOteABBBFLnOzpRyHxBFnHlJkHweQWBrR Uzz+3uBnLV5FTXfyoK2fQvpL3Rz9w6FaiR9uhBVuYrdRayz0oJvh7yYfb7dIm3Zg29UN Ku+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=niWQtG1fWIVuG/NRj2Q8+EYIVC8ygMo41dzMZHL4cCc=; b=A6z+XpkHmutcrVY9nGAJpPOaqCJphACUMinPWMPBYgpZOP1wyCRPeDA76cJtLEWFLq 13QHrax6aoFrK7EFcxGjJpmh7HLLfdXQbcOQoN4M1BKIr926RmwmLn3le/QHLNzWIH/p 8vJoE+rNM1Grh+BqotDpQVwlq6ZVVYmQ+fGQJQkNOmzSE5K+WLovkgPkfz/OoLvjVrDd XcjdzUKNClq368fX+kM+5ywVTWOPmFf3/s+vHVBGZ5rSLUbclC4TB7MuIcSZ6SVLrD4H /bH27NKRgKUw8CGcAODmc4qOWwgrv7xEfam7JkedwsHk5xd7KW42GPapd9ydv+2IQQXo TTNw== X-Gm-Message-State: ANoB5pkKzds9exinJSX/rawD9qsX/5GVst5bG5ZqYrxmDBd6N8sIhMvL 4+nuhtt+2c70AVV1uQaqL90= X-Google-Smtp-Source: AA0mqf4a8a+eMKTXr3FV3BVbRZH7F6M9PVz0j/6oghDJhJ+Z8zTISA/r1yOjvR+fSe1J7/ilUaXiHw== X-Received: by 2002:a17:90a:d38a:b0:218:a7e6:60df with SMTP id q10-20020a17090ad38a00b00218a7e660dfmr10282326pju.38.1669089088887; Mon, 21 Nov 2022 19:51:28 -0800 (PST) Received: from localhost.localdomain ([162.14.78.182]) by smtp.gmail.com with ESMTPSA id x11-20020a170902ec8b00b001869d71228bsm10707220plg.170.2022.11.21.19.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Nov 2022 19:51:28 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v7 4/4] selftest: mptcp: add test for mptcp socket in use Date: Tue, 22 Nov 2022 11:49:23 +0800 Message-Id: <20221122034923.804955-5-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221122034923.804955-1-imagedong@tencent.com> References: <20221122034923.804955-1-imagedong@tencent.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: Menglong Dong Add the function chk_msk_inuse() to diag.sh, which is used to check the statistics of mptcp socket in use. As mptcp socket in listen state will be closed randomly after 'accept', we need to get the count of listening mptcp socket through 'ss' command. All tests pass. Signed-off-by: Menglong Dong --- v7: - check all processes exit in flush_pids() --- tools/testing/selftests/net/mptcp/diag.sh | 54 ++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index 515859a5168b..4dd5dc1130ca 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -16,6 +16,11 @@ flush_pids() sleep 1.1 =20 ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGUSR1 &>/dev/null + + for _ in $(seq 10); do + [ -z "$(ip netns pids "${ns}")" ] && break + sleep 0.1 + done } =20 cleanup() @@ -36,15 +41,20 @@ if [ $? -ne 0 ];then exit $ksft_skip fi =20 +get_msk_inuse() +{ + ip netns exec $ns cat /proc/net/protocols | awk '$1~/^MPTCP$/{print $3}' +} + __chk_nr() { - local condition=3D"$1" + local command=3D"$1" local expected=3D$2 local msg nr =20 shift 2 msg=3D$* - nr=3D$(ss -inmHMN $ns | $condition) + nr=3D$(eval $command) =20 printf "%-50s" "$msg" if [ $nr !=3D $expected ]; then @@ -56,9 +66,17 @@ __chk_nr() test_cnt=3D$((test_cnt+1)) } =20 +__chk_msk_nr() +{ + local condition=3D$1 + shift 1 + + __chk_nr "ss -inmHMN $ns | $condition" $* +} + chk_msk_nr() { - __chk_nr "grep -c token:" $* + __chk_msk_nr "grep -c token:" $* } =20 wait_msk_nr() @@ -96,12 +114,12 @@ wait_msk_nr() =20 chk_msk_fallback_nr() { - __chk_nr "grep -c fallback" $* + __chk_msk_nr "grep -c fallback" $* } =20 chk_msk_remote_key_nr() { - __chk_nr "grep -c remote_key" $* + __chk_msk_nr "grep -c remote_key" $* } =20 __chk_listen() @@ -141,6 +159,25 @@ chk_msk_listen() nr=3D$(ss -Ml $filter | wc -l) } =20 +chk_msk_inuse() +{ + local expected=3D$1 + local listen_nr + + listen_nr=3D$(ss -N $ns -Ml | grep -c LISTEN) + expected=3D$(($expected+$listen_nr)) + shift 1 + + for i in $(seq 10); do + if [ $(get_msk_inuse) -eq $expected ];then + break + fi + sleep 0.1 + done + + __chk_nr get_msk_inuse $expected $* +} + # $1: ns, $2: port wait_local_port_listen() { @@ -194,8 +231,10 @@ wait_connected $ns 10000 chk_msk_nr 2 "after MPC handshake " chk_msk_remote_key_nr 2 "....chk remote_key" chk_msk_fallback_nr 0 "....chk no fallback" +chk_msk_inuse 2 "....chk 2 msk in use" flush_pids =20 +chk_msk_inuse 0 "....chk 0 msk in use after flush" =20 echo "a" | \ timeout ${timeout_test} \ @@ -212,6 +251,8 @@ wait_connected $ns 10001 chk_msk_fallback_nr 1 "check fallback" flush_pids =20 +chk_msk_inuse 0 "....chk 0 msk in use after flush" + NR_CLIENTS=3D100 for I in `seq 1 $NR_CLIENTS`; do echo "a" | \ @@ -231,6 +272,9 @@ for I in `seq 1 $NR_CLIENTS`; do done =20 wait_msk_nr $((NR_CLIENTS*2)) "many msk socket present" +chk_msk_inuse $((NR_CLIENTS*2)) "....chk many msk in use" flush_pids =20 +chk_msk_inuse 0 "....chk 0 msk in use after flush" + exit $ret --=20 2.37.2