* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).