diff options
author | Tony Lu <tonylu@linux.alibaba.com> | 2021-11-01 15:39:12 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-11-01 13:39:14 +0000 |
commit | 4826260868202246a4dba1c682491d7f4b90d747 (patch) | |
tree | 4870743d784827044bf115bb0f6ec2ba19484d20 /net/smc/smc_tracepoint.h | |
parent | 6008889121c0463f51e604426031646d7f0a23ce (diff) | |
download | linux-4826260868202246a4dba1c682491d7f4b90d747.tar.gz linux-4826260868202246a4dba1c682491d7f4b90d747.tar.bz2 linux-4826260868202246a4dba1c682491d7f4b90d747.zip |
net/smc: Introduce tracepoint for fallback
This introduces tracepoint for smc fallback to TCP, so that we can track
which connection and why it fallbacks, and map the clcsocks' pointer with
/proc/net/tcp to find more details about TCP connections. Compared with
kprobe or other dynamic tracing, tracepoints are stable and easy to use.
Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/smc/smc_tracepoint.h')
-rw-r--r-- | net/smc/smc_tracepoint.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/net/smc/smc_tracepoint.h b/net/smc/smc_tracepoint.h new file mode 100644 index 000000000000..3bc97f5f2134 --- /dev/null +++ b/net/smc/smc_tracepoint.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM smc + +#if !defined(_TRACE_SMC_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_SMC_H + +#include <linux/ipv6.h> +#include <linux/tcp.h> +#include <linux/tracepoint.h> +#include <net/ipv6.h> +#include "smc.h" +#include "smc_core.h" + +TRACE_EVENT(smc_switch_to_fallback, + + TP_PROTO(const struct smc_sock *smc, int fallback_rsn), + + TP_ARGS(smc, fallback_rsn), + + TP_STRUCT__entry( + __field(const void *, sk) + __field(const void *, clcsk) + __field(int, fallback_rsn) + ), + + TP_fast_assign( + const struct sock *sk = &smc->sk; + const struct sock *clcsk = smc->clcsock->sk; + + __entry->sk = sk; + __entry->clcsk = clcsk; + __entry->fallback_rsn = fallback_rsn; + ), + + TP_printk("sk=%p clcsk=%p fallback_rsn=%d", + __entry->sk, __entry->clcsk, __entry->fallback_rsn) +); + +#endif /* _TRACE_SMC_H */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . + +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE smc_tracepoint + +#include <trace/define_trace.h> |