All of lore.kernel.org
 help / color / mirror / Atom feed
* [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints
@ 2021-03-31  7:23 Geliang Tang
  2021-03-31  7:23 ` [MPTCP][PATCH v4 mptcp-next 1/5] mptcp: export mptcp_subflow_active Geliang Tang
  2021-04-01 16:21 ` [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Matthieu Baerts
  0 siblings, 2 replies; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

v4:
 - add back patch 1.
 - use sk_fullsock in patch 2.

v3:
 - update the patch set as Paolo suggested.
 - drop the patch "mptcp: export mptcp_subflow_active".

v2:
 - add two new patches.

This patchset addressed issues 131, replace some/most pr_debug with trace
events. As Paolo suggested, we should add the tracepoints at "the packet
scheduler and the mapping status" first.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/131

Geliang Tang (5):
  mptcp: export mptcp_subflow_active
  mptcp: add tracepoint in mptcp_subflow_get_send
  mptcp: add tracepoint in get_mapping_status
  mptcp: add tracepoint in ack_update_msk
  mptcp: add tracepoint in subflow_check_data_avail

 include/trace/events/mptcp.h | 166 +++++++++++++++++++++++++++++++++++
 net/mptcp/options.c          |   6 ++
 net/mptcp/protocol.c         |  20 +----
 net/mptcp/protocol.h         |  12 +++
 net/mptcp/subflow.c          |  10 +--
 5 files changed, 192 insertions(+), 22 deletions(-)
 create mode 100644 include/trace/events/mptcp.h

-- 
2.30.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [MPTCP][PATCH v4 mptcp-next 1/5] mptcp: export mptcp_subflow_active
  2021-03-31  7:23 [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Geliang Tang
@ 2021-03-31  7:23 ` Geliang Tang
  2021-03-31  7:23   ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Geliang Tang
  2021-04-01 16:21 ` [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Matthieu Baerts
  1 sibling, 1 reply; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch moved the static function mptcp_subflow_active to protocol.h
as an inline one.

Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 net/mptcp/protocol.c | 12 ------------
 net/mptcp/protocol.h | 12 ++++++++++++
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 9d7e7e13fba8..a625c4e63152 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -399,18 +399,6 @@ static void mptcp_set_timeout(const struct sock *sk, const struct sock *ssk)
 	mptcp_sk(sk)->timer_ival = tout > 0 ? tout : TCP_RTO_MIN;
 }
 
-static bool mptcp_subflow_active(struct mptcp_subflow_context *subflow)
-{
-	struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
-
-	/* can't send if JOIN hasn't completed yet (i.e. is usable for mptcp) */
-	if (subflow->request_join && !subflow->fully_established)
-		return false;
-
-	/* only send if our side has not closed yet */
-	return ((1 << ssk->sk_state) & (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT));
-}
-
 static bool tcp_can_send_ack(const struct sock *ssk)
 {
 	return !((1 << inet_sk_state_load(ssk)) &
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 14f0114be17a..d9a489c73029 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -539,6 +539,18 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *info,
 			 struct sockaddr_storage *addr,
 			 unsigned short family);
 
+static inline bool mptcp_subflow_active(struct mptcp_subflow_context *subflow)
+{
+	struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
+
+	/* can't send if JOIN hasn't completed yet (i.e. is usable for mptcp) */
+	if (subflow->request_join && !subflow->fully_established)
+		return false;
+
+	/* only send if our side has not closed yet */
+	return ((1 << ssk->sk_state) & (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT));
+}
+
 static inline void mptcp_subflow_tcp_fallback(struct sock *sk,
 					      struct mptcp_subflow_context *ctx)
 {
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send
  2021-03-31  7:23 ` [MPTCP][PATCH v4 mptcp-next 1/5] mptcp: export mptcp_subflow_active Geliang Tang
@ 2021-03-31  7:23   ` Geliang Tang
  2021-03-31  7:23     ` [MPTCP][PATCH v4 mptcp-next 3/5] mptcp: add tracepoint in get_mapping_status Geliang Tang
  2021-04-01 10:18     ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Paolo Abeni
  0 siblings, 2 replies; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang, Paolo Abeni

This patch added a tracepoint in the packet scheduler function
mptcp_subflow_get_send().

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 include/trace/events/mptcp.h | 53 ++++++++++++++++++++++++++++++++++++
 net/mptcp/protocol.c         |  8 +++---
 2 files changed, 57 insertions(+), 4 deletions(-)
 create mode 100644 include/trace/events/mptcp.h

diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
new file mode 100644
index 000000000000..f1c836573744
--- /dev/null
+++ b/include/trace/events/mptcp.h
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mptcp
+
+#if !defined(_TRACE_MPTCP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_MPTCP_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(mptcp_subflow_get_send,
+
+	TP_PROTO(struct mptcp_subflow_context *subflow),
+
+	TP_ARGS(subflow),
+
+	TP_STRUCT__entry(
+		__field(bool, active)
+		__field(bool, free)
+		__field(u32, snd_wnd)
+		__field(u32, pace)
+		__field(u8, backup)
+		__field(u64, ratio)
+	),
+
+	TP_fast_assign(
+		bool sk = sk_fullsock(subflow->tcp_sock);
+
+		__entry->active = mptcp_subflow_active(subflow);
+		__entry->backup = subflow->backup;
+		if (sk) {
+			struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
+
+			__entry->free = sk_stream_memory_free(subflow->tcp_sock);
+			if (ssk) {
+				__entry->snd_wnd = tcp_sk(ssk)->snd_wnd;
+				__entry->pace = ssk->sk_pacing_rate;
+				if (__entry->pace)
+					__entry->ratio = div_u64((u64)ssk->sk_wmem_queued << 32,
+								 __entry->pace);
+			}
+		}
+	),
+
+	TP_printk("active=%d free=%d snd_wnd=%u pace=%u backup=%u ratio=%llu",
+		  __entry->active, __entry->free,
+		  __entry->snd_wnd, __entry->pace,
+		  __entry->backup, __entry->ratio)
+);
+
+#endif /* _TRACE_MPTCP_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index a625c4e63152..2d895c3c8746 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -25,6 +25,9 @@
 #include "protocol.h"
 #include "mib.h"
 
+#define CREATE_TRACE_POINTS
+#include <trace/events/mptcp.h>
+
 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
 struct mptcp6_sock {
 	struct mptcp_sock msk;
@@ -1381,6 +1384,7 @@ static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
 		send_info[i].ratio = -1;
 	}
 	mptcp_for_each_subflow(msk, subflow) {
+		trace_mptcp_subflow_get_send(subflow);
 		ssk =  mptcp_subflow_tcp_sock(subflow);
 		if (!mptcp_subflow_active(subflow))
 			continue;
@@ -1401,10 +1405,6 @@ static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk)
 		}
 	}
 
-	pr_debug("msk=%p nr_active=%d ssk=%p:%lld backup=%p:%lld",
-		 msk, nr_active, send_info[0].ssk, send_info[0].ratio,
-		 send_info[1].ssk, send_info[1].ratio);
-
 	/* pick the best backup if no other subflow is active */
 	if (!nr_active)
 		send_info[0].ssk = send_info[1].ssk;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [MPTCP][PATCH v4 mptcp-next 3/5] mptcp: add tracepoint in get_mapping_status
  2021-03-31  7:23   ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Geliang Tang
@ 2021-03-31  7:23     ` Geliang Tang
  2021-03-31  7:23       ` [MPTCP][PATCH v4 mptcp-next 4/5] mptcp: add tracepoint in ack_update_msk Geliang Tang
  2021-04-01 10:18     ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Paolo Abeni
  1 sibling, 1 reply; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang, Paolo Abeni

This patch added a tracepoint in the mapping status function
get_mapping_status() to dump every mpext field.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 include/trace/events/mptcp.h | 52 ++++++++++++++++++++++++++++++++++++
 net/mptcp/subflow.c          |  6 ++---
 2 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
index f1c836573744..4a6cc475fb73 100644
--- a/include/trace/events/mptcp.h
+++ b/include/trace/events/mptcp.h
@@ -47,6 +47,58 @@ TRACE_EVENT(mptcp_subflow_get_send,
 		  __entry->backup, __entry->ratio)
 );
 
+DECLARE_EVENT_CLASS(mptcp_dump_mpext,
+
+	TP_PROTO(struct mptcp_ext *mpext),
+
+	TP_ARGS(mpext),
+
+	TP_STRUCT__entry(
+		__field(u64, data_ack)
+		__field(u64, data_seq)
+		__field(u32, subflow_seq)
+		__field(u16, data_len)
+		__field(u8, use_map)
+		__field(u8, dsn64)
+		__field(u8, data_fin)
+		__field(u8, use_ack)
+		__field(u8, ack64)
+		__field(u8, mpc_map)
+		__field(u8, frozen)
+		__field(u8, reset_transient)
+		__field(u8, reset_reason)
+	),
+
+	TP_fast_assign(
+		__entry->data_ack = mpext->ack64 ? mpext->data_ack : mpext->data_ack32;
+		__entry->data_seq = mpext->data_seq;
+		__entry->subflow_seq = mpext->subflow_seq;
+		__entry->data_len = mpext->data_len;
+		__entry->use_map = mpext->use_map;
+		__entry->dsn64 = mpext->dsn64;
+		__entry->data_fin = mpext->data_fin;
+		__entry->use_ack = mpext->use_ack;
+		__entry->ack64 = mpext->ack64;
+		__entry->mpc_map = mpext->mpc_map;
+		__entry->frozen = mpext->frozen;
+		__entry->reset_transient = mpext->reset_transient;
+		__entry->reset_reason = mpext->reset_reason;
+	),
+
+	TP_printk("data_ack=%llu data_seq=%llu subflow_seq=%u data_len=%u use_map=%u dsn64=%u data_fin=%u use_ack=%u ack64=%u mpc_map=%u frozen=%u reset_transient=%u reset_reason=%u",
+		  __entry->data_ack, __entry->data_seq,
+		  __entry->subflow_seq, __entry->data_len,
+		  __entry->use_map, __entry->dsn64,
+		  __entry->data_fin, __entry->use_ack,
+		  __entry->ack64, __entry->mpc_map,
+		  __entry->frozen, __entry->reset_transient,
+		  __entry->reset_reason)
+);
+
+DEFINE_EVENT(mptcp_dump_mpext, get_mapping_status,
+	TP_PROTO(struct mptcp_ext *mpext),
+	TP_ARGS(mpext));
+
 #endif /* _TRACE_MPTCP_H */
 
 /* This part must be outside protection */
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 3c19a5265a0f..a88c2b1e5410 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -25,6 +25,8 @@
 #include "protocol.h"
 #include "mib.h"
 
+#include <trace/events/mptcp.h>
+
 static void mptcp_subflow_ops_undo_override(struct sock *ssk);
 
 static void SUBFLOW_REQ_INC_STATS(struct request_sock *req,
@@ -858,9 +860,7 @@ static enum mapping_status get_mapping_status(struct sock *ssk,
 		goto validate_seq;
 	}
 
-	pr_debug("seq=%llu is64=%d ssn=%u data_len=%u data_fin=%d",
-		 mpext->data_seq, mpext->dsn64, mpext->subflow_seq,
-		 mpext->data_len, mpext->data_fin);
+	trace_get_mapping_status(mpext);
 
 	data_len = mpext->data_len;
 	if (data_len == 0) {
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [MPTCP][PATCH v4 mptcp-next 4/5] mptcp: add tracepoint in ack_update_msk
  2021-03-31  7:23     ` [MPTCP][PATCH v4 mptcp-next 3/5] mptcp: add tracepoint in get_mapping_status Geliang Tang
@ 2021-03-31  7:23       ` Geliang Tang
  2021-03-31  7:23         ` [MPTCP][PATCH v4 mptcp-next 5/5] mptcp: add tracepoint in subflow_check_data_avail Geliang Tang
  0 siblings, 1 reply; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang, Paolo Abeni

This patch added a tracepoint in ack_update_msk() to track the
incoming data_ack and window/snd_una updates.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 include/trace/events/mptcp.h | 32 ++++++++++++++++++++++++++++++++
 net/mptcp/options.c          |  6 ++++++
 2 files changed, 38 insertions(+)

diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
index 4a6cc475fb73..b4e6ca941bb7 100644
--- a/include/trace/events/mptcp.h
+++ b/include/trace/events/mptcp.h
@@ -99,6 +99,38 @@ DEFINE_EVENT(mptcp_dump_mpext, get_mapping_status,
 	TP_PROTO(struct mptcp_ext *mpext),
 	TP_ARGS(mpext));
 
+TRACE_EVENT(ack_update_msk,
+
+	TP_PROTO(u64 data_ack, u64 old_snd_una,
+		 u64 new_snd_una, u64 new_wnd_end,
+		 u64 msk_wnd_end),
+
+	TP_ARGS(data_ack, old_snd_una,
+		new_snd_una, new_wnd_end,
+		msk_wnd_end),
+
+	TP_STRUCT__entry(
+		__field(u64, data_ack)
+		__field(u64, old_snd_una)
+		__field(u64, new_snd_una)
+		__field(u64, new_wnd_end)
+		__field(u64, msk_wnd_end)
+	),
+
+	TP_fast_assign(
+		__entry->data_ack = data_ack;
+		__entry->old_snd_una = old_snd_una;
+		__entry->new_snd_una = new_snd_una;
+		__entry->new_wnd_end = new_wnd_end;
+		__entry->msk_wnd_end = msk_wnd_end;
+	),
+
+	TP_printk("data_ack=%llu old_snd_una=%llu new_snd_una=%llu new_wnd_end=%llu msk_wnd_end=%llu",
+		  __entry->data_ack, __entry->old_snd_una,
+		  __entry->new_snd_una, __entry->new_wnd_end,
+		  __entry->msk_wnd_end)
+);
+
 #endif /* _TRACE_MPTCP_H */
 
 /* This part must be outside protection */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index d51c3ad54d9a..99fc21406168 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -13,6 +13,8 @@
 #include "protocol.h"
 #include "mib.h"
 
+#include <trace/events/mptcp.h>
+
 static bool mptcp_cap_flag_sha256(u8 flags)
 {
 	return (flags & MPTCP_CAP_FLAG_MASK) == MPTCP_CAP_HMAC_SHA256;
@@ -943,6 +945,10 @@ static void ack_update_msk(struct mptcp_sock *msk,
 		__mptcp_data_acked(sk);
 	}
 	mptcp_data_unlock(sk);
+
+	trace_ack_update_msk(mp_opt->data_ack,
+			     old_snd_una, new_snd_una,
+			     new_wnd_end, msk->wnd_end);
 }
 
 bool mptcp_update_rcv_data_fin(struct mptcp_sock *msk, u64 data_fin_seq, bool use_64bit)
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [MPTCP][PATCH v4 mptcp-next 5/5] mptcp: add tracepoint in subflow_check_data_avail
  2021-03-31  7:23       ` [MPTCP][PATCH v4 mptcp-next 4/5] mptcp: add tracepoint in ack_update_msk Geliang Tang
@ 2021-03-31  7:23         ` Geliang Tang
  0 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2021-03-31  7:23 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang, Paolo Abeni

This patch added a tracepoint in subflow_check_data_avail() to show the
mapping status.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
 include/trace/events/mptcp.h | 29 +++++++++++++++++++++++++++++
 net/mptcp/subflow.c          |  4 +---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
index b4e6ca941bb7..902772c439dc 100644
--- a/include/trace/events/mptcp.h
+++ b/include/trace/events/mptcp.h
@@ -7,6 +7,14 @@
 
 #include <linux/tracepoint.h>
 
+#define show_mapping_status(status)					\
+	__print_symbolic(status,					\
+		{ 0, "MAPPING_OK" },					\
+		{ 1, "MAPPING_INVALID" },				\
+		{ 2, "MAPPING_EMPTY" },					\
+		{ 3, "MAPPING_DATA_FIN" },				\
+		{ 4, "MAPPING_DUMMY" })
+
 TRACE_EVENT(mptcp_subflow_get_send,
 
 	TP_PROTO(struct mptcp_subflow_context *subflow),
@@ -131,6 +139,27 @@ TRACE_EVENT(ack_update_msk,
 		  __entry->msk_wnd_end)
 );
 
+TRACE_EVENT(subflow_check_data_avail,
+
+	TP_PROTO(__u8 status, struct sk_buff *skb),
+
+	TP_ARGS(status, skb),
+
+	TP_STRUCT__entry(
+		__field(u8, status)
+		__field(const void *, skb)
+	),
+
+	TP_fast_assign(
+		__entry->status = status;
+		__entry->skb = skb;
+	),
+
+	TP_printk("mapping_status=%s, skb=%p",
+		  show_mapping_status(__entry->status),
+		  __entry->skb)
+);
+
 #endif /* _TRACE_MPTCP_H */
 
 /* This part must be outside protection */
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index a88c2b1e5410..d79a99c2bfc4 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -998,8 +998,6 @@ static bool subflow_check_data_avail(struct sock *ssk)
 	struct mptcp_sock *msk;
 	struct sk_buff *skb;
 
-	pr_debug("msk=%p ssk=%p data_avail=%d skb=%p", subflow->conn, ssk,
-		 subflow->data_avail, skb_peek(&ssk->sk_receive_queue));
 	if (!skb_peek(&ssk->sk_receive_queue))
 		subflow->data_avail = 0;
 	if (subflow->data_avail)
@@ -1011,7 +1009,7 @@ static bool subflow_check_data_avail(struct sock *ssk)
 		u64 old_ack;
 
 		status = get_mapping_status(ssk, msk);
-		pr_debug("msk=%p ssk=%p status=%d", msk, ssk, status);
+		trace_subflow_check_data_avail(status, skb_peek(&ssk->sk_receive_queue));
 		if (status == MAPPING_INVALID) {
 			ssk->sk_err = EBADMSG;
 			goto fatal;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send
  2021-03-31  7:23   ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Geliang Tang
  2021-03-31  7:23     ` [MPTCP][PATCH v4 mptcp-next 3/5] mptcp: add tracepoint in get_mapping_status Geliang Tang
@ 2021-04-01 10:18     ` Paolo Abeni
  2021-04-01 10:23       ` Geliang Tang
  1 sibling, 1 reply; 9+ messages in thread
From: Paolo Abeni @ 2021-04-01 10:18 UTC (permalink / raw)
  To: Geliang Tang, mptcp

On Wed, 2021-03-31 at 15:23 +0800, Geliang Tang wrote:
> This patch added a tracepoint in the packet scheduler function
> mptcp_subflow_get_send().
> 
> Suggested-by: Paolo Abeni <pabeni@redhat.com>
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> ---
>  include/trace/events/mptcp.h | 53 ++++++++++++++++++++++++++++++++++++
>  net/mptcp/protocol.c         |  8 +++---
>  2 files changed, 57 insertions(+), 4 deletions(-)
>  create mode 100644 include/trace/events/mptcp.h
> 
> diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
> new file mode 100644
> index 000000000000..f1c836573744
> --- /dev/null
> +++ b/include/trace/events/mptcp.h
> @@ -0,0 +1,53 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM mptcp
> +
> +#if !defined(_TRACE_MPTCP_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_MPTCP_H
> +
> +#include <linux/tracepoint.h>
> +
> +TRACE_EVENT(mptcp_subflow_get_send,
> +
> +	TP_PROTO(struct mptcp_subflow_context *subflow),
> +
> +	TP_ARGS(subflow),
> +
> +	TP_STRUCT__entry(
> +		__field(bool, active)
> +		__field(bool, free)
> +		__field(u32, snd_wnd)
> +		__field(u32, pace)
> +		__field(u8, backup)
> +		__field(u64, ratio)
> +	),
> +
> +	TP_fast_assign(
> +		bool sk = sk_fullsock(subflow->tcp_sock);
> +
> +		__entry->active = mptcp_subflow_active(subflow);
> +		__entry->backup = subflow->backup;
> +		if (sk) {
> +			struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
> +
> +			__entry->free = sk_stream_memory_free(subflow->tcp_sock);
> +			if (ssk) {
> +				__entry->snd_wnd = tcp_sk(ssk)->snd_wnd;
> +				__entry->pace = ssk->sk_pacing_rate;
> +				if (__entry->pace)
> +					__entry->ratio = div_u64((u64)ssk->sk_wmem_queued << 32,
> +								 __entry->pace);
> +			}
> +		}
> +	),

Minor nit: I think we can reduce the indentation level and probably we
should zeroed the uninitialized fields, but I think we can do that
eventually later with a squash-to patch. I suggest to merge this as is
and than eventually improve later.

Thanks!

Paolo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send
  2021-04-01 10:18     ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Paolo Abeni
@ 2021-04-01 10:23       ` Geliang Tang
  0 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2021-04-01 10:23 UTC (permalink / raw)
  To: Paolo Abeni; +Cc: mptcp

Paolo Abeni <pabeni@redhat.com> 于2021年4月1日周四 下午6:18写道:
>
> On Wed, 2021-03-31 at 15:23 +0800, Geliang Tang wrote:
> > This patch added a tracepoint in the packet scheduler function
> > mptcp_subflow_get_send().
> >
> > Suggested-by: Paolo Abeni <pabeni@redhat.com>
> > Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> > ---
> >  include/trace/events/mptcp.h | 53 ++++++++++++++++++++++++++++++++++++
> >  net/mptcp/protocol.c         |  8 +++---
> >  2 files changed, 57 insertions(+), 4 deletions(-)
> >  create mode 100644 include/trace/events/mptcp.h
> >
> > diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h
> > new file mode 100644
> > index 000000000000..f1c836573744
> > --- /dev/null
> > +++ b/include/trace/events/mptcp.h
> > @@ -0,0 +1,53 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#undef TRACE_SYSTEM
> > +#define TRACE_SYSTEM mptcp
> > +
> > +#if !defined(_TRACE_MPTCP_H) || defined(TRACE_HEADER_MULTI_READ)
> > +#define _TRACE_MPTCP_H
> > +
> > +#include <linux/tracepoint.h>
> > +
> > +TRACE_EVENT(mptcp_subflow_get_send,
> > +
> > +     TP_PROTO(struct mptcp_subflow_context *subflow),
> > +
> > +     TP_ARGS(subflow),
> > +
> > +     TP_STRUCT__entry(
> > +             __field(bool, active)
> > +             __field(bool, free)
> > +             __field(u32, snd_wnd)
> > +             __field(u32, pace)
> > +             __field(u8, backup)
> > +             __field(u64, ratio)
> > +     ),
> > +
> > +     TP_fast_assign(
> > +             bool sk = sk_fullsock(subflow->tcp_sock);
> > +
> > +             __entry->active = mptcp_subflow_active(subflow);
> > +             __entry->backup = subflow->backup;
> > +             if (sk) {
> > +                     struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
> > +
> > +                     __entry->free = sk_stream_memory_free(subflow->tcp_sock);
> > +                     if (ssk) {
> > +                             __entry->snd_wnd = tcp_sk(ssk)->snd_wnd;
> > +                             __entry->pace = ssk->sk_pacing_rate;
> > +                             if (__entry->pace)
> > +                                     __entry->ratio = div_u64((u64)ssk->sk_wmem_queued << 32,
> > +                                                              __entry->pace);
> > +                     }
> > +             }
> > +     ),
>
> Minor nit: I think we can reduce the indentation level and probably we
> should zeroed the uninitialized fields, but I think we can do that
> eventually later with a squash-to patch. I suggest to merge this as is
> and than eventually improve later.

Thanks Paolo, I'll send the squash-to patch later.

-Geliang

>
> Thanks!
>
> Paolo
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints
  2021-03-31  7:23 [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Geliang Tang
  2021-03-31  7:23 ` [MPTCP][PATCH v4 mptcp-next 1/5] mptcp: export mptcp_subflow_active Geliang Tang
@ 2021-04-01 16:21 ` Matthieu Baerts
  1 sibling, 0 replies; 9+ messages in thread
From: Matthieu Baerts @ 2021-04-01 16:21 UTC (permalink / raw)
  To: Geliang Tang, Paolo Abeni; +Cc: mptcp

Hi Geliang, Paolo,

On 31/03/2021 09:23, Geliang Tang wrote:
> v4:
>   - add back patch 1.
>   - use sk_fullsock in patch 2.
> 
> v3:
>   - update the patch set as Paolo suggested.
>   - drop the patch "mptcp: export mptcp_subflow_active".
> 
> v2:
>   - add two new patches.
> 
> This patchset addressed issues 131, replace some/most pr_debug with trace
> events. As Paolo suggested, we should add the tracepoints at "the packet
> scheduler and the mapping status" first.
> 
> Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/131

I already closed it, even if there is still one pending squash-to patch.

> Geliang Tang (5):
>    mptcp: export mptcp_subflow_active
>    mptcp: add tracepoint in mptcp_subflow_get_send
>    mptcp: add tracepoint in get_mapping_status
>    mptcp: add tracepoint in ack_update_msk
>    mptcp: add tracepoint in subflow_check_data_avail

Thank you for the patches and reviews!

Just applied in our tree with Paolo's ACK + a modification of the 
MAINTAINERS file in patch 2/5

- 00ed6f03febe: mptcp: export mptcp_subflow_active
- e4421bbffd09: mptcp: add tracepoint in mptcp_subflow_get_send
- 12abe4c31032: mptcp: add tracepoint in get_mapping_status
- 88a550c12ce4: mptcp: add tracepoint in ack_update_msk
- 769badb3d5a3: mptcp: add tracepoint in subflow_check_data_avail

Tests + export are in progress!

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-04-01 16:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31  7:23 [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Geliang Tang
2021-03-31  7:23 ` [MPTCP][PATCH v4 mptcp-next 1/5] mptcp: export mptcp_subflow_active Geliang Tang
2021-03-31  7:23   ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Geliang Tang
2021-03-31  7:23     ` [MPTCP][PATCH v4 mptcp-next 3/5] mptcp: add tracepoint in get_mapping_status Geliang Tang
2021-03-31  7:23       ` [MPTCP][PATCH v4 mptcp-next 4/5] mptcp: add tracepoint in ack_update_msk Geliang Tang
2021-03-31  7:23         ` [MPTCP][PATCH v4 mptcp-next 5/5] mptcp: add tracepoint in subflow_check_data_avail Geliang Tang
2021-04-01 10:18     ` [MPTCP][PATCH v4 mptcp-next 2/5] mptcp: add tracepoint in mptcp_subflow_get_send Paolo Abeni
2021-04-01 10:23       ` Geliang Tang
2021-04-01 16:21 ` [MPTCP][PATCH v4 mptcp-next 0/5] add tracepoints Matthieu Baerts

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.