* [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB
@ 2023-12-11 8:19 Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 1/5] mptcp: add mib counter dec helper Geliang Tang
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
v4:
- rebased.
v3:
- add mptcp_set_state helper
v2:
- use ftrace_regs_get_argument instead of regs_get_kernel_argument to
fix build warnings reported kernel test robot.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/460
Geliang Tang (5):
mptcp: add mib counter dec helper
mptcp: add a current established counter
mptcp: add mptcp_set_state helper
mptcp: use mptcp_set_state
selftests: mptcp: join: check CURRESTAB counters
net/mptcp/mib.c | 1 +
net/mptcp/mib.h | 8 +++
net/mptcp/pm_netlink.c | 3 +
net/mptcp/protocol.c | 57 ++++++++++++-------
net/mptcp/protocol.h | 1 +
net/mptcp/subflow.c | 2 +-
.../testing/selftests/net/mptcp/mptcp_join.sh | 45 +++++++++++++--
7 files changed, 92 insertions(+), 25 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH mptcp-next v4 1/5] mptcp: add mib counter dec helper
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
@ 2023-12-11 8:19 ` Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 2/5] mptcp: add a current established counter Geliang Tang
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Similar to MPTCP_INC_STATS() helper, this patch adds a new helper named
MPTCP_DEC_STATS() to decrement a MIB counter.
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
net/mptcp/mib.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index cae71d947252..9b7c366675ec 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -95,4 +95,11 @@ static inline void __MPTCP_INC_STATS(struct net *net,
__SNMP_INC_STATS(net->mib.mptcp_statistics, field);
}
+static inline void MPTCP_DEC_STATS(struct net *net,
+ enum linux_mptcp_mib_field field)
+{
+ if (likely(net->mib.mptcp_statistics))
+ SNMP_DEC_STATS(net->mib.mptcp_statistics, field);
+}
+
bool mptcp_mib_alloc(struct net *net);
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH mptcp-next v4 2/5] mptcp: add a current established counter
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 1/5] mptcp: add mib counter dec helper Geliang Tang
@ 2023-12-11 8:19 ` Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper Geliang Tang
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new MIB counter named MPTCP_MIB_CURRESTAB to count
current established MPTCP connections.
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
net/mptcp/mib.c | 1 +
net/mptcp/mib.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index a0990c365a2e..c30405e76833 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -66,6 +66,7 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("RcvWndShared", MPTCP_MIB_RCVWNDSHARED),
SNMP_MIB_ITEM("RcvWndConflictUpdate", MPTCP_MIB_RCVWNDCONFLICTUPDATE),
SNMP_MIB_ITEM("RcvWndConflict", MPTCP_MIB_RCVWNDCONFLICT),
+ SNMP_MIB_ITEM("MPCurrEstab", MPTCP_MIB_CURRESTAB),
SNMP_MIB_SENTINEL
};
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 9b7c366675ec..dd7fd1f246b5 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -65,6 +65,7 @@ enum linux_mptcp_mib_field {
* conflict with another subflow while updating msk rcv wnd
*/
MPTCP_MIB_RCVWNDCONFLICT, /* Conflict with while updating msk rcv wnd */
+ MPTCP_MIB_CURRESTAB, /* Current established MPTCP connections */
__MPTCP_MIB_MAX
};
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 1/5] mptcp: add mib counter dec helper Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 2/5] mptcp: add a current established counter Geliang Tang
@ 2023-12-11 8:19 ` Geliang Tang
2023-12-12 17:59 ` Paolo Abeni
2023-12-11 8:19 ` [PATCH mptcp-next v4 4/5] mptcp: use mptcp_set_state Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 5/5] selftests: mptcp: join: check CURRESTAB counters Geliang Tang
4 siblings, 1 reply; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new function mptcp_set_state(), in it if switch from
or to ESTABLISH state, increment or decrement the newly added counter
MPTCP_MIB_CURRESTAB.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/460
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
net/mptcp/protocol.c | 19 +++++++++++++++++++
net/mptcp/protocol.h | 1 +
2 files changed, 20 insertions(+)
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 4fc038d29623..23727f7394b6 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2885,6 +2885,25 @@ void mptcp_subflow_shutdown(struct sock *sk, struct sock *ssk, int how)
release_sock(ssk);
}
+void mptcp_set_state(struct sock *sk, int state)
+{
+ int oldstate = sk->sk_state;
+
+ switch (state) {
+ case TCP_ESTABLISHED:
+ if (oldstate != TCP_ESTABLISHED)
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB);
+ break;
+
+ default:
+ if (oldstate == TCP_ESTABLISHED)
+ MPTCP_DEC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB);
+ }
+
+ inet_sk_state_store(sk, state);
+}
+EXPORT_SYMBOL_GPL(mptcp_set_state);
+
static const unsigned char new_state[16] = {
/* current state: new state: action: */
[0 /* (Invalid) */] = TCP_CLOSE,
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index ac11044bef1d..f7b9c1b995df 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -646,6 +646,7 @@ bool __mptcp_close(struct sock *sk, long timeout);
void mptcp_cancel_work(struct sock *sk);
void __mptcp_unaccepted_force_close(struct sock *sk);
void mptcp_set_owner_r(struct sk_buff *skb, struct sock *sk);
+void mptcp_set_state(struct sock *sk, int state);
bool mptcp_addresses_equal(const struct mptcp_addr_info *a,
const struct mptcp_addr_info *b, bool use_port);
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH mptcp-next v4 4/5] mptcp: use mptcp_set_state
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
` (2 preceding siblings ...)
2023-12-11 8:19 ` [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper Geliang Tang
@ 2023-12-11 8:19 ` Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 5/5] selftests: mptcp: join: check CURRESTAB counters Geliang Tang
4 siblings, 0 replies; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch replaces all the 'inet_sk_state_store()' calls under net/mptcp
with the new helper mptcp_set_state().
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
net/mptcp/pm_netlink.c | 3 +++
net/mptcp/protocol.c | 38 +++++++++++++++++++-------------------
net/mptcp/subflow.c | 2 +-
3 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index bf4d96f6f99a..b93683b5e618 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1048,6 +1048,9 @@ static int mptcp_pm_nl_create_listen_socket(struct sock *sk,
if (err)
return err;
+ /* avoid replacing inet_sk_state_store with mptcp_set_state here, as the
+ * old status is known to be TCP_CLOSE, hence will not affect the count.
+ */
inet_sk_state_store(newsk, TCP_LISTEN);
lock_sock(ssk);
err = __inet_listen_sk(ssk, backlog);
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 23727f7394b6..1ef7ef20cc5d 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -443,11 +443,11 @@ static void mptcp_check_data_fin_ack(struct sock *sk)
switch (sk->sk_state) {
case TCP_FIN_WAIT1:
- inet_sk_state_store(sk, TCP_FIN_WAIT2);
+ mptcp_set_state(sk, TCP_FIN_WAIT2);
break;
case TCP_CLOSING:
case TCP_LAST_ACK:
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
break;
}
@@ -608,13 +608,13 @@ static bool mptcp_check_data_fin(struct sock *sk)
switch (sk->sk_state) {
case TCP_ESTABLISHED:
- inet_sk_state_store(sk, TCP_CLOSE_WAIT);
+ mptcp_set_state(sk, TCP_CLOSE_WAIT);
break;
case TCP_FIN_WAIT1:
- inet_sk_state_store(sk, TCP_CLOSING);
+ mptcp_set_state(sk, TCP_CLOSING);
break;
case TCP_FIN_WAIT2:
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
break;
default:
/* Other states not expected */
@@ -789,7 +789,7 @@ static bool __mptcp_subflow_error_report(struct sock *sk, struct sock *ssk)
*/
ssk_state = inet_sk_state_load(ssk);
if (ssk_state == TCP_CLOSE && !sock_flag(sk, SOCK_DEAD))
- inet_sk_state_store(sk, ssk_state);
+ mptcp_set_state(sk, ssk_state);
WRITE_ONCE(sk->sk_err, -err);
/* This barrier is coupled with smp_rmb() in mptcp_poll() */
@@ -2477,7 +2477,7 @@ static void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
inet_sk_state_load(msk->first) == TCP_CLOSE) {
if (sk->sk_state != TCP_ESTABLISHED ||
msk->in_accept_queue || sock_flag(sk, SOCK_DEAD)) {
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
mptcp_close_wake_up(sk);
} else {
mptcp_start_tout_timer(sk);
@@ -2572,7 +2572,7 @@ static void mptcp_check_fastclose(struct mptcp_sock *msk)
WRITE_ONCE(sk->sk_err, ECONNRESET);
}
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
WRITE_ONCE(sk->sk_shutdown, SHUTDOWN_MASK);
smp_mb__before_atomic(); /* SHUTDOWN must be visible first */
set_bit(MPTCP_WORK_CLOSE_SUBFLOW, &msk->flags);
@@ -2707,7 +2707,7 @@ static void mptcp_do_fastclose(struct sock *sk)
struct mptcp_subflow_context *subflow, *tmp;
struct mptcp_sock *msk = mptcp_sk(sk);
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
mptcp_for_each_subflow_safe(msk, subflow, tmp)
__mptcp_close_ssk(sk, mptcp_subflow_tcp_sock(subflow),
subflow, MPTCP_CF_FASTCLOSE);
@@ -2926,7 +2926,7 @@ static int mptcp_close_state(struct sock *sk)
int next = (int)new_state[sk->sk_state];
int ns = next & TCP_STATE_MASK;
- inet_sk_state_store(sk, ns);
+ mptcp_set_state(sk, ns);
return next & TCP_ACTION_FIN;
}
@@ -3037,7 +3037,7 @@ bool __mptcp_close(struct sock *sk, long timeout)
if ((1 << sk->sk_state) & (TCPF_LISTEN | TCPF_CLOSE)) {
mptcp_check_listen_stop(sk);
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
goto cleanup;
}
@@ -3080,7 +3080,7 @@ bool __mptcp_close(struct sock *sk, long timeout)
* state, let's not keep resources busy for no reasons
*/
if (subflows_alive == 0)
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
sock_hold(sk);
pr_debug("msk=%p state=%d", sk, sk->sk_state);
@@ -3146,7 +3146,7 @@ static int mptcp_disconnect(struct sock *sk, int flags)
return -EBUSY;
mptcp_check_listen_stop(sk);
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
mptcp_stop_rtx_timer(sk);
mptcp_stop_tout_timer(sk);
@@ -3234,7 +3234,7 @@ struct sock *mptcp_sk_clone_init(const struct sock *sk,
/* this can't race with mptcp_close(), as the msk is
* not yet exposted to user-space
*/
- inet_sk_state_store(nsk, TCP_ESTABLISHED);
+ mptcp_set_state(nsk, TCP_ESTABLISHED);
/* The msk maintain a ref to each subflow in the connections list */
WRITE_ONCE(msk->first, ssk);
@@ -3692,7 +3692,7 @@ static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
if (IS_ERR(ssk))
return PTR_ERR(ssk);
- inet_sk_state_store(sk, TCP_SYN_SENT);
+ mptcp_set_state(sk, TCP_SYN_SENT);
subflow = mptcp_subflow_ctx(ssk);
#ifdef CONFIG_TCP_MD5SIG
/* no MPTCP if MD5SIG is enabled on this socket or we may run out of
@@ -3742,7 +3742,7 @@ static int mptcp_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
if (unlikely(err)) {
/* avoid leaving a dangling token in an unconnected socket */
mptcp_token_destroy(msk);
- inet_sk_state_store(sk, TCP_CLOSE);
+ mptcp_set_state(sk, TCP_CLOSE);
return err;
}
@@ -3832,13 +3832,13 @@ static int mptcp_listen(struct socket *sock, int backlog)
goto unlock;
}
- inet_sk_state_store(sk, TCP_LISTEN);
+ mptcp_set_state(sk, TCP_LISTEN);
sock_set_flag(sk, SOCK_RCU_FREE);
lock_sock(ssk);
err = __inet_listen_sk(ssk, backlog);
release_sock(ssk);
- inet_sk_state_store(sk, inet_sk_state_load(ssk));
+ mptcp_set_state(sk, inet_sk_state_load(ssk));
if (!err) {
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
@@ -3898,7 +3898,7 @@ static int mptcp_stream_accept(struct socket *sock, struct socket *newsock,
__mptcp_close_ssk(newsk, msk->first,
mptcp_subflow_ctx(msk->first), 0);
if (unlikely(list_is_singular(&msk->conn_list)))
- inet_sk_state_store(newsk, TCP_CLOSE);
+ mptcp_set_state(newsk, TCP_CLOSE);
}
}
release_sock(newsk);
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 64302a1ac306..7ca70dc785af 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -422,7 +422,7 @@ static bool subflow_use_different_dport(struct mptcp_sock *msk, const struct soc
void __mptcp_sync_state(struct sock *sk, int state)
{
if (sk->sk_state == TCP_SYN_SENT) {
- inet_sk_state_store(sk, state);
+ mptcp_set_state(sk, state);
sk->sk_state_change(sk);
}
}
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH mptcp-next v4 5/5] selftests: mptcp: join: check CURRESTAB counters
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
` (3 preceding siblings ...)
2023-12-11 8:19 ` [PATCH mptcp-next v4 4/5] mptcp: use mptcp_set_state Geliang Tang
@ 2023-12-11 8:19 ` Geliang Tang
2023-12-11 10:22 ` selftests: mptcp: join: check CURRESTAB counters: Tests Results MPTCP CI
4 siblings, 1 reply; 8+ messages in thread
From: Geliang Tang @ 2023-12-11 8:19 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new helper chk_cestab_nr() to check the current
established connections counter MIB_CURRESTAB. Set the newly added
variables cestab_ns1 and cestab_ns2 to indicate how many connections
are expected in ns1 or ns2.
Invoke check_cestab() to check the counter during the connection in
do_transfer() and invoke chk_cestab_nr() to re-check it when the
connectin closed. These checks are embedded in add_tests().
Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 45 ++++++++++++++++---
1 file changed, 40 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 87590a43b50d..3cd066e6e2b0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -56,6 +56,8 @@ unset FAILING_LINKS
unset test_linkfail
unset addr_nr_ns1
unset addr_nr_ns2
+unset cestab_ns1
+unset cestab_ns2
unset sflags
unset fastclose
unset fullmesh
@@ -976,6 +978,33 @@ pm_nl_set_endpoint()
fi
}
+chk_cestab_nr()
+{
+ local ns=$1
+ local cestab=$2
+ local count
+
+ print_check "cestab $cestab"
+ count=$(mptcp_lib_get_counter ${ns} "MPTcpExtMPCurrEstab")
+ if [ -z "$count" ]; then
+ print_skip
+ elif [ "$count" != "$cestab" ]; then
+ fail_test "got $count current establish[s] expected $cestab"
+ else
+ print_ok
+ fi
+}
+
+check_cestab()
+{
+ if [ -n "${cestab_ns1}" ]; then
+ chk_cestab_nr $1 1
+ fi
+ if [ -n "${cestab_ns2}" ]; then
+ chk_cestab_nr $2 1
+ fi
+}
+
do_transfer()
{
local listener_ns="$1"
@@ -1089,6 +1118,7 @@ do_transfer()
local cpid=$!
pm_nl_set_endpoint $listener_ns $connector_ns $connect_addr
+ check_cestab $listener_ns $connector_ns
wait $cpid
local retc=$?
@@ -2477,47 +2507,52 @@ add_tests()
if reset "add single subflow"; then
pm_nl_set_limits $ns1 0 1
pm_nl_set_limits $ns2 0 1
- addr_nr_ns2=1 speed=slow \
+ addr_nr_ns2=1 speed=slow cestab_ns2=1 \
run_tests $ns1 $ns2 10.0.1.1
chk_join_nr 1 1 1
+ chk_cestab_nr $ns2 0
fi
# add signal address
if reset "add signal address"; then
pm_nl_set_limits $ns1 0 1
pm_nl_set_limits $ns2 1 1
- addr_nr_ns1=1 speed=slow \
+ addr_nr_ns1=1 speed=slow cestab_ns1=1 \
run_tests $ns1 $ns2 10.0.1.1
chk_join_nr 1 1 1
chk_add_nr 1 1
+ chk_cestab_nr $ns1 0
fi
# add multiple subflows
if reset "add multiple subflows"; then
pm_nl_set_limits $ns1 0 2
pm_nl_set_limits $ns2 0 2
- addr_nr_ns2=2 speed=slow \
+ addr_nr_ns2=2 speed=slow cestab_ns2=1 \
run_tests $ns1 $ns2 10.0.1.1
chk_join_nr 2 2 2
+ chk_cestab_nr $ns2 0
fi
# add multiple subflows IPv6
if reset "add multiple subflows IPv6"; then
pm_nl_set_limits $ns1 0 2
pm_nl_set_limits $ns2 0 2
- addr_nr_ns2=2 speed=slow \
+ addr_nr_ns2=2 speed=slow cestab_ns2=1 \
run_tests $ns1 $ns2 dead:beef:1::1
chk_join_nr 2 2 2
+ chk_cestab_nr $ns2 0
fi
# add multiple addresses IPv6
if reset "add multiple addresses IPv6"; then
pm_nl_set_limits $ns1 0 2
pm_nl_set_limits $ns2 2 2
- addr_nr_ns1=2 speed=slow \
+ addr_nr_ns1=2 speed=slow cestab_ns1=1 \
run_tests $ns1 $ns2 dead:beef:1::1
chk_join_nr 2 2 2
chk_add_nr 2 2
+ chk_cestab_nr $ns1 0
fi
}
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: selftests: mptcp: join: check CURRESTAB counters: Tests Results
2023-12-11 8:19 ` [PATCH mptcp-next v4 5/5] selftests: mptcp: join: check CURRESTAB counters Geliang Tang
@ 2023-12-11 10:22 ` MPTCP CI
0 siblings, 0 replies; 8+ messages in thread
From: MPTCP CI @ 2023-12-11 10:22 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI did some validations and here is its report:
- KVM Validation: normal (except selftest_mptcp_join):
- Unstable: 1 failed test(s): packetdrill_fastclose 🔴:
- Task: https://cirrus-ci.com/task/5150973962747904
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5150973962747904/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
- Task: https://cirrus-ci.com/task/5995398892879872
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5995398892879872/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
- Task: https://cirrus-ci.com/task/6276873869590528
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6276873869590528/summary/summary.txt
- KVM Validation: debug (except selftest_mptcp_join):
- Unstable: 2 failed test(s): packetdrill_fastclose packetdrill_regressions 🔴:
- Task: https://cirrus-ci.com/task/4869498986037248
- Summary: https://api.cirrus-ci.com/v1/artifact/task/4869498986037248/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/392af619f825
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-debug
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper
2023-12-11 8:19 ` [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper Geliang Tang
@ 2023-12-12 17:59 ` Paolo Abeni
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Abeni @ 2023-12-12 17:59 UTC (permalink / raw)
To: Geliang Tang, mptcp
On Mon, 2023-12-11 at 16:19 +0800, Geliang Tang wrote:
> This patch adds a new function mptcp_set_state(), in it if switch from
> or to ESTABLISH state, increment or decrement the newly added counter
> MPTCP_MIB_CURRESTAB.
>
> Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/460
> Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
> ---
> net/mptcp/protocol.c | 19 +++++++++++++++++++
> net/mptcp/protocol.h | 1 +
> 2 files changed, 20 insertions(+)
>
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index 4fc038d29623..23727f7394b6 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -2885,6 +2885,25 @@ void mptcp_subflow_shutdown(struct sock *sk, struct sock *ssk, int how)
> release_sock(ssk);
> }
>
> +void mptcp_set_state(struct sock *sk, int state)
> +{
> + int oldstate = sk->sk_state;
> +
> + switch (state) {
> + case TCP_ESTABLISHED:
> + if (oldstate != TCP_ESTABLISHED)
> + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB);
> + break;
> +
> + default:
> + if (oldstate == TCP_ESTABLISHED)
> + MPTCP_DEC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB);
> + }
> +
> + inet_sk_state_store(sk, state);
> +}
> +EXPORT_SYMBOL_GPL(mptcp_set_state);
I think there is no need to export this symbol.
And possibly the patches 1-4 could be squashed together - at very least
patch 1 and 2.
Other then that LGTM!
Thanks,
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-12-12 17:59 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-11 8:19 [PATCH mptcp-next v4 0/5] add MPTCP_MIB_CURRESTAB Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 1/5] mptcp: add mib counter dec helper Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 2/5] mptcp: add a current established counter Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 3/5] mptcp: add mptcp_set_state helper Geliang Tang
2023-12-12 17:59 ` Paolo Abeni
2023-12-11 8:19 ` [PATCH mptcp-next v4 4/5] mptcp: use mptcp_set_state Geliang Tang
2023-12-11 8:19 ` [PATCH mptcp-next v4 5/5] selftests: mptcp: join: check CURRESTAB counters Geliang Tang
2023-12-11 10:22 ` selftests: mptcp: join: check CURRESTAB counters: Tests Results MPTCP CI
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.