diff --git a/drivers/hooks/vendor_hooks.c b/drivers/hooks/vendor_hooks.c index 939146da879cf3fcd9576cb7a7d227773b096513..07a0263ffc3b0b9dab9bd0d351574e6777dd8d03 100644 --- a/drivers/hooks/vendor_hooks.c +++ b/drivers/hooks/vendor_hooks.c @@ -10,6 +10,7 @@ #define CREATE_TRACE_POINTS #include #include +#include /* * Export tracepoints that act as a bare tracehook(ie: have no trace event @@ -21,3 +22,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_do_mmap); EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_do_mprotect_pkey); +EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_ninet_ehashfn); +EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_ninet_gifconf); diff --git a/include/linux/tcp.h b/include/linux/tcp.h index aaaecc45a4fcb8206e28c34a0adebb05a9f3e9ec..47a70de0c253bdc060b006b6b843bc90d6657ed0 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -415,22 +415,6 @@ struct tcp_sock { */ struct request_sock __rcu *fastopen_rsk; struct saved_syn *saved_syn; - -#ifdef CONFIG_NEWIP -/* newip tcp retrans */ - u32 ack_retrans_num; - u32 ack_retrans_seq; - u32 nip_ssthresh; - u32 nip_ssthresh_reset; - bool nip_keepalive_enable; - u32 idle_ka_probes_out; - u32 nip_keepalive_out; - u32 last_rcv_nxt; - u32 dup_ack_cnt; - u32 keepalive_time_bak; - u32 keepalive_probes_bak; - u32 keepalive_intvl_bak; -#endif }; enum tsq_enum { diff --git a/include/trace/hooks/inet.h b/include/trace/hooks/inet.h new file mode 100755 index 0000000000000000000000000000000000000000..e5b92e6f34c00f217ba0afdc5ef95495497ddf29 --- /dev/null +++ b/include/trace/hooks/inet.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (c) 2023 Huawei Device Co., Ltd. */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM inet + +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_INET_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_INET_H + +#include +#include + +DECLARE_HOOK(vendor_ninet_ehashfn, + TP_PROTO(const struct sock *sk, u32 *ret), + TP_ARGS(sk, ret) +); + +DECLARE_HOOK(vendor_ninet_gifconf, + TP_PROTO(struct net_device *dev, char __user *buf, int len, int size, int *ret), + TP_ARGS(dev, buf, len, size, ret) +); + +#endif + +/* This part must be outside protection */ +#include + diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 88b6120878cd9abfb3b9fe0423e5dbf0ffdd6375..eac054ea3100b898fb965e108a4b211fe4ccfad8 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -61,6 +61,7 @@ #include #include #include +#include #define IPV6ONLY_FLAGS \ (IFA_F_NODAD | IFA_F_OPTIMISTIC | IFA_F_DADFAILED | \ @@ -1278,6 +1279,7 @@ int inet_gifconf(struct net_device *dev, char __user *buf, int len, int size) len -= size; done += size; } + trace_vendor_ninet_gifconf(dev, buf, len, size, &done); out: return done; } diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 16e92801414a2466e4dac52381090a5917c792b5..8265c72886884fbf9d5d9e1d989a91c05eac6b32 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -23,9 +23,7 @@ #if IS_ENABLED(CONFIG_IPV6) #include #endif -#if IS_ENABLED(CONFIG_NEWIP) -#include -#endif +#include #include #include #include @@ -56,13 +54,14 @@ static u32 sk_ehashfn(const struct sock *sk) &sk->sk_v6_daddr, sk->sk_dport); #endif -#if IS_ENABLED(CONFIG_NEWIP) - /* NIP */ - if (sk->sk_family == AF_NINET) - return ninet_ehashfn(sock_net(sk), - &sk->sk_nip_rcv_saddr, sk->sk_num, - &sk->sk_nip_daddr, sk->sk_dport); -#endif + if (trace_vendor_ninet_ehashfn_enabled()) { + if (sk->sk_family == AF_NINET) { + u32 ret = 0; + + trace_vendor_ninet_ehashfn(sk, &ret); + return ret; + } + } return inet_ehashfn(sock_net(sk), sk->sk_rcv_saddr, sk->sk_num,