From nobody Fri Apr 26 13:59:51 2024 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.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 CCBA22F21 for ; Thu, 3 Nov 2022 11:07:33 +0000 (UTC) Received: by mail-pf1-f196.google.com with SMTP id 130so1258960pfu.8 for ; Thu, 03 Nov 2022 04:07:33 -0700 (PDT) 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=/sOx9vLy2QE28bKyN2t1/1xkztHyRHzHdVNOvKble7A=; b=GTAaAJupekkcODiDo0rGjELdVqMl04L+fmXo6NN90Q/Ito8mPzAGtecDXm/pmid3zR 68oOJ8CJUzGdAk4WkG2NTQcIIqFUX8SplIQvAW2wV9f946QdInuieVYbKvkDpSaM8Sbm NpkOwPFNb4glW5BwEQKNwztpvkefYYGUUunTrkCdNtVJiAx+6hb/ZYopAuwXvQgzEs0x g0YjqRDfhtmWEvRgHhokGb8oPAWxwGgL5OoLCgBWkDXvSoA/RfdT6qpJgWbgJCUH5x11 KRfGq68s+iaiUEJcgf3tlqexqIR4gIdo2flv3SxCgkNVAoKqXi1ae9WEVnNyvnlnkUwf aAeQ== 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=/sOx9vLy2QE28bKyN2t1/1xkztHyRHzHdVNOvKble7A=; b=q8vRP3W0mAgsln+U3M0ObPdUmUg5Yl2FOhNDWwtUYUNGmuAi5ZEK+M3C14ZU2NzeSe HWY3IW4vYjJhJASXlP3q0jGxubbhpsBWCsr2jk7+3/WjveYnFOH53H8NOKVSAJmzO5Kf +dM1mjN2fy3Z04QkF3UVM/rzJyu6Faa9dGvWCUNAHEpgx9y+h46w39gPHPr57n+ITRxw 52LDVpl62yyIVyyCvNNnRfVq0jn3uzStqw6tnjFy4TLqlCVsIhdLXanCJzD9NlsXmP5Z f0qjCfpiAZKSQ2fvZC3gozE91pEOgvFy3ao3n/8/JOUINtVQZc59GdXeHJs4YC0sRfYi f9VA== X-Gm-Message-State: ACrzQf3OdUP78UAl14f+SqVq+05gHkn5V5n1xTxu3aPc4miZ+SdVSQH3 6dhs4WTZTJdzFLyjlNjRGf8= X-Google-Smtp-Source: AMsMyM66qZdlV5TRCe6/GnulbcyVg4M2g1Hdw8WYkAs2gkpvDJ/ProLWH+iJLXlUUEXOm2Ldr0VBMg== X-Received: by 2002:a05:6a00:1884:b0:56c:636a:d554 with SMTP id x4-20020a056a00188400b0056c636ad554mr29787934pfh.18.1667473653336; Thu, 03 Nov 2022 04:07:33 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.83]) by smtp.gmail.com with ESMTPSA id w14-20020a627b0e000000b0056bd4ec964csm450555pfc.194.2022.11.03.04.07.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 04:07:32 -0700 (PDT) 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 v6 1/4] mptcp: introduce 'sk' to replace 'sock->sk' in mptcp_listen() Date: Thu, 3 Nov 2022 19:06:46 +0800 Message-Id: <20221103110649.299284-2-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221103110649.299284-1-imagedong@tencent.com> References: <20221103110649.299284-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 ddeb8b36a677..151d22c91b7e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3653,12 +3653,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; @@ -3666,16 +3667,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 Fri Apr 26 13:59:51 2024 Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) (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 7C6AB2F21 for ; Thu, 3 Nov 2022 11:07:41 +0000 (UTC) Received: by mail-pj1-f65.google.com with SMTP id f5-20020a17090a4a8500b002131bb59d61so5231603pjh.1 for ; Thu, 03 Nov 2022 04:07:41 -0700 (PDT) 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=LMC/FaXCklvWVbgeLHA5owCI176LRpZvem/NIC6gb5E=; b=IrYdjwRTz57zpnt0LWpWrIjan1XiLbobmJlA4xINgRdKy/rAy0NUYjjdQDO5l32dB9 TKh8aGddW6xWrQDD2PyUeG/f4v8zFHMT+xHihJZj+gf+fEwNpsF+ClIT4RsFz3q3Iu2P GdaL92Zafeh/awa1EerEO6gsvKqz/1cP1F9o8z9zEZaquZ0+JeH1fcu2lNkJBhn93S2G kNpu4n6YsPxqWPV0phDuQ975dpfS+RpXUTBU/J/3/p9MU7GiZtRTkBlDw0bVrXq7BADQ 22XDea/k0oARYkYsVrB9EDsm7CcmLqmnJPrJj7vIWTlw5l+cpPcwAzUmS6sqpfniedCb +mGw== 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=LMC/FaXCklvWVbgeLHA5owCI176LRpZvem/NIC6gb5E=; b=yWO44GE3FemrotB6rkWr47a17l/2Z2PbxjRfyef6/tAVoMhGa5vLMvqaxsTurkQvI7 YDZ1H0O8tKI9bFjfxHFYCgw+p0nSJ1PBVZzzriAKhoigtsKJyf59NGijGcs9dUiMCrLq gX/sVdCDqbFSquZvALcMYv/ThBlG5vu0qIpC8tFXbNmBMYbyz2r77GdsqhBy9KA+TLEK zGmsCBxhQxreWhrSITx/3eXZBy9yinbhOQ6bNuyso/6w4puk8BSU4WZXqV50l6OsDmGj PBGNWdKVLM80lWQonfG/rdSh6apFoydQvCdpbPCjGNDKvpO9HP7CJjjFiPIQjVAQRVsh PZYw== X-Gm-Message-State: ACrzQf0EpvVjlxD8aa5odUpgELKAhpRRXuc5yhJUxVgOPvDZWvkRhaeY vOyRBoIB99PvGIL34KxE5Qw= X-Google-Smtp-Source: AMsMyM5l4GiP4KvVE1Uv7HsU0DKrb9xgRR0eCGe+kaWvHoEnmJKjWk4WlkGk1DB2/mxPTfB1y9sB3A== X-Received: by 2002:a17:90a:f306:b0:213:b191:f3bf with SMTP id ca6-20020a17090af30600b00213b191f3bfmr28502440pjb.237.1667473661030; Thu, 03 Nov 2022 04:07:41 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.83]) by smtp.gmail.com with ESMTPSA id w14-20020a627b0e000000b0056bd4ec964csm450555pfc.194.2022.11.03.04.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 04:07:40 -0700 (PDT) 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 v6 2/4] mptcp: add statistics for mptcp socket in use Date: Thu, 3 Nov 2022 19:06:47 +0800 Message-Id: <20221103110649.299284-3-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221103110649.299284-1-imagedong@tencent.com> References: <20221103110649.299284-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 151d22c91b7e..0abdba83a576 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3068,6 +3068,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); mptcp_init_sched(msk, mptcp_sk(sk)->sched); =20 if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { @@ -3177,6 +3178,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 */ @@ -3540,6 +3543,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 @@ -3672,8 +3676,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 8f48f881adf8..d6d2ab17129b 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 @@ -383,6 +384,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 02a54d59697b..c5934140f3f3 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 Fri Apr 26 13:59:51 2024 Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.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 9C0CC2F21 for ; Thu, 3 Nov 2022 11:07:48 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id h193so1335890pgc.10 for ; Thu, 03 Nov 2022 04:07:48 -0700 (PDT) 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=j70pXe6qtRTH6IJ5tGQVynFQMEQiZy8JLmYwYmGgO+8gMkxty4hsXQ0aDjS3xEU2tA 6R/YrUXkfV2U2ANOKsAm/Y0HhpipfvSEpsNigV3e2oc2EN0yxoxHlWA536Hwzz9eBwbs sN6bJ6/gQUDID/TjrxLYS6GBTL5lkqcVKPXQhvOWU9SuFJC54YOJup4W6XjCQl66Jf8e wwxx2a+3v6QN4kI7deqmAe3OTAzSa+sKMegVnIyFSVpZ6o09vdtmMQgB1RiKM6f18WQe r3M7fDg1UOSFnO0WluRfe1sXV6t2VpnWh+nRUq+2/bu95deGS6HBjQm+f85PF1nPRSfC Hpvw== 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=p2SLr07k6cDgWhQNIkp15IL7bhHHfZf9lsvpWVfvJpCI2s1qvALG2Lic1qOfo8C8A7 hOgCngaqLYT6F1gxNjDE5OKeDGdCkOkqzyFOSAqoihutv6+m7RQdbIuwIdtt5HmIYMn/ M4eyydcPrYkIWcjfapAB+CjCdUF/m0HuM+FL7gb/zV88YHPQFlImpAezdNzBmpzLNNPF z6S7HXkfLcFuHm+Vsu99ZKWoHBxA9w9L0F5w8u+pSnO/nf8Yn1utHVHqNHcqS/h2HLjP +JjN8Uxutod5c4G0H5qS7SksR0N+5sYdsP9Bh6Eo0o9Zv9Wtuj5LzcIUTfkWynCdXH3n ThjQ== X-Gm-Message-State: ACrzQf3SYskmuxnnnsjwYB33Q1/WkBr9zr0xQT1sIm0bpSYtdOyUd/lO szqeN8tGxiuhr3bp1OJIkKQ= X-Google-Smtp-Source: AMsMyM4PqTmKTbRZvvZmbUCfjs1bsulazQJSaviUNERRsyaeu2SqRynuIysWy2RA9mP1qprfp6ucIA== X-Received: by 2002:a65:4909:0:b0:46b:2752:e4ab with SMTP id p9-20020a654909000000b0046b2752e4abmr25964529pgs.293.1667473668123; Thu, 03 Nov 2022 04:07:48 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.83]) by smtp.gmail.com with ESMTPSA id w14-20020a627b0e000000b0056bd4ec964csm450555pfc.194.2022.11.03.04.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 04:07:47 -0700 (PDT) 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 v6 3/4] selftest: mptcp: exit from copyfd_io_poll() when receive SIGUSR1 Date: Thu, 3 Nov 2022 19:06:48 +0800 Message-Id: <20221103110649.299284-4-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221103110649.299284-1-imagedong@tencent.com> References: <20221103110649.299284-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 Fri Apr 26 13:59:51 2024 Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.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 62FA42F21 for ; Thu, 3 Nov 2022 11:07:55 +0000 (UTC) Received: by mail-pg1-f196.google.com with SMTP id s196so1360445pgs.3 for ; Thu, 03 Nov 2022 04:07:55 -0700 (PDT) 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=IFVgivVw6M9+GgI53tlp2IfU3DX6z8d/psWvyGeKtOo=; b=mt6BfGem0IihRM6JeSoDHXYK5rpkbknVMm6/NWUO+TizagETwQprDcAB6vtKyloZn0 EJtel9CbZeaoj7+zeU5e4RuEZ1lWvtV5XNCFBCEPAPkJzhfmEsMCWtYZHcBlUVQW0gEJ 5Myox6TMaMPGt34qWvgjQwBEVrkfGpHRnKlYa9Qe4sJlCUhNSvmZiWdQ1tz7ZOIsvQlz SYMU47d3WxGZy8H6p5RWwhUXWGVicMkjxMLYLtYs0PyMpv0wk01kuCkMDW3UW6fTxJvW ImoQK7LZGjJXiYXiaCGkEEZ/sCC0TxI00oYV8UsF2aaKMM/hGoIN33ym2fPf9n/qIwr8 4rAg== 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=IFVgivVw6M9+GgI53tlp2IfU3DX6z8d/psWvyGeKtOo=; b=Ch7wyYQRqJF7SAPmj3PzTNQRI5OI6ntexbZIDDww9/i1WOSTjnDvnrG1fD0F2xR8A8 h0U/LW2dv1xTRPnN8R2H/FXHreWcy642KY5CUn+Cq+CuFJ30QruGrDE2YVSWAjGDdkSy Ygd5/Gvdeb+ySc9c3EYSncV65svIZwPiDC7DiECeJ2om9nhebkYHVMRzJnahwMR814lU mFK8Bz4Ur49HHdknFry/xOaRIhsRJHRuHXsoQ+3ZI3TDoxgKji0dPjZXnPrBdliAw3Ph IhiEGMUNPD7ucbml8OtrXxf2qsynP51KLdLd9AB1BUbzuHBEIAnZ4oJSpSsBfocNADqO pYUw== X-Gm-Message-State: ACrzQf2rcVdtMAfpBOFBYRluy2b9aPjGObdTSYsqVQFsAyw3sf0v2YZN nsa6NfCLlqIPU/3aIp8dpFA= X-Google-Smtp-Source: AMsMyM533QhuB6uR+344tloOntQ7kCPOerDmweZyloRg/2u2SnnKagSuxRmuwEyce/c852Y4rV6qXw== X-Received: by 2002:a05:6a00:8ce:b0:56e:6961:c6b6 with SMTP id s14-20020a056a0008ce00b0056e6961c6b6mr518146pfu.3.1667473674928; Thu, 03 Nov 2022 04:07:54 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.83]) by smtp.gmail.com with ESMTPSA id w14-20020a627b0e000000b0056bd4ec964csm450555pfc.194.2022.11.03.04.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Nov 2022 04:07:54 -0700 (PDT) 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 v6 4/4] selftest: mptcp: add test for mptcp socket in use Date: Thu, 3 Nov 2022 19:06:49 +0800 Message-Id: <20221103110649.299284-5-imagedong@tencent.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221103110649.299284-1-imagedong@tencent.com> References: <20221103110649.299284-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 --- v6: - reuse __chk_nr to check the number of msk in use --- tools/testing/selftests/net/mptcp/diag.sh | 47 ++++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/self= tests/net/mptcp/diag.sh index 515859a5168b..9994cb23f8a0 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -36,15 +36,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 +61,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 +109,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 +154,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 +226,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} \ @@ -231,6 +265,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