From nobody Fri May 3 10:09:04 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 BCD5762C for ; Thu, 8 Dec 2022 02:46:33 +0000 (UTC) Received: by mail-pf1-f195.google.com with SMTP id k79so197776pfd.7 for ; Wed, 07 Dec 2022 18:46:33 -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=UwpGsX7iMK5E/SJU2XUAJwEavDvM+3ejc/xz/wz/5o8=; b=I1GSrrI+Z4ghtqwS3fEwaXW5h6rM3fOHp5rIiv/Tt5cX3NmiYsiPoQTmEMLPBJNJ3w wvSFy3rztm+JMGG8m0xrEYisgxwBO2LxUjFx/cXqnKNcQPbL0AmmFfHRBAzzZsn966iI KaTXYGCJiC1/ZdK3ooVOyUge+m4gPdiqFu7erk01jmXYdxvzSABx/Vs+EJSFq3mu9ivA yljC7BmOJixbpyU5YassGBgUM/3oaBm5Z4mhLVIEl2Grcld4r9jq8FSv0LWSq32vuA8y iVwk2Hqz8BZroS3kPgjmzsU9ZF19wTiqYHkh+TKe5X1DxLwrANpbSDYaobMS+pFfZp+n zHMA== 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=UwpGsX7iMK5E/SJU2XUAJwEavDvM+3ejc/xz/wz/5o8=; b=UpjO1icI2TiOdisIZMLVabSSWj9ZjxDq0/YjKgOd9PYhWITwUhxMeqvPTVAYTe/M4v FCGOuMmrQCz85za1B47bsDmqtUvLUFBOZbwbAYUe9GVZFYfwsLyHU2akGxpYXmMuGu7p z7KN6IGyNvmoNG7OEJakknKJkcI+BLkM5SrSMTSWqDKMGF81mE9F+CjQoIptwQQPsqBk GZ2EnzzBKvIXRd7kzzcrfeA29PHP0HDLiQ+PGMNleeqXW+HhbmOs7k3FAn9qclKuACk8 EDb+gqJY7ypv2QWFxkF1TU7PWwCA5NOMjSS4Ua6A1DKDB3BiEkLDxE/phOwfAp2ALUi0 u8Sg== X-Gm-Message-State: ANoB5pl+Dby4l4m4zzmThe2ctTd1tRsKzWSec4HIcsa9no7jrm8aZ5Xj JlsqbBMqFkpZ+TyBCJ4IxM8= X-Google-Smtp-Source: AA0mqf7e7w2YvD6IwSfi5TyRwyY6bK6TwYx3nPVe2RbVMtoSDg4jt+WceO7Ddc7AzRkJJDWpWR6hDQ== X-Received: by 2002:a63:5408:0:b0:478:31a5:3656 with SMTP id i8-20020a635408000000b0047831a53656mr40542750pgb.273.1670467593095; Wed, 07 Dec 2022 18:46:33 -0800 (PST) Received: from localhost.localdomain ([203.205.141.17]) by smtp.gmail.com with ESMTPSA id a26-20020aa78e9a000000b005769cee6735sm8606394pfr.43.2022.12.07.18.46.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Dec 2022 18:46:32 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: pabeni@redhat.com, mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v8 1/4] mptcp: introduce 'sk' to replace 'sock->sk' in mptcp_listen() Date: Thu, 8 Dec 2022 10:45:40 +0800 Message-Id: <20221208024543.113633-2-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221208024543.113633-1-imagedong@tencent.com> References: <20221208024543.113633-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 6d03bdcda33e..ffdccf26af99 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3656,12 +3656,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; @@ -3669,18 +3670,18 @@ 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 mptcp_event_pm_listener(ssock->sk, MPTCP_EVENT_LISTENER_CREATED); =20 unlock: - release_sock(sock->sk); + release_sock(sk); return err; } =20 --=20 2.37.2 From nobody Fri May 3 10:09:04 2024 Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) (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 E406162C for ; Thu, 8 Dec 2022 02:46:37 +0000 (UTC) Received: by mail-pj1-f66.google.com with SMTP id u5so319784pjy.5 for ; Wed, 07 Dec 2022 18:46:37 -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=SDxupugxA4j3iu+Sx18nuzXfQ7swC3BH0oWcZxdifXg=; b=Osz5AxCUNvAhuCrLuBmLVsyKP10CRBLmWtk4r/veD6Tf71DtQ7XQ98oKqTooPThUyy 5J0Sow/Trh01gMaO3RbKpXSnE23KBbhNabP6OjLyq9DQvS+ia2WLK04ax0Vvc/cqcDFt 4deQ0i852wonZ6cN3GuKbSpXQYkk8Q7lgRdbDqnAFUxMQ5RKEvvSI6eBpvzGApBk8Jd3 4OOCjAD/nsfjYzTw0opQmM9d9qM25ZxyIFpO0LEnX63ni8sQAnYxgMEiOwS4md2FmMtg vrAH/rej2Sqi6Lkl30JLV21jdYDNM4NHz+uzflT7CaAvd3TNT5XqRYeMJY8B4rKdib+D YBBQ== 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=SDxupugxA4j3iu+Sx18nuzXfQ7swC3BH0oWcZxdifXg=; b=OV8hCnJpq5mva1M8eEDBpQ5O3fd64OX6pCsrhP7K9sOlDgZtERhTBxYNLXx3GvbclI KDNe6rYaygkEM0D6jrn9Jygkpq3kF02yFOOgxkejrmziwvS93xH68BMlNjlkwa2hCCiF iUNUb0vE9NFh6Oe2tWwkO9hrmjSYE9eoodkk7IB4Kq84P54ajvLjHdKph5w0+F030hBs G200Knj4Nm0sVq9KxNk8LCl8GJ03CMaNesrtwhm7T56Ip3EsSOhi+NqwlP6fcpCfgTaE 78s61xvzY73raK25YvojbTGfYCTP564UT4R2MXcAiNkf3+NC3XJAp7q0r+Ch/hc4dwKj Yigw== X-Gm-Message-State: ANoB5pkqnqmbYgWDK15BfSpDU96jwWi7t8mRc7aXLZ3/n/Cu95eql3D+ Wd+7CQYXKoytJmGxr1JRXN4= X-Google-Smtp-Source: AA0mqf68u/UNsz7EIpcjryq9W2vetNGgipFAmulAdOHmMNBATA3j08F2kB1MD1t4SOD3Ab1POU0YGg== X-Received: by 2002:a17:902:c104:b0:189:a931:c8a1 with SMTP id 4-20020a170902c10400b00189a931c8a1mr39056593pli.112.1670467597367; Wed, 07 Dec 2022 18:46:37 -0800 (PST) Received: from localhost.localdomain ([203.205.141.17]) by smtp.gmail.com with ESMTPSA id a26-20020aa78e9a000000b005769cee6735sm8606394pfr.43.2022.12.07.18.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Dec 2022 18:46:37 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: pabeni@redhat.com, mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v8 2/4] mptcp: add statistics for mptcp socket in use Date: Thu, 8 Dec 2022 10:45:41 +0800 Message-Id: <20221208024543.113633-3-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221208024543.113633-1-imagedong@tencent.com> References: <20221208024543.113633-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 --- v8: - remove the MPTCP_INUSE flag and do the statistics according to the creation and destruction of the token 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 --- net/mptcp/protocol.c | 16 +++++++++++++++- net/mptcp/token.c | 7 +++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index ffdccf26af99..775454a9d49b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3005,6 +3005,16 @@ void mptcp_copy_inaddrs(struct sock *msk, const stru= ct sock *ssk) inet_sk(msk)->inet_rcv_saddr =3D inet_sk(ssk)->inet_rcv_saddr; } =20 +static void mptcp_listen_inuse_dec(struct sock *sk) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct socket *ssock; + + ssock =3D __mptcp_nmpc_socket(msk); + if (ssock && inet_sk_state_load(ssock->sk) =3D=3D TCP_LISTEN) + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); +} + static int mptcp_disconnect(struct sock *sk, int flags) { struct mptcp_sock *msk =3D mptcp_sk(sk); @@ -3025,6 +3035,7 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) if (msk->token) mptcp_event(MPTCP_EVENT_CLOSED, msk, NULL, GFP_KERNEL); =20 + mptcp_listen_inuse_dec(sk); /* msk->subflow is still intact, the following will not free the first * subflow */ @@ -3203,6 +3214,7 @@ static void mptcp_destroy(struct sock *sk) { struct mptcp_sock *msk =3D mptcp_sk(sk); =20 + mptcp_listen_inuse_dec(sk); /* clears msk->subflow, allowing the following to close * even the initial subflow */ @@ -3675,8 +3687,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) { + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); mptcp_copy_inaddrs(sk, ssock->sk); + } =20 mptcp_event_pm_listener(ssock->sk, MPTCP_EVENT_LISTENER_CREATED); =20 diff --git a/net/mptcp/token.c b/net/mptcp/token.c index 65430f314a68..54064146175f 100644 --- a/net/mptcp/token.c +++ b/net/mptcp/token.c @@ -175,6 +175,9 @@ int mptcp_token_new_connect(struct sock *sk) __sk_nulls_add_node_rcu((struct sock *)msk, &bucket->msk_chain); bucket->chain_len++; spin_unlock_bh(&bucket->lock); + sock_prot_inuse_add(sock_net(subflow->conn), + subflow->conn->sk_prot, + 1); return 0; } =20 @@ -190,8 +193,10 @@ void mptcp_token_accept(struct mptcp_subflow_request_s= ock *req, struct mptcp_sock *msk) { struct mptcp_subflow_request_sock *pos; + struct sock *sk =3D (struct sock *)msk; struct token_bucket *bucket; =20 + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); bucket =3D token_bucket(req->token); spin_lock_bh(&bucket->lock); =20 @@ -370,12 +375,14 @@ void mptcp_token_destroy_request(struct request_sock = *req) */ void mptcp_token_destroy(struct mptcp_sock *msk) { + struct sock *sk =3D (struct sock *)msk; struct token_bucket *bucket; struct mptcp_sock *pos; =20 if (sk_unhashed((struct sock *)msk)) return; =20 + sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); bucket =3D token_bucket(msk->token); spin_lock_bh(&bucket->lock); pos =3D __token_lookup_msk(bucket, msk->token); --=20 2.37.2 From nobody Fri May 3 10:09:04 2024 Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.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 ABBAA62C for ; Thu, 8 Dec 2022 02:46:42 +0000 (UTC) Received: by mail-pl1-f195.google.com with SMTP id a9so225417pld.7 for ; Wed, 07 Dec 2022 18:46:42 -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=NRCLrOsnQv07IXKjODW+I7y37LWMYDrzNA1WfJvP1nQ=; b=N/CkSZHjQMiVTSlkUTS2f5BzDh54vRh707coeYceXRQLquIu0RYosqVTyptHU3eW9B 2j1/Ko4Pm8DWJGuIIwJBI7xQnPaEmeyItxUQDoejljH8ItoDq3C3LDdtJDzjOU+ATUIy C9ZATqm41hRhiLBwC0mOmgP500k5KbDeEccCNnj4SwYy6vaCA5kmxqszJvSXhuCwfc4f dh55edgVMbwMUHQhhuco2Ot6kwa8jmizfKLdn1BtxNP9Vt1RvmlXo38x7PeKNDHqPVW2 rrDpeLmCgb5iEHD4fM0Uy8Rxs/FFrsR7XQkHd7fIikItI6u5Psr/mnY4xAfKou1BZx3O aAyw== 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=NRCLrOsnQv07IXKjODW+I7y37LWMYDrzNA1WfJvP1nQ=; b=3oFiYV4bF+dPmJOEhTNvo3ffsmZgiso/UDH3ZyVhm+KmUy6X6kV4FjomY1dXGMIpx5 eRmesXkMfdmUR4JNsJCDj/Cqy1PBHKJBSeexXcJP37s/EFssmMrGJwJzNpUoldLzaumk 82E9KTY7GwgnqIUdQWsoK5dGQI2s9rwR4IIJtSyygVOmyeF/IHlbAxAjYFMMcZDzPAVw lRtJHphugRDTpQig0ZKnUHmQzYDl7ZLg5d+iAkARmWZU1GCLlg8yJ1IMEQ2k07IBtDoa 3VDK98ku/HLIIhub3UeQhjmJMS9gBq4kBZQmU1CQsScG528w08J2fZDAu8b9Tzwuc17O SD+A== X-Gm-Message-State: ANoB5pnqesW6weN2qcw18C22/9DX18xNjHa5ek627zTUpM8qh19a8/pS m8urMyKCuiTmHz+fD4BotdU= X-Google-Smtp-Source: AA0mqf4kWe7QD3KmlgWyvl/xvRsHf5PkLNy2Mtvy+6P1plQ1fJCPO0yRJEy1ZtLjaKuXbYAUBHHh8Q== X-Received: by 2002:a17:90a:bd85:b0:219:8198:c121 with SMTP id z5-20020a17090abd8500b002198198c121mr32903022pjr.139.1670467602160; Wed, 07 Dec 2022 18:46:42 -0800 (PST) Received: from localhost.localdomain ([203.205.141.17]) by smtp.gmail.com with ESMTPSA id a26-20020aa78e9a000000b005769cee6735sm8606394pfr.43.2022.12.07.18.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Dec 2022 18:46:41 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: pabeni@redhat.com, mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v8 3/4] selftest: mptcp: exit from copyfd_io_poll() when receive SIGUSR1 Date: Thu, 8 Dec 2022 10:45:42 +0800 Message-Id: <20221208024543.113633-4-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221208024543.113633-1-imagedong@tencent.com> References: <20221208024543.113633-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 8a8266957bc5..b25a31445ded 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -627,7 +627,7 @@ static int copyfd_io_poll(int infd, int peerfd, int out= fd, 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)) { @@ -733,7 +733,7 @@ static int copyfd_io_poll(int infd, int peerfd, int out= fd, } =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 Fri May 3 10:09:04 2024 Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) (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 AECB462C for ; Thu, 8 Dec 2022 02:46:49 +0000 (UTC) Received: by mail-pl1-f196.google.com with SMTP id jl24so222609plb.8 for ; Wed, 07 Dec 2022 18:46:49 -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=dgtwbM9/80y8yPptKc/3f93/fPhOk90dsnObLjOfD9E=; b=aoAUJJjCuv131Xbp1+q6Tuo1Z4Yn19M4OJk+y3nPFp1+ddgVhsaj8PAILaWs2jhWLA 9RsMZkI7dqSLSZfyeOKBKhoKNyByLKZ+VwmoeIwTPQuWBEmipq6/zjJw73iqGidGISRW xHiJRXHg1dNCk0Not3tW0JtA8mI4fxuN4+uK3Uvf6aUI92T/Y9rXJWFexzykMWVNYJw2 KqENYtvrp2PuiC97nBIF97Nnnk+J4WOL1gGBBJXby11+AOSLPLb9NppfjWELQbPQz2fS 1kR913GCILfRl3mp2GKWzuaafMtubkFCInXbkq18xnJU6vCgKAp8DUMwd+pNHiUMs3sP 7jwA== 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=dgtwbM9/80y8yPptKc/3f93/fPhOk90dsnObLjOfD9E=; b=dsN3bU4r6N/j4OEtfyiwQxAX6IjVKJC/U0IuTgOUBmjeOzfd1Vrfexf+hkdGjHOdDk mTNITRUcGL+igIdoP5JnnWSs9kXRd0xoRCcGGd2hZwoeLAF8IvCuC281HCwmHzaxyImB Gakvj8XqtAyCLDZV2VyIMW3t6vtz4Khnny325A8LmmYvvZtjwCYFu/dJ1xXIUVis8Cxw xqGpKTeA7OeRiVoniVUqosSCbmkTPiagcQwwFJWI2WFQZBdkyCCgsOMhWtstOSy9LMUP hjwGxBA6w86M+lB+OCsKmaQzw5lfIFQRgE8WWbbOV9Ap1319dP71CZbjwnHIyL3IcHSN YK1A== X-Gm-Message-State: ANoB5plRiFVGCt9/lnXiFD7u2UFHYTKq9OkyAJ5XZvvvcnaVFh8HC9Tq POHAWekjSyUe/JJaUGx/iR0= X-Google-Smtp-Source: AA0mqf4R0EwhkKm+hw0DR4/HXUn3mLwpYD67iIRs86WpRsBUR/1Q3Lkrgo2/+xvwsQW9U21I8h5FXQ== X-Received: by 2002:a17:902:ee82:b0:189:f0ce:43db with SMTP id a2-20020a170902ee8200b00189f0ce43dbmr7547530pld.88.1670467609120; Wed, 07 Dec 2022 18:46:49 -0800 (PST) Received: from localhost.localdomain ([203.205.141.17]) by smtp.gmail.com with ESMTPSA id a26-20020aa78e9a000000b005769cee6735sm8606394pfr.43.2022.12.07.18.46.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Dec 2022 18:46:48 -0800 (PST) From: menglong8.dong@gmail.com X-Google-Original-From: imagedong@tencent.com To: pabeni@redhat.com, mathew.j.martineau@linux.intel.com, matthieu.baerts@tessares.net Cc: mptcp@lists.linux.dev, Menglong Dong Subject: [PATCH mptcp-next v8 4/4] selftest: mptcp: add test for mptcp socket in use Date: Thu, 8 Dec 2022 10:45:43 +0800 Message-Id: <20221208024543.113633-5-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221208024543.113633-1-imagedong@tencent.com> References: <20221208024543.113633-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 | 56 +++++++++++++++++++++-- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index 24bcd7b9bdb2..ef628b16fe9b 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -17,6 +17,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() @@ -37,15 +42,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 @@ -57,9 +67,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() @@ -97,12 +115,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() @@ -142,6 +160,26 @@ chk_msk_listen() nr=3D$(ss -Ml $filter | wc -l) } =20 +chk_msk_inuse() +{ + local expected=3D$1 + local listen_nr + + shift 1 + + listen_nr=3D$(ss -N "${ns}" -Ml | grep -c LISTEN) + expected=3D$((expected + listen_nr)) + + for _ 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() { @@ -195,8 +233,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} \ @@ -211,8 +251,11 @@ echo "b" | \ 127.0.0.1 >/dev/null & wait_connected $ns 10001 chk_msk_fallback_nr 1 "check fallback" +chk_msk_inuse 1 "....chk 1 msk in use" 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" | \ @@ -232,6 +275,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