net/sock: Introduce trace_sk_data_ready()
authorPeilin Ye <peilin.ye@bytedance.com>
Fri, 20 Jan 2023 00:45:16 +0000 (16:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Jan 2023 11:26:50 +0000 (11:26 +0000)
As suggested by Cong, introduce a tracepoint for all ->sk_data_ready()
callback implementations.  For example:

<...>
  iperf-609  [002] .....  70.660425: sk_data_ready: family=2 protocol=6 func=sock_def_readable
  iperf-609  [002] .....  70.660436: sk_data_ready: family=2 protocol=6 func=sock_def_readable
<...>

Suggested-by: Cong Wang <cong.wang@bytedance.com>
Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
31 files changed:
drivers/infiniband/hw/erdma/erdma_cm.c
drivers/infiniband/sw/siw/siw_cm.c
drivers/infiniband/sw/siw/siw_qp.c
drivers/nvme/host/tcp.c
drivers/nvme/target/tcp.c
drivers/scsi/iscsi_tcp.c
drivers/soc/qcom/qmi_interface.c
drivers/target/iscsi/iscsi_target_nego.c
drivers/xen/pvcalls-back.c
fs/dlm/lowcomms.c
fs/ocfs2/cluster/tcp.c
include/trace/events/sock.h
net/bluetooth/rfcomm/core.c
net/ceph/messenger.c
net/core/net-traces.c
net/core/skmsg.c
net/core/sock.c
net/kcm/kcmsock.c
net/mptcp/subflow.c
net/phonet/pep-gprs.c
net/qrtr/ns.c
net/rds/tcp_listen.c
net/rds/tcp_recv.c
net/sctp/socket.c
net/smc/smc_rx.c
net/sunrpc/svcsock.c
net/sunrpc/xprtsock.c
net/tipc/socket.c
net/tipc/topsrv.c
net/tls/tls_sw.c
net/xfrm/espintcp.c

index 74f6348f240ac424109f6de509779a5a0b23569d..771059a8eb7d7f76eb38652edbce9bfdb5ee89b3 100644 (file)
@@ -11,6 +11,7 @@
 /* Copyright (c) 2017, Open Grid Computing, Inc. */
 
 #include <linux/workqueue.h>
+#include <trace/events/sock.h>
 
 #include "erdma.h"
 #include "erdma_cm.h"
@@ -925,6 +926,8 @@ static void erdma_cm_llp_data_ready(struct sock *sk)
 {
        struct erdma_cep *cep;
 
+       trace_sk_data_ready(sk);
+
        read_lock(&sk->sk_callback_lock);
 
        cep = sk_to_cep(sk);
index f88d2971c2c635f54673f54376df93cb0a882048..da530c0404da4d7addf185c8802753155d8a76d1 100644 (file)
@@ -16,6 +16,7 @@
 #include <net/tcp.h>
 #include <linux/inet.h>
 #include <linux/tcp.h>
+#include <trace/events/sock.h>
 
 #include <rdma/iw_cm.h>
 #include <rdma/ib_verbs.h>
@@ -109,6 +110,8 @@ static void siw_rtr_data_ready(struct sock *sk)
        struct siw_qp *qp = NULL;
        read_descriptor_t rd_desc;
 
+       trace_sk_data_ready(sk);
+
        read_lock(&sk->sk_callback_lock);
 
        cep = sk_to_cep(sk);
@@ -1216,6 +1219,8 @@ static void siw_cm_llp_data_ready(struct sock *sk)
 {
        struct siw_cep *cep;
 
+       trace_sk_data_ready(sk);
+
        read_lock(&sk->sk_callback_lock);
 
        cep = sk_to_cep(sk);
index e6f634971228e4993f26ac17a19fb41d8a588ed5..81e9bbd9ebdacfed5387e956db8cdd891187f9e4 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/llist.h>
 #include <asm/barrier.h>
 #include <net/tcp.h>
+#include <trace/events/sock.h>
 
 #include "siw.h"
 #include "siw_verbs.h"
@@ -94,6 +95,8 @@ void siw_qp_llp_data_ready(struct sock *sk)
 {
        struct siw_qp *qp;
 
+       trace_sk_data_ready(sk);
+
        read_lock(&sk->sk_callback_lock);
 
        if (unlikely(!sk->sk_user_data || !sk_to_qp(sk)))
index 8cedc1ef496c70937ce2d7fd264ff4e09e28d11d..70e273b565de6052ea62c6b37d138fbbc4484a37 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/blk-mq.h>
 #include <crypto/hash.h>
 #include <net/busy_poll.h>
+#include <trace/events/sock.h>
 
 #include "nvme.h"
 #include "fabrics.h"
@@ -905,6 +906,8 @@ static void nvme_tcp_data_ready(struct sock *sk)
 {
        struct nvme_tcp_queue *queue;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        queue = sk->sk_user_data;
        if (likely(queue && queue->rd_enabled) &&
index cc05c094de221d81abdb51814a5b471e60833a3f..4a161c8cb5312bee0d719e454c0ede0575e07c02 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/inet.h>
 #include <linux/llist.h>
 #include <crypto/hash.h>
+#include <trace/events/sock.h>
 
 #include "nvmet.h"
 
@@ -1470,6 +1471,8 @@ static void nvmet_tcp_data_ready(struct sock *sk)
 {
        struct nvmet_tcp_queue *queue;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        queue = sk->sk_user_data;
        if (likely(queue))
@@ -1667,6 +1670,8 @@ static void nvmet_tcp_listen_data_ready(struct sock *sk)
 {
        struct nvmet_tcp_port *port;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        port = sk->sk_user_data;
        if (!port)
index 1d1cf641937c14738596a68d6cb546c576bef741..08f204ba9cd1c57b3a54d0bc0f15d69a1b388327 100644 (file)
@@ -36,6 +36,7 @@
 #include <scsi/scsi.h>
 #include <scsi/scsi_transport_iscsi.h>
 #include <trace/events/iscsi.h>
+#include <trace/events/sock.h>
 
 #include "iscsi_tcp.h"
 
@@ -170,6 +171,8 @@ static void iscsi_sw_tcp_data_ready(struct sock *sk)
        struct iscsi_tcp_conn *tcp_conn;
        struct iscsi_conn *conn;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        conn = sk->sk_user_data;
        if (!conn) {
index 57052726299db275d74bd137f8016df7bba7e0bd..820bdd9f8e4686b51fbeb5f5c7b0b3c3c91d0a23 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/string.h>
 #include <net/sock.h>
 #include <linux/workqueue.h>
+#include <trace/events/sock.h>
 #include <linux/soc/qcom/qmi.h>
 
 static struct socket *qmi_sock_create(struct qmi_handle *qmi,
@@ -569,6 +570,8 @@ static void qmi_data_ready(struct sock *sk)
 {
        struct qmi_handle *qmi = sk->sk_user_data;
 
+       trace_sk_data_ready(sk);
+
        /*
         * This will be NULL if we receive data while being in
         * qmi_handle_release()
index ff49c8f3fe241a2c84963ccd1947e7be43eeca25..24040c118e49d26145eceaaa3b6ce34331366a8f 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/slab.h>
 #include <linux/sched/signal.h>
 #include <net/sock.h>
+#include <trace/events/sock.h>
 #include <scsi/iscsi_proto.h>
 #include <target/target_core_base.h>
 #include <target/target_core_fabric.h>
@@ -384,6 +385,7 @@ static void iscsi_target_sk_data_ready(struct sock *sk)
        struct iscsit_conn *conn = sk->sk_user_data;
        bool rc;
 
+       trace_sk_data_ready(sk);
        pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn);
 
        write_lock_bh(&sk->sk_callback_lock);
index 0d4f8f4f494888898c759d0f14ddc28f594cdabc..e2abc3474d85d2fb3b624b3c82d4f90f847bb7a4 100644 (file)
@@ -14,6 +14,7 @@
 #include <net/inet_common.h>
 #include <net/inet_connection_sock.h>
 #include <net/request_sock.h>
+#include <trace/events/sock.h>
 
 #include <xen/events.h>
 #include <xen/grant_table.h>
@@ -300,6 +301,8 @@ static void pvcalls_sk_data_ready(struct sock *sock)
        struct sock_mapping *map = sock->sk_user_data;
        struct pvcalls_ioworker *iow;
 
+       trace_sk_data_ready(sock);
+
        if (map == NULL)
                return;
 
@@ -588,6 +591,8 @@ static void pvcalls_pass_sk_data_ready(struct sock *sock)
        unsigned long flags;
        int notify;
 
+       trace_sk_data_ready(sock);
+
        if (mappass == NULL)
                return;
 
index 4450721ec83c6592f1d1eba34da8ea16bb561ff9..7920c655173c21fdfcff91cbedc46b0bba27c1f6 100644 (file)
@@ -54,6 +54,7 @@
 #include <net/ipv6.h>
 
 #include <trace/events/dlm.h>
+#include <trace/events/sock.h>
 
 #include "dlm_internal.h"
 #include "lowcomms.h"
@@ -499,6 +500,8 @@ static void lowcomms_data_ready(struct sock *sk)
 {
        struct connection *con = sock2con(sk);
 
+       trace_sk_data_ready(sk);
+
        set_bit(CF_RECV_INTR, &con->flags);
        lowcomms_queue_rwork(con);
 }
@@ -530,6 +533,8 @@ static void lowcomms_state_change(struct sock *sk)
 
 static void lowcomms_listen_data_ready(struct sock *sk)
 {
+       trace_sk_data_ready(sk);
+
        queue_work(io_workqueue, &listen_con.rwork);
 }
 
index a07b24d170f235045359bf201c86f77133a934e9..aecbd712a00cf16fd9425b9b6d8973aa3750b399 100644 (file)
@@ -46,6 +46,7 @@
 #include <linux/net.h>
 #include <linux/export.h>
 #include <net/tcp.h>
+#include <trace/events/sock.h>
 
 #include <linux/uaccess.h>
 
@@ -585,6 +586,8 @@ static void o2net_data_ready(struct sock *sk)
        void (*ready)(struct sock *sk);
        struct o2net_sock_container *sc;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        sc = sk->sk_user_data;
        if (sc) {
@@ -1931,6 +1934,8 @@ static void o2net_listen_data_ready(struct sock *sk)
 {
        void (*ready)(struct sock *sk);
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        ready = sk->sk_user_data;
        if (ready == NULL) { /* check for teardown race */
index 71492e8276dac6ff1c576799eeae2aded07ee284..03d19fc562f872d68cfb2349797f0924cfba718b 100644 (file)
@@ -263,6 +263,30 @@ TRACE_EVENT(inet_sk_error_report,
                  __entry->error)
 );
 
+TRACE_EVENT(sk_data_ready,
+
+       TP_PROTO(const struct sock *sk),
+
+       TP_ARGS(sk),
+
+       TP_STRUCT__entry(
+               __field(const void *, skaddr)
+               __field(__u16, family)
+               __field(__u16, protocol)
+               __field(unsigned long, ip)
+       ),
+
+       TP_fast_assign(
+               __entry->skaddr = sk;
+               __entry->family = sk->sk_family;
+               __entry->protocol = sk->sk_protocol;
+               __entry->ip = _RET_IP_;
+       ),
+
+       TP_printk("family=%u protocol=%u func=%ps",
+                 __entry->family, __entry->protocol, (void *)__entry->ip)
+);
+
 /*
  * sock send/recv msg length
  */
index 8d6fce9005bddf1bd4e7a53ea02b3a4663bf7ebd..053ef8f25fae47b369068adb49f1391b32fd7bc9 100644 (file)
@@ -35,6 +35,8 @@
 #include <net/bluetooth/l2cap.h>
 #include <net/bluetooth/rfcomm.h>
 
+#include <trace/events/sock.h>
+
 #define VERSION "1.11"
 
 static bool disable_cfc;
@@ -186,6 +188,8 @@ static void rfcomm_l2state_change(struct sock *sk)
 
 static void rfcomm_l2data_ready(struct sock *sk)
 {
+       trace_sk_data_ready(sk);
+
        BT_DBG("%p", sk);
        rfcomm_schedule();
 }
index 1d06e114ba3ff803587c3972cdd7c10e19d6a720..cd7b0bf5369ec760f90f8b9b22526f5dae7f0d58 100644 (file)
@@ -17,6 +17,7 @@
 #endif /* CONFIG_BLOCK */
 #include <linux/dns_resolver.h>
 #include <net/tcp.h>
+#include <trace/events/sock.h>
 
 #include <linux/ceph/ceph_features.h>
 #include <linux/ceph/libceph.h>
@@ -344,6 +345,9 @@ static void con_sock_state_closed(struct ceph_connection *con)
 static void ceph_sock_data_ready(struct sock *sk)
 {
        struct ceph_connection *con = sk->sk_user_data;
+
+       trace_sk_data_ready(sk);
+
        if (atomic_read(&con->msgr->stopping)) {
                return;
        }
index c40cd8dd75c7f989b007f989a3bf0c13b9b7dc2f..ee7006bbe49bea4cc62b1c0329e93b62fa2b92b0 100644 (file)
@@ -61,3 +61,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll);
 
 EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_send_reset);
 EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_bad_csum);
+
+EXPORT_TRACEPOINT_SYMBOL_GPL(sk_data_ready);
index 53d0251788aa26c80145dbeee2c2c67afdf40b3b..f81883759d381c14d70f126d7281404e786259f9 100644 (file)
@@ -8,6 +8,7 @@
 #include <net/sock.h>
 #include <net/tcp.h>
 #include <net/tls.h>
+#include <trace/events/sock.h>
 
 static bool sk_msg_try_coalesce_ok(struct sk_msg *msg, int elem_first_coalesce)
 {
@@ -1114,6 +1115,8 @@ static void sk_psock_strp_data_ready(struct sock *sk)
 {
        struct sk_psock *psock;
 
+       trace_sk_data_ready(sk);
+
        rcu_read_lock();
        psock = sk_psock(sk);
        if (likely(psock)) {
@@ -1210,6 +1213,8 @@ static void sk_psock_verdict_data_ready(struct sock *sk)
 {
        struct socket *sock = sk->sk_socket;
 
+       trace_sk_data_ready(sk);
+
        if (unlikely(!sock || !sock->ops || !sock->ops->read_skb))
                return;
        sock->ops->read_skb(sk, sk_psock_verdict_recv);
index f954d5893e799ac51aca97d5cb2314cc32460c92..7ba4891460adbd6c13c0ce1dcdd7f23c8c1f0f5d 100644 (file)
@@ -3291,6 +3291,8 @@ void sock_def_readable(struct sock *sk)
 {
        struct socket_wq *wq;
 
+       trace_sk_data_ready(sk);
+
        rcu_read_lock();
        wq = rcu_dereference(sk->sk_wq);
        if (skwq_has_sleeper(wq))
index 890a2423f559eda103d03799dec6cd4e4e0c3df9..cfe828bd7fc614171a60530b2aab351be1a4e9b6 100644 (file)
@@ -28,6 +28,7 @@
 #include <net/netns/generic.h>
 #include <net/sock.h>
 #include <uapi/linux/kcm.h>
+#include <trace/events/sock.h>
 
 unsigned int kcm_net_id;
 
@@ -349,6 +350,8 @@ static void psock_data_ready(struct sock *sk)
 {
        struct kcm_psock *psock;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
 
        psock = (struct kcm_psock *)sk->sk_user_data;
index ec54413fb31f7862ccf1602395235a7888e44dd4..beaec843f5ca684e5ad27ffbca46fed9a7c53a63 100644 (file)
@@ -26,6 +26,7 @@
 #include "mib.h"
 
 #include <trace/events/mptcp.h>
+#include <trace/events/sock.h>
 
 static void mptcp_subflow_ops_undo_override(struct sock *ssk);
 
@@ -1438,6 +1439,8 @@ static void subflow_data_ready(struct sock *sk)
        struct sock *parent = subflow->conn;
        struct mptcp_sock *msk;
 
+       trace_sk_data_ready(sk);
+
        msk = mptcp_sk(parent);
        if (state & TCPF_LISTEN) {
                /* MPJ subflow are removed from accept queue before reaching here,
index 1f5df0432d371f596c4757724d5e5e0566f2960c..7f68d8662cfb03cabb7f184ff0944eb8cebcbde5 100644 (file)
@@ -19,6 +19,8 @@
 #include <net/tcp_states.h>
 #include <net/phonet/gprs.h>
 
+#include <trace/events/sock.h>
+
 #define GPRS_DEFAULT_MTU 1400
 
 struct gprs_dev {
@@ -138,6 +140,8 @@ static void gprs_data_ready(struct sock *sk)
        struct gprs_dev *gp = sk->sk_user_data;
        struct sk_buff *skb;
 
+       trace_sk_data_ready(sk);
+
        while ((skb = pep_read(sk)) != NULL) {
                skb_orphan(skb);
                gprs_recv(gp, skb);
index 1990d496fcfc0003ecc93b67f7a7a740c36cc39b..97bfdf9fd0286d2a9b8b98a61642ab2c2390e0cf 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "qrtr.h"
 
+#include <trace/events/sock.h>
 #define CREATE_TRACE_POINTS
 #include <trace/events/qrtr.h>
 
@@ -752,6 +753,8 @@ static void qrtr_ns_worker(struct work_struct *work)
 
 static void qrtr_ns_data_ready(struct sock *sk)
 {
+       trace_sk_data_ready(sk);
+
        queue_work(qrtr_ns.workqueue, &qrtr_ns.work);
 }
 
index 7edf2e69d3fed61bc4ae410cd9be33532262f940..014fa24418c12ea29d7be7fb72028f44bf6bd9ce 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/gfp.h>
 #include <linux/in.h>
 #include <net/tcp.h>
+#include <trace/events/sock.h>
 
 #include "rds.h"
 #include "tcp.h"
@@ -234,6 +235,7 @@ void rds_tcp_listen_data_ready(struct sock *sk)
 {
        void (*ready)(struct sock *sk);
 
+       trace_sk_data_ready(sk);
        rdsdebug("listen data ready sk %p\n", sk);
 
        read_lock_bh(&sk->sk_callback_lock);
index f4ee13da90c7011d7f65a6f96dd4e3fedfa94378..c00f04a1a5347cead4c566fd1e6f02485ceb7a83 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/kernel.h>
 #include <linux/slab.h>
 #include <net/tcp.h>
+#include <trace/events/sock.h>
 
 #include "rds.h"
 #include "tcp.h"
@@ -309,6 +310,7 @@ void rds_tcp_data_ready(struct sock *sk)
        struct rds_conn_path *cp;
        struct rds_tcp_connection *tc;
 
+       trace_sk_data_ready(sk);
        rdsdebug("data ready sk %p\n", sk);
 
        read_lock_bh(&sk->sk_callback_lock);
index 84021a6c4f9daab83f021ba950f4a093ddf7c9b5..a98511b676cd56d7f72431b06b3670c343e1b21e 100644 (file)
@@ -59,6 +59,7 @@
 #include <net/ipv6.h>
 #include <net/inet_common.h>
 #include <net/busy_poll.h>
+#include <trace/events/sock.h>
 
 #include <linux/socket.h> /* for sa_family_t */
 #include <linux/export.h>
@@ -9244,6 +9245,8 @@ void sctp_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
+       trace_sk_data_ready(sk);
+
        rcu_read_lock();
        wq = rcu_dereference(sk->sk_wq);
        if (skwq_has_sleeper(wq))
index 17c5aee7ee4f2019fe27dd688b6bbc2eb69b29f2..0a6e615f000cfd0621258071dafd6ac765e78c56 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/sched/signal.h>
 
 #include <net/sock.h>
+#include <trace/events/sock.h>
 
 #include "smc.h"
 #include "smc_core.h"
@@ -31,6 +32,8 @@ static void smc_rx_wake_up(struct sock *sk)
 {
        struct socket_wq *wq;
 
+       trace_sk_data_ready(sk);
+
        /* derived from sock_def_readable() */
        /* called already in smc_listen_work() */
        rcu_read_lock();
index 815baf308236a9d20ed7103603cfbc2af1fa1bd9..99eafe87b1d51a6dd75c6b15788f1771eaa3d3df 100644 (file)
@@ -55,6 +55,7 @@
 #include <linux/sunrpc/stats.h>
 #include <linux/sunrpc/xprt.h>
 
+#include <trace/events/sock.h>
 #include <trace/events/sunrpc.h>
 
 #include "socklib.h"
@@ -310,6 +311,8 @@ static void svc_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
 
+       trace_sk_data_ready(sk);
+
        if (svsk) {
                /* Refer to svc_setup_socket() for details. */
                rmb();
@@ -687,6 +690,8 @@ static void svc_tcp_listen_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
 
+       trace_sk_data_ready(sk);
+
        if (svsk) {
                /* Refer to svc_setup_socket() for details. */
                rmb();
index aaa5b2741b79d1fc238eeb967c1bab9761f8ea6e..adcbedc244d63f70804ad73f290bfaa2e7c4be3b 100644 (file)
@@ -52,6 +52,7 @@
 #include <linux/uio.h>
 #include <linux/sched/mm.h>
 
+#include <trace/events/sock.h>
 #include <trace/events/sunrpc.h>
 
 #include "socklib.h"
@@ -1378,6 +1379,8 @@ static void xs_data_ready(struct sock *sk)
 {
        struct rpc_xprt *xprt;
 
+       trace_sk_data_ready(sk);
+
        xprt = xprt_from_sock(sk);
        if (xprt != NULL) {
                struct sock_xprt *transport = container_of(xprt,
index b35c8701876a2fbc2b83255324c1d1712a2b436a..07c9bf5f7f5c66669f4d6a156d3c9ce767ec8f92 100644 (file)
@@ -37,6 +37,7 @@
 
 #include <linux/rhashtable.h>
 #include <linux/sched/signal.h>
+#include <trace/events/sock.h>
 
 #include "core.h"
 #include "name_table.h"
@@ -2130,6 +2131,8 @@ static void tipc_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
+       trace_sk_data_ready(sk);
+
        rcu_read_lock();
        wq = rcu_dereference(sk->sk_wq);
        if (skwq_has_sleeper(wq))
index 69c88cc03887d13cba00b6d488ae35f12f2777b0..8ee0c07d00e9bb16259ff2776a111b55885e8bda 100644 (file)
@@ -43,6 +43,7 @@
 #include "bearer.h"
 #include <net/sock.h>
 #include <linux/module.h>
+#include <trace/events/sock.h>
 
 /* Number of messages to send before rescheduling */
 #define MAX_SEND_MSG_COUNT     25
@@ -439,6 +440,8 @@ static void tipc_conn_data_ready(struct sock *sk)
 {
        struct tipc_conn *con;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        con = sk->sk_user_data;
        if (connected(con)) {
@@ -496,6 +499,8 @@ static void tipc_topsrv_listener_data_ready(struct sock *sk)
 {
        struct tipc_topsrv *srv;
 
+       trace_sk_data_ready(sk);
+
        read_lock_bh(&sk->sk_callback_lock);
        srv = sk->sk_user_data;
        if (srv)
index 9ed9786341259ea6dc4ed1a255f35534f9f902bf..fa137063aaa06010bee15940455b28268e538d54 100644 (file)
@@ -43,6 +43,7 @@
 
 #include <net/strparser.h>
 #include <net/tls.h>
+#include <trace/events/sock.h>
 
 #include "tls.h"
 
@@ -2284,6 +2285,8 @@ static void tls_data_ready(struct sock *sk)
        struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
        struct sk_psock *psock;
 
+       trace_sk_data_ready(sk);
+
        tls_strp_data_ready(&ctx->strp);
 
        psock = sk_psock_get(sk);
index 74a54295c164457f48a57198b605d2777e491562..872b80188e830c9953af23c73cac1f3209f560c2 100644 (file)
@@ -6,6 +6,7 @@
 #include <net/espintcp.h>
 #include <linux/skmsg.h>
 #include <net/inet_common.h>
+#include <trace/events/sock.h>
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/ipv6_stubs.h>
 #endif
@@ -397,6 +398,8 @@ static void espintcp_data_ready(struct sock *sk)
 {
        struct espintcp_ctx *ctx = espintcp_getctx(sk);
 
+       trace_sk_data_ready(sk);
+
        strp_data_ready(&ctx->strp);
 }