From: Geliang Tang <geliangtang@gmail.com>
To: mptcp@lists.01.org, mptcp@lists.linux.dev
Cc: Geliang Tang <geliangtang@gmail.com>
Subject: [MPTCP][PATCH mptcp-next 6/6] mptcp: add trace event for DSS checksum
Date: Mon, 22 Mar 2021 19:37:30 +0800 [thread overview]
Message-ID: <b94a7a3372002661bd5647f93a1fb6d7a60bb70a.1616412490.git.geliangtang@gmail.com> (raw)
In-Reply-To: <7762b80e2310ae0f1a09ec5a4324293d8e9943eb.1616412490.git.geliangtang@gmail.com>
This patch added the trace event for DSS checksum. Add a tracepoint in
mptcp_generate_dss_csum and a tracepoint in validate_dss_csum.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
include/trace/events/mptcp.h | 51 ++++++++++++++++++++++++++++++++++++
net/mptcp/options.c | 4 +++
net/mptcp/protocol.c | 3 +++
net/mptcp/subflow.c | 4 +++
4 files changed, 62 insertions(+)
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..a5b87e304303
--- /dev/null
+++ b/include/trace/events/mptcp.h
@@ -0,0 +1,51 @@
+/* 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>
+
+DECLARE_EVENT_CLASS(mptcp_event_dss_csum,
+
+ TP_PROTO(struct csum_pseudo_header *header, __u16 csum),
+
+ TP_ARGS(header, csum),
+
+ TP_STRUCT__entry(
+ __field(__u64, data_seq)
+ __field(__u32, subflow_seq)
+ __field(__u16, data_len)
+ __field(__u16, dss_csum)
+ __field(__u16, csum)
+ ),
+
+ TP_fast_assign(
+ __entry->data_seq = header->data_seq;
+ __entry->subflow_seq = header->subflow_seq;
+ __entry->data_len = header->data_len;
+ __entry->dss_csum = header->csum;
+ __entry->csum = csum;
+ ),
+
+ TP_printk("data_seq=%llu subflow_seq=%u data_len=%u csum=%u",
+ __entry->data_seq, __entry->subflow_seq, __entry->data_len,
+ __entry->csum)
+);
+
+DEFINE_EVENT(mptcp_event_dss_csum, mptcp_generate_dss_csum,
+ TP_PROTO(struct csum_pseudo_header *header, __u16 csum),
+ TP_ARGS(header, csum));
+
+DEFINE_EVENT_PRINT(mptcp_event_dss_csum, validate_dss_csum,
+ TP_PROTO(struct csum_pseudo_header *header, __u16 csum),
+ TP_ARGS(header, csum),
+ TP_printk("data_seq=%llu subflow_seq=%u data_len=%u csum=%u, DSS checksum %s!",
+ __entry->data_seq, __entry->subflow_seq, __entry->data_len,
+ __entry->dss_csum, __entry->csum ? "error" : "done"));
+
+#endif /* _TRACE_MPTCP_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index ed89f6c2ed49..8ec41bf56c3b 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;
@@ -548,6 +550,8 @@ static u16 mptcp_generate_dss_csum(struct sk_buff *skb)
csum = skb_checksum(skb, 0, skb->len, 0);
csum = csum_partial(&header, sizeof(header), csum);
+ trace_mptcp_generate_dss_csum(&header, csum_fold(csum));
+
return csum_fold(csum);
}
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 94c3568c7a60..1f767612c917 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;
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 2eeea7d527f0..7e63d902a3de 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -27,6 +27,8 @@
static void mptcp_subflow_ops_undo_override(struct sock *ssk);
+#include <trace/events/mptcp.h>
+
static void SUBFLOW_REQ_INC_STATS(struct request_sock *req,
enum linux_mptcp_mib_field field)
{
@@ -821,6 +823,8 @@ static bool validate_dss_csum(struct sock *ssk, struct sk_buff *skb)
csum = skb_checksum(skb, 0, skb->len, 0);
csum = csum_partial(&header, sizeof(header), csum);
+ trace_validate_dss_csum(&header, csum_fold(csum));
+
if (csum_fold(csum)) {
pr_err("DSS checksum error! data_seq=%llu subflow_seq=%u data_len=%u csum=%u %u",
header.data_seq, header.subflow_seq, header.data_len,
--
2.30.2
next prev parent reply other threads:[~2021-03-22 11:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-22 11:37 [MPTCP][PATCH mptcp-next 0/6] DSS checksum support Geliang Tang
2021-03-22 11:37 ` [MPTCP][PATCH mptcp-next 1/6] mptcp: add a new sysctl checksum_enabled Geliang Tang
2021-03-22 11:37 ` [MPTCP][PATCH mptcp-next 2/6] mptcp: add csum_enabled in mptcp_out_options Geliang Tang
2021-03-22 11:37 ` [MPTCP][PATCH mptcp-next 3/6] mptcp: add the csum_reqd fields Geliang Tang
2021-03-22 11:37 ` [MPTCP][PATCH mptcp-next 4/6] mptcp: add the DSS checksum sending Geliang Tang
2021-03-22 11:37 ` [MPTCP][PATCH mptcp-next 5/6] mptcp: add the DSS checksum receiving Geliang Tang
2021-03-22 11:37 ` Geliang Tang [this message]
2021-03-22 23:40 ` Mat Martineau
2021-03-23 12:55 ` Geliang Tang
2021-03-24 0:52 ` Mat Martineau
2021-03-23 10:37 ` [MPTCP] " Paolo Abeni
2021-03-22 23:10 ` [MPTCP][PATCH mptcp-next 4/6] mptcp: add the DSS checksum sending Mat Martineau
2021-03-23 10:22 ` [MPTCP] " Paolo Abeni
2021-03-24 1:07 ` Mat Martineau
2021-03-23 17:07 ` [MPTCP] " Paolo Abeni
2021-03-22 22:52 ` [MPTCP][PATCH mptcp-next 3/6] mptcp: add the csum_reqd fields Mat Martineau
2021-03-23 10:12 ` [MPTCP] " Paolo Abeni
2021-03-24 1:05 ` Mat Martineau
2021-03-23 10:41 ` [MPTCP] [MPTCP][PATCH mptcp-next 2/6] mptcp: add csum_enabled in mptcp_out_options Paolo Abeni
2021-03-22 22:22 ` [MPTCP][PATCH mptcp-next 1/6] mptcp: add a new sysctl checksum_enabled Mat Martineau
2021-03-22 23:46 ` Mat Martineau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b94a7a3372002661bd5647f93a1fb6d7a60bb70a.1616412490.git.geliangtang@gmail.com \
--to=geliangtang@gmail.com \
--cc=mptcp@lists.01.org \
--cc=mptcp@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).