Commit 40e0b090 authored by Peilin Ye's avatar Peilin Ye Committed by David S. Miller

net/sock: Introduce trace_sk_data_ready()

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: default avatarCong Wang <cong.wang@bytedance.com>
Signed-off-by: default avatarPeilin Ye <peilin.ye@bytedance.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a7b87d2a
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
/* Copyright (c) 2017, Open Grid Computing, Inc. */ /* Copyright (c) 2017, Open Grid Computing, Inc. */
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <trace/events/sock.h>
#include "erdma.h" #include "erdma.h"
#include "erdma_cm.h" #include "erdma_cm.h"
...@@ -925,6 +926,8 @@ static void erdma_cm_llp_data_ready(struct sock *sk) ...@@ -925,6 +926,8 @@ static void erdma_cm_llp_data_ready(struct sock *sk)
{ {
struct erdma_cep *cep; struct erdma_cep *cep;
trace_sk_data_ready(sk);
read_lock(&sk->sk_callback_lock); read_lock(&sk->sk_callback_lock);
cep = sk_to_cep(sk); cep = sk_to_cep(sk);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <net/tcp.h> #include <net/tcp.h>
#include <linux/inet.h> #include <linux/inet.h>
#include <linux/tcp.h> #include <linux/tcp.h>
#include <trace/events/sock.h>
#include <rdma/iw_cm.h> #include <rdma/iw_cm.h>
#include <rdma/ib_verbs.h> #include <rdma/ib_verbs.h>
...@@ -109,6 +110,8 @@ static void siw_rtr_data_ready(struct sock *sk) ...@@ -109,6 +110,8 @@ static void siw_rtr_data_ready(struct sock *sk)
struct siw_qp *qp = NULL; struct siw_qp *qp = NULL;
read_descriptor_t rd_desc; read_descriptor_t rd_desc;
trace_sk_data_ready(sk);
read_lock(&sk->sk_callback_lock); read_lock(&sk->sk_callback_lock);
cep = sk_to_cep(sk); cep = sk_to_cep(sk);
...@@ -1216,6 +1219,8 @@ static void siw_cm_llp_data_ready(struct sock *sk) ...@@ -1216,6 +1219,8 @@ static void siw_cm_llp_data_ready(struct sock *sk)
{ {
struct siw_cep *cep; struct siw_cep *cep;
trace_sk_data_ready(sk);
read_lock(&sk->sk_callback_lock); read_lock(&sk->sk_callback_lock);
cep = sk_to_cep(sk); cep = sk_to_cep(sk);
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <linux/llist.h> #include <linux/llist.h>
#include <asm/barrier.h> #include <asm/barrier.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <trace/events/sock.h>
#include "siw.h" #include "siw.h"
#include "siw_verbs.h" #include "siw_verbs.h"
...@@ -94,6 +95,8 @@ void siw_qp_llp_data_ready(struct sock *sk) ...@@ -94,6 +95,8 @@ void siw_qp_llp_data_ready(struct sock *sk)
{ {
struct siw_qp *qp; struct siw_qp *qp;
trace_sk_data_ready(sk);
read_lock(&sk->sk_callback_lock); read_lock(&sk->sk_callback_lock);
if (unlikely(!sk->sk_user_data || !sk_to_qp(sk))) if (unlikely(!sk->sk_user_data || !sk_to_qp(sk)))
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/blk-mq.h> #include <linux/blk-mq.h>
#include <crypto/hash.h> #include <crypto/hash.h>
#include <net/busy_poll.h> #include <net/busy_poll.h>
#include <trace/events/sock.h>
#include "nvme.h" #include "nvme.h"
#include "fabrics.h" #include "fabrics.h"
...@@ -905,6 +906,8 @@ static void nvme_tcp_data_ready(struct sock *sk) ...@@ -905,6 +906,8 @@ static void nvme_tcp_data_ready(struct sock *sk)
{ {
struct nvme_tcp_queue *queue; struct nvme_tcp_queue *queue;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
queue = sk->sk_user_data; queue = sk->sk_user_data;
if (likely(queue && queue->rd_enabled) && if (likely(queue && queue->rd_enabled) &&
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/inet.h> #include <linux/inet.h>
#include <linux/llist.h> #include <linux/llist.h>
#include <crypto/hash.h> #include <crypto/hash.h>
#include <trace/events/sock.h>
#include "nvmet.h" #include "nvmet.h"
...@@ -1470,6 +1471,8 @@ static void nvmet_tcp_data_ready(struct sock *sk) ...@@ -1470,6 +1471,8 @@ static void nvmet_tcp_data_ready(struct sock *sk)
{ {
struct nvmet_tcp_queue *queue; struct nvmet_tcp_queue *queue;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
queue = sk->sk_user_data; queue = sk->sk_user_data;
if (likely(queue)) if (likely(queue))
...@@ -1667,6 +1670,8 @@ static void nvmet_tcp_listen_data_ready(struct sock *sk) ...@@ -1667,6 +1670,8 @@ static void nvmet_tcp_listen_data_ready(struct sock *sk)
{ {
struct nvmet_tcp_port *port; struct nvmet_tcp_port *port;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
port = sk->sk_user_data; port = sk->sk_user_data;
if (!port) if (!port)
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <scsi/scsi.h> #include <scsi/scsi.h>
#include <scsi/scsi_transport_iscsi.h> #include <scsi/scsi_transport_iscsi.h>
#include <trace/events/iscsi.h> #include <trace/events/iscsi.h>
#include <trace/events/sock.h>
#include "iscsi_tcp.h" #include "iscsi_tcp.h"
...@@ -170,6 +171,8 @@ static void iscsi_sw_tcp_data_ready(struct sock *sk) ...@@ -170,6 +171,8 @@ static void iscsi_sw_tcp_data_ready(struct sock *sk)
struct iscsi_tcp_conn *tcp_conn; struct iscsi_tcp_conn *tcp_conn;
struct iscsi_conn *conn; struct iscsi_conn *conn;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
conn = sk->sk_user_data; conn = sk->sk_user_data;
if (!conn) { if (!conn) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <net/sock.h> #include <net/sock.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <trace/events/sock.h>
#include <linux/soc/qcom/qmi.h> #include <linux/soc/qcom/qmi.h>
static struct socket *qmi_sock_create(struct qmi_handle *qmi, static struct socket *qmi_sock_create(struct qmi_handle *qmi,
...@@ -569,6 +570,8 @@ static void qmi_data_ready(struct sock *sk) ...@@ -569,6 +570,8 @@ static void qmi_data_ready(struct sock *sk)
{ {
struct qmi_handle *qmi = sk->sk_user_data; struct qmi_handle *qmi = sk->sk_user_data;
trace_sk_data_ready(sk);
/* /*
* This will be NULL if we receive data while being in * This will be NULL if we receive data while being in
* qmi_handle_release() * qmi_handle_release()
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/sched/signal.h> #include <linux/sched/signal.h>
#include <net/sock.h> #include <net/sock.h>
#include <trace/events/sock.h>
#include <scsi/iscsi_proto.h> #include <scsi/iscsi_proto.h>
#include <target/target_core_base.h> #include <target/target_core_base.h>
#include <target/target_core_fabric.h> #include <target/target_core_fabric.h>
...@@ -384,6 +385,7 @@ static void iscsi_target_sk_data_ready(struct sock *sk) ...@@ -384,6 +385,7 @@ static void iscsi_target_sk_data_ready(struct sock *sk)
struct iscsit_conn *conn = sk->sk_user_data; struct iscsit_conn *conn = sk->sk_user_data;
bool rc; bool rc;
trace_sk_data_ready(sk);
pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn); pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn);
write_lock_bh(&sk->sk_callback_lock); write_lock_bh(&sk->sk_callback_lock);
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <net/inet_common.h> #include <net/inet_common.h>
#include <net/inet_connection_sock.h> #include <net/inet_connection_sock.h>
#include <net/request_sock.h> #include <net/request_sock.h>
#include <trace/events/sock.h>
#include <xen/events.h> #include <xen/events.h>
#include <xen/grant_table.h> #include <xen/grant_table.h>
...@@ -300,6 +301,8 @@ static void pvcalls_sk_data_ready(struct sock *sock) ...@@ -300,6 +301,8 @@ static void pvcalls_sk_data_ready(struct sock *sock)
struct sock_mapping *map = sock->sk_user_data; struct sock_mapping *map = sock->sk_user_data;
struct pvcalls_ioworker *iow; struct pvcalls_ioworker *iow;
trace_sk_data_ready(sock);
if (map == NULL) if (map == NULL)
return; return;
...@@ -588,6 +591,8 @@ static void pvcalls_pass_sk_data_ready(struct sock *sock) ...@@ -588,6 +591,8 @@ static void pvcalls_pass_sk_data_ready(struct sock *sock)
unsigned long flags; unsigned long flags;
int notify; int notify;
trace_sk_data_ready(sock);
if (mappass == NULL) if (mappass == NULL)
return; return;
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include <net/ipv6.h> #include <net/ipv6.h>
#include <trace/events/dlm.h> #include <trace/events/dlm.h>
#include <trace/events/sock.h>
#include "dlm_internal.h" #include "dlm_internal.h"
#include "lowcomms.h" #include "lowcomms.h"
...@@ -499,6 +500,8 @@ static void lowcomms_data_ready(struct sock *sk) ...@@ -499,6 +500,8 @@ static void lowcomms_data_ready(struct sock *sk)
{ {
struct connection *con = sock2con(sk); struct connection *con = sock2con(sk);
trace_sk_data_ready(sk);
set_bit(CF_RECV_INTR, &con->flags); set_bit(CF_RECV_INTR, &con->flags);
lowcomms_queue_rwork(con); lowcomms_queue_rwork(con);
} }
...@@ -530,6 +533,8 @@ static void lowcomms_state_change(struct sock *sk) ...@@ -530,6 +533,8 @@ static void lowcomms_state_change(struct sock *sk)
static void lowcomms_listen_data_ready(struct sock *sk) static void lowcomms_listen_data_ready(struct sock *sk)
{ {
trace_sk_data_ready(sk);
queue_work(io_workqueue, &listen_con.rwork); queue_work(io_workqueue, &listen_con.rwork);
} }
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include <linux/net.h> #include <linux/net.h>
#include <linux/export.h> #include <linux/export.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <trace/events/sock.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
...@@ -585,6 +586,8 @@ static void o2net_data_ready(struct sock *sk) ...@@ -585,6 +586,8 @@ static void o2net_data_ready(struct sock *sk)
void (*ready)(struct sock *sk); void (*ready)(struct sock *sk);
struct o2net_sock_container *sc; struct o2net_sock_container *sc;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
sc = sk->sk_user_data; sc = sk->sk_user_data;
if (sc) { if (sc) {
...@@ -1931,6 +1934,8 @@ static void o2net_listen_data_ready(struct sock *sk) ...@@ -1931,6 +1934,8 @@ static void o2net_listen_data_ready(struct sock *sk)
{ {
void (*ready)(struct sock *sk); void (*ready)(struct sock *sk);
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
ready = sk->sk_user_data; ready = sk->sk_user_data;
if (ready == NULL) { /* check for teardown race */ if (ready == NULL) { /* check for teardown race */
......
...@@ -263,6 +263,30 @@ TRACE_EVENT(inet_sk_error_report, ...@@ -263,6 +263,30 @@ TRACE_EVENT(inet_sk_error_report,
__entry->error) __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 * sock send/recv msg length
*/ */
......
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include <net/bluetooth/l2cap.h> #include <net/bluetooth/l2cap.h>
#include <net/bluetooth/rfcomm.h> #include <net/bluetooth/rfcomm.h>
#include <trace/events/sock.h>
#define VERSION "1.11" #define VERSION "1.11"
static bool disable_cfc; static bool disable_cfc;
...@@ -186,6 +188,8 @@ static void rfcomm_l2state_change(struct sock *sk) ...@@ -186,6 +188,8 @@ static void rfcomm_l2state_change(struct sock *sk)
static void rfcomm_l2data_ready(struct sock *sk) static void rfcomm_l2data_ready(struct sock *sk)
{ {
trace_sk_data_ready(sk);
BT_DBG("%p", sk); BT_DBG("%p", sk);
rfcomm_schedule(); rfcomm_schedule();
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#endif /* CONFIG_BLOCK */ #endif /* CONFIG_BLOCK */
#include <linux/dns_resolver.h> #include <linux/dns_resolver.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <trace/events/sock.h>
#include <linux/ceph/ceph_features.h> #include <linux/ceph/ceph_features.h>
#include <linux/ceph/libceph.h> #include <linux/ceph/libceph.h>
...@@ -344,6 +345,9 @@ static void con_sock_state_closed(struct ceph_connection *con) ...@@ -344,6 +345,9 @@ static void con_sock_state_closed(struct ceph_connection *con)
static void ceph_sock_data_ready(struct sock *sk) static void ceph_sock_data_ready(struct sock *sk)
{ {
struct ceph_connection *con = sk->sk_user_data; struct ceph_connection *con = sk->sk_user_data;
trace_sk_data_ready(sk);
if (atomic_read(&con->msgr->stopping)) { if (atomic_read(&con->msgr->stopping)) {
return; return;
} }
......
...@@ -61,3 +61,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll); ...@@ -61,3 +61,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll);
EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_send_reset); EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_send_reset);
EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_bad_csum); EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_bad_csum);
EXPORT_TRACEPOINT_SYMBOL_GPL(sk_data_ready);
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <net/sock.h> #include <net/sock.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <net/tls.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) 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) ...@@ -1114,6 +1115,8 @@ static void sk_psock_strp_data_ready(struct sock *sk)
{ {
struct sk_psock *psock; struct sk_psock *psock;
trace_sk_data_ready(sk);
rcu_read_lock(); rcu_read_lock();
psock = sk_psock(sk); psock = sk_psock(sk);
if (likely(psock)) { if (likely(psock)) {
...@@ -1210,6 +1213,8 @@ static void sk_psock_verdict_data_ready(struct sock *sk) ...@@ -1210,6 +1213,8 @@ static void sk_psock_verdict_data_ready(struct sock *sk)
{ {
struct socket *sock = sk->sk_socket; struct socket *sock = sk->sk_socket;
trace_sk_data_ready(sk);
if (unlikely(!sock || !sock->ops || !sock->ops->read_skb)) if (unlikely(!sock || !sock->ops || !sock->ops->read_skb))
return; return;
sock->ops->read_skb(sk, sk_psock_verdict_recv); sock->ops->read_skb(sk, sk_psock_verdict_recv);
......
...@@ -3291,6 +3291,8 @@ void sock_def_readable(struct sock *sk) ...@@ -3291,6 +3291,8 @@ void sock_def_readable(struct sock *sk)
{ {
struct socket_wq *wq; struct socket_wq *wq;
trace_sk_data_ready(sk);
rcu_read_lock(); rcu_read_lock();
wq = rcu_dereference(sk->sk_wq); wq = rcu_dereference(sk->sk_wq);
if (skwq_has_sleeper(wq)) if (skwq_has_sleeper(wq))
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <net/netns/generic.h> #include <net/netns/generic.h>
#include <net/sock.h> #include <net/sock.h>
#include <uapi/linux/kcm.h> #include <uapi/linux/kcm.h>
#include <trace/events/sock.h>
unsigned int kcm_net_id; unsigned int kcm_net_id;
...@@ -349,6 +350,8 @@ static void psock_data_ready(struct sock *sk) ...@@ -349,6 +350,8 @@ static void psock_data_ready(struct sock *sk)
{ {
struct kcm_psock *psock; struct kcm_psock *psock;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
psock = (struct kcm_psock *)sk->sk_user_data; psock = (struct kcm_psock *)sk->sk_user_data;
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "mib.h" #include "mib.h"
#include <trace/events/mptcp.h> #include <trace/events/mptcp.h>
#include <trace/events/sock.h>
static void mptcp_subflow_ops_undo_override(struct sock *ssk); static void mptcp_subflow_ops_undo_override(struct sock *ssk);
...@@ -1438,6 +1439,8 @@ static void subflow_data_ready(struct sock *sk) ...@@ -1438,6 +1439,8 @@ static void subflow_data_ready(struct sock *sk)
struct sock *parent = subflow->conn; struct sock *parent = subflow->conn;
struct mptcp_sock *msk; struct mptcp_sock *msk;
trace_sk_data_ready(sk);
msk = mptcp_sk(parent); msk = mptcp_sk(parent);
if (state & TCPF_LISTEN) { if (state & TCPF_LISTEN) {
/* MPJ subflow are removed from accept queue before reaching here, /* MPJ subflow are removed from accept queue before reaching here,
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
#include <net/tcp_states.h> #include <net/tcp_states.h>
#include <net/phonet/gprs.h> #include <net/phonet/gprs.h>
#include <trace/events/sock.h>
#define GPRS_DEFAULT_MTU 1400 #define GPRS_DEFAULT_MTU 1400
struct gprs_dev { struct gprs_dev {
...@@ -138,6 +140,8 @@ static void gprs_data_ready(struct sock *sk) ...@@ -138,6 +140,8 @@ static void gprs_data_ready(struct sock *sk)
struct gprs_dev *gp = sk->sk_user_data; struct gprs_dev *gp = sk->sk_user_data;
struct sk_buff *skb; struct sk_buff *skb;
trace_sk_data_ready(sk);
while ((skb = pep_read(sk)) != NULL) { while ((skb = pep_read(sk)) != NULL) {
skb_orphan(skb); skb_orphan(skb);
gprs_recv(gp, skb); gprs_recv(gp, skb);
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "qrtr.h" #include "qrtr.h"
#include <trace/events/sock.h>
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
#include <trace/events/qrtr.h> #include <trace/events/qrtr.h>
...@@ -752,6 +753,8 @@ static void qrtr_ns_worker(struct work_struct *work) ...@@ -752,6 +753,8 @@ static void qrtr_ns_worker(struct work_struct *work)
static void qrtr_ns_data_ready(struct sock *sk) static void qrtr_ns_data_ready(struct sock *sk)
{ {
trace_sk_data_ready(sk);
queue_work(qrtr_ns.workqueue, &qrtr_ns.work); queue_work(qrtr_ns.workqueue, &qrtr_ns.work);
} }
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/in.h> #include <linux/in.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <trace/events/sock.h>
#include "rds.h" #include "rds.h"
#include "tcp.h" #include "tcp.h"
...@@ -234,6 +235,7 @@ void rds_tcp_listen_data_ready(struct sock *sk) ...@@ -234,6 +235,7 @@ void rds_tcp_listen_data_ready(struct sock *sk)
{ {
void (*ready)(struct sock *sk); void (*ready)(struct sock *sk);
trace_sk_data_ready(sk);
rdsdebug("listen data ready sk %p\n", sk); rdsdebug("listen data ready sk %p\n", sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <net/tcp.h> #include <net/tcp.h>
#include <trace/events/sock.h>
#include "rds.h" #include "rds.h"
#include "tcp.h" #include "tcp.h"
...@@ -309,6 +310,7 @@ void rds_tcp_data_ready(struct sock *sk) ...@@ -309,6 +310,7 @@ void rds_tcp_data_ready(struct sock *sk)
struct rds_conn_path *cp; struct rds_conn_path *cp;
struct rds_tcp_connection *tc; struct rds_tcp_connection *tc;
trace_sk_data_ready(sk);
rdsdebug("data ready sk %p\n", sk); rdsdebug("data ready sk %p\n", sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
#include <net/ipv6.h> #include <net/ipv6.h>
#include <net/inet_common.h> #include <net/inet_common.h>
#include <net/busy_poll.h> #include <net/busy_poll.h>
#include <trace/events/sock.h>
#include <linux/socket.h> /* for sa_family_t */ #include <linux/socket.h> /* for sa_family_t */
#include <linux/export.h> #include <linux/export.h>
...@@ -9244,6 +9245,8 @@ void sctp_data_ready(struct sock *sk) ...@@ -9244,6 +9245,8 @@ void sctp_data_ready(struct sock *sk)
{ {
struct socket_wq *wq; struct socket_wq *wq;
trace_sk_data_ready(sk);
rcu_read_lock(); rcu_read_lock();
wq = rcu_dereference(sk->sk_wq); wq = rcu_dereference(sk->sk_wq);
if (skwq_has_sleeper(wq)) if (skwq_has_sleeper(wq))
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/sched/signal.h> #include <linux/sched/signal.h>
#include <net/sock.h> #include <net/sock.h>
#include <trace/events/sock.h>
#include "smc.h" #include "smc.h"
#include "smc_core.h" #include "smc_core.h"
...@@ -31,6 +32,8 @@ static void smc_rx_wake_up(struct sock *sk) ...@@ -31,6 +32,8 @@ static void smc_rx_wake_up(struct sock *sk)
{ {
struct socket_wq *wq; struct socket_wq *wq;
trace_sk_data_ready(sk);
/* derived from sock_def_readable() */ /* derived from sock_def_readable() */
/* called already in smc_listen_work() */ /* called already in smc_listen_work() */
rcu_read_lock(); rcu_read_lock();
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
#include <linux/sunrpc/stats.h> #include <linux/sunrpc/stats.h>
#include <linux/sunrpc/xprt.h> #include <linux/sunrpc/xprt.h>
#include <trace/events/sock.h>
#include <trace/events/sunrpc.h> #include <trace/events/sunrpc.h>
#include "socklib.h" #include "socklib.h"
...@@ -310,6 +311,8 @@ static void svc_data_ready(struct sock *sk) ...@@ -310,6 +311,8 @@ static void svc_data_ready(struct sock *sk)
{ {
struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data; struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
trace_sk_data_ready(sk);
if (svsk) { if (svsk) {
/* Refer to svc_setup_socket() for details. */ /* Refer to svc_setup_socket() for details. */
rmb(); rmb();
...@@ -687,6 +690,8 @@ static void svc_tcp_listen_data_ready(struct sock *sk) ...@@ -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; struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
trace_sk_data_ready(sk);
if (svsk) { if (svsk) {
/* Refer to svc_setup_socket() for details. */ /* Refer to svc_setup_socket() for details. */
rmb(); rmb();
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include <linux/uio.h> #include <linux/uio.h>
#include <linux/sched/mm.h> #include <linux/sched/mm.h>
#include <trace/events/sock.h>
#include <trace/events/sunrpc.h> #include <trace/events/sunrpc.h>
#include "socklib.h" #include "socklib.h"
...@@ -1378,6 +1379,8 @@ static void xs_data_ready(struct sock *sk) ...@@ -1378,6 +1379,8 @@ static void xs_data_ready(struct sock *sk)
{ {
struct rpc_xprt *xprt; struct rpc_xprt *xprt;
trace_sk_data_ready(sk);
xprt = xprt_from_sock(sk); xprt = xprt_from_sock(sk);
if (xprt != NULL) { if (xprt != NULL) {
struct sock_xprt *transport = container_of(xprt, struct sock_xprt *transport = container_of(xprt,
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <linux/rhashtable.h> #include <linux/rhashtable.h>
#include <linux/sched/signal.h> #include <linux/sched/signal.h>
#include <trace/events/sock.h>
#include "core.h" #include "core.h"
#include "name_table.h" #include "name_table.h"
...@@ -2130,6 +2131,8 @@ static void tipc_data_ready(struct sock *sk) ...@@ -2130,6 +2131,8 @@ static void tipc_data_ready(struct sock *sk)
{ {
struct socket_wq *wq; struct socket_wq *wq;
trace_sk_data_ready(sk);
rcu_read_lock(); rcu_read_lock();
wq = rcu_dereference(sk->sk_wq); wq = rcu_dereference(sk->sk_wq);
if (skwq_has_sleeper(wq)) if (skwq_has_sleeper(wq))
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include "bearer.h" #include "bearer.h"
#include <net/sock.h> #include <net/sock.h>
#include <linux/module.h> #include <linux/module.h>
#include <trace/events/sock.h>
/* Number of messages to send before rescheduling */ /* Number of messages to send before rescheduling */
#define MAX_SEND_MSG_COUNT 25 #define MAX_SEND_MSG_COUNT 25
...@@ -439,6 +440,8 @@ static void tipc_conn_data_ready(struct sock *sk) ...@@ -439,6 +440,8 @@ static void tipc_conn_data_ready(struct sock *sk)
{ {
struct tipc_conn *con; struct tipc_conn *con;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
con = sk->sk_user_data; con = sk->sk_user_data;
if (connected(con)) { if (connected(con)) {
...@@ -496,6 +499,8 @@ static void tipc_topsrv_listener_data_ready(struct sock *sk) ...@@ -496,6 +499,8 @@ static void tipc_topsrv_listener_data_ready(struct sock *sk)
{ {
struct tipc_topsrv *srv; struct tipc_topsrv *srv;
trace_sk_data_ready(sk);
read_lock_bh(&sk->sk_callback_lock); read_lock_bh(&sk->sk_callback_lock);
srv = sk->sk_user_data; srv = sk->sk_user_data;
if (srv) if (srv)
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#include <net/strparser.h> #include <net/strparser.h>
#include <net/tls.h> #include <net/tls.h>
#include <trace/events/sock.h>
#include "tls.h" #include "tls.h"
...@@ -2284,6 +2285,8 @@ static void tls_data_ready(struct sock *sk) ...@@ -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 tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
struct sk_psock *psock; struct sk_psock *psock;
trace_sk_data_ready(sk);
tls_strp_data_ready(&ctx->strp); tls_strp_data_ready(&ctx->strp);
psock = sk_psock_get(sk); psock = sk_psock_get(sk);
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <net/espintcp.h> #include <net/espintcp.h>
#include <linux/skmsg.h> #include <linux/skmsg.h>
#include <net/inet_common.h> #include <net/inet_common.h>
#include <trace/events/sock.h>
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
#include <net/ipv6_stubs.h> #include <net/ipv6_stubs.h>
#endif #endif
...@@ -397,6 +398,8 @@ static void espintcp_data_ready(struct sock *sk) ...@@ -397,6 +398,8 @@ static void espintcp_data_ready(struct sock *sk)
{ {
struct espintcp_ctx *ctx = espintcp_getctx(sk); struct espintcp_ctx *ctx = espintcp_getctx(sk);
trace_sk_data_ready(sk);
strp_data_ready(&ctx->strp); strp_data_ready(&ctx->strp);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment