]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mptcp: add tracepoint in subflow_check_data_avail
authorGeliang Tang <geliangtang@gmail.com>
Fri, 16 Apr 2021 22:38:07 +0000 (15:38 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 17 Apr 2021 00:10:40 +0000 (17:10 -0700)
This patch added a tracepoint in subflow_check_data_avail() to show the
mapping status.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/trace/events/mptcp.h
net/mptcp/subflow.c

index b90bfe45d99592a1fc8dd49698c619f1dae9df6f..775a46d0b0f0797913fb79f35fd77420c3ad3cb3 100644 (file)
@@ -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),
@@ -138,6 +146,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 */
index d8a2a55ae916843738fab6c0576549f3f56cf6a6..82e91b00ad397edcf30843edb3f3ac5d4188ecc3 100644 (file)
@@ -1002,8 +1002,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)
@@ -1015,7 +1013,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;