* [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).