Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 
0003 #if !defined(_NETVSC_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0004 #define _NETVSC_TRACE_H
0005 
0006 #include <linux/tracepoint.h>
0007 
0008 #undef TRACE_SYSTEM
0009 #define TRACE_SYSTEM netvsc
0010 #define TRACE_INCLUDE_FILE netvsc_trace
0011 
0012 TRACE_DEFINE_ENUM(RNDIS_MSG_PACKET);
0013 TRACE_DEFINE_ENUM(RNDIS_MSG_INDICATE);
0014 TRACE_DEFINE_ENUM(RNDIS_MSG_INIT);
0015 TRACE_DEFINE_ENUM(RNDIS_MSG_INIT_C);
0016 TRACE_DEFINE_ENUM(RNDIS_MSG_HALT);
0017 TRACE_DEFINE_ENUM(RNDIS_MSG_QUERY);
0018 TRACE_DEFINE_ENUM(RNDIS_MSG_QUERY_C);
0019 TRACE_DEFINE_ENUM(RNDIS_MSG_SET);
0020 TRACE_DEFINE_ENUM(RNDIS_MSG_SET_C);
0021 TRACE_DEFINE_ENUM(RNDIS_MSG_RESET);
0022 TRACE_DEFINE_ENUM(RNDIS_MSG_RESET_C);
0023 TRACE_DEFINE_ENUM(RNDIS_MSG_KEEPALIVE);
0024 TRACE_DEFINE_ENUM(RNDIS_MSG_KEEPALIVE_C);
0025 
0026 #define show_rndis_type(type)                   \
0027     __print_symbolic(type,                  \
0028          { RNDIS_MSG_PACKET,      "PACKET" },       \
0029          { RNDIS_MSG_INDICATE,    "INDICATE", },    \
0030          { RNDIS_MSG_INIT,    "INIT", },        \
0031          { RNDIS_MSG_INIT_C,      "INIT_C", },      \
0032          { RNDIS_MSG_HALT,    "HALT", },        \
0033          { RNDIS_MSG_QUERY,   "QUERY", },       \
0034          { RNDIS_MSG_QUERY_C,     "QUERY_C", },     \
0035          { RNDIS_MSG_SET,     "SET", },     \
0036          { RNDIS_MSG_SET_C,   "SET_C", },       \
0037          { RNDIS_MSG_RESET,   "RESET", },       \
0038          { RNDIS_MSG_RESET_C,     "RESET_C", },     \
0039          { RNDIS_MSG_KEEPALIVE,   "KEEPALIVE", },   \
0040          { RNDIS_MSG_KEEPALIVE_C, "KEEPALIVE_C", })
0041 
0042 DECLARE_EVENT_CLASS(rndis_msg_class,
0043        TP_PROTO(const struct net_device *ndev, u16 q,
0044         const struct rndis_message *msg),
0045        TP_ARGS(ndev, q, msg),
0046        TP_STRUCT__entry(
0047            __string( name, ndev->name  )
0048            __field(  u16,  queue       )
0049            __field(  u32,  req_id      )
0050            __field(  u32,  msg_type    )
0051            __field(  u32,  msg_len     )
0052        ),
0053        TP_fast_assign(
0054            __assign_str(name, ndev->name);
0055            __entry->queue    = q;
0056            __entry->req_id   = msg->msg.init_req.req_id;
0057            __entry->msg_type = msg->ndis_msg_type;
0058            __entry->msg_len  = msg->msg_len;
0059        ),
0060        TP_printk("dev=%s q=%u req=%#x type=%s msg_len=%u",
0061          __get_str(name), __entry->queue, __entry->req_id,
0062          show_rndis_type(__entry->msg_type), __entry->msg_len)
0063 );
0064 
0065 DEFINE_EVENT(rndis_msg_class, rndis_send,
0066        TP_PROTO(const struct net_device *ndev, u16 q,
0067         const struct rndis_message *msg),
0068        TP_ARGS(ndev, q, msg)
0069 );
0070 
0071 DEFINE_EVENT(rndis_msg_class, rndis_recv,
0072        TP_PROTO(const struct net_device *ndev, u16 q,
0073         const struct rndis_message *msg),
0074        TP_ARGS(ndev, q, msg)
0075 );
0076 
0077 TRACE_DEFINE_ENUM(NVSP_MSG_TYPE_INIT);
0078 TRACE_DEFINE_ENUM(NVSP_MSG_TYPE_INIT_COMPLETE);
0079 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_NDIS_VER);
0080 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RECV_BUF);
0081 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE);
0082 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_REVOKE_RECV_BUF);
0083 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_SEND_BUF);
0084 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE);
0085 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_REVOKE_SEND_BUF);
0086 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RNDIS_PKT);
0087 TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE);
0088 TRACE_DEFINE_ENUM(NVSP_MSG2_TYPE_SEND_NDIS_CONFIG);
0089 
0090 TRACE_DEFINE_ENUM(NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION);
0091 TRACE_DEFINE_ENUM(NVSP_MSG4_TYPE_SWITCH_DATA_PATH);
0092 
0093 TRACE_DEFINE_ENUM(NVSP_MSG5_TYPE_SUBCHANNEL);
0094 TRACE_DEFINE_ENUM(NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE);
0095 
0096 #define show_nvsp_type(type)                                \
0097     __print_symbolic(type,                              \
0098           { NVSP_MSG_TYPE_INIT,            "INIT" },            \
0099           { NVSP_MSG_TYPE_INIT_COMPLETE,       "INIT_COMPLETE" },       \
0100           { NVSP_MSG1_TYPE_SEND_NDIS_VER,      "SEND_NDIS_VER" },       \
0101           { NVSP_MSG1_TYPE_SEND_RECV_BUF,      "SEND_RECV_BUF" },       \
0102           { NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE, "SEND_RECV_BUF_COMPLETE" },  \
0103           { NVSP_MSG1_TYPE_REVOKE_RECV_BUF,    "REVOKE_RECV_BUF" },     \
0104           { NVSP_MSG1_TYPE_SEND_SEND_BUF,      "SEND_SEND_BUF" },       \
0105           { NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE, "SEND_SEND_BUF_COMPLETE" },  \
0106           { NVSP_MSG1_TYPE_REVOKE_SEND_BUF,    "REVOKE_SEND_BUF" },     \
0107           { NVSP_MSG1_TYPE_SEND_RNDIS_PKT,     "SEND_RNDIS_PKT" },      \
0108           { NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE, "SEND_RNDIS_PKT_COMPLETE" },\
0109           { NVSP_MSG2_TYPE_SEND_NDIS_CONFIG,       "SEND_NDIS_CONFIG" },    \
0110           { NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION,    "SEND_VF_ASSOCIATION" }, \
0111           { NVSP_MSG4_TYPE_SWITCH_DATA_PATH,       "SWITCH_DATA_PATH" },    \
0112           { NVSP_MSG5_TYPE_SUBCHANNEL,          "SUBCHANNEL" },     \
0113           { NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE,  "SEND_INDIRECTION_TABLE" })
0114 
0115 TRACE_EVENT(nvsp_send,
0116     TP_PROTO(const struct net_device *ndev,
0117          const struct nvsp_message *msg),
0118     TP_ARGS(ndev, msg),
0119     TP_STRUCT__entry(
0120         __string( name, ndev->name  )
0121         __field(  u32,  msg_type    )
0122     ),
0123     TP_fast_assign(
0124         __assign_str(name, ndev->name);
0125         __entry->msg_type = msg->hdr.msg_type;
0126     ),
0127     TP_printk("dev=%s type=%s",
0128           __get_str(name),
0129           show_nvsp_type(__entry->msg_type))
0130 );
0131 
0132 TRACE_EVENT(nvsp_send_pkt,
0133     TP_PROTO(const struct net_device *ndev,
0134          const struct vmbus_channel *chan,
0135          const struct nvsp_1_message_send_rndis_packet *rpkt),
0136     TP_ARGS(ndev, chan, rpkt),
0137     TP_STRUCT__entry(
0138         __string( name, ndev->name    )
0139         __field(  u16,  qid       )
0140         __field(  u32,  channel_type  )
0141         __field(  u32,  section_index )
0142         __field(  u32,  section_size  )
0143     ),
0144     TP_fast_assign(
0145         __assign_str(name, ndev->name);
0146         __entry->qid = chan->offermsg.offer.sub_channel_index;
0147         __entry->channel_type = rpkt->channel_type;
0148         __entry->section_index = rpkt->send_buf_section_index;
0149         __entry->section_size = rpkt->send_buf_section_size;
0150     ),
0151     TP_printk("dev=%s qid=%u type=%s section=%u size=%d",
0152           __get_str(name), __entry->qid,
0153           __entry->channel_type ? "CONTROL" : "DATA",
0154           __entry->section_index, __entry->section_size)
0155 );
0156 
0157 TRACE_EVENT(nvsp_recv,
0158     TP_PROTO(const struct net_device *ndev,
0159          const struct vmbus_channel *chan,
0160          const struct nvsp_message *msg),
0161     TP_ARGS(ndev, chan, msg),
0162     TP_STRUCT__entry(
0163         __string( name, ndev->name  )
0164         __field(  u16,  qid     )
0165         __field(  u32,  msg_type    )
0166     ),
0167     TP_fast_assign(
0168         __assign_str(name, ndev->name);
0169         __entry->qid = chan->offermsg.offer.sub_channel_index;
0170         __entry->msg_type = msg->hdr.msg_type;
0171     ),
0172     TP_printk("dev=%s qid=%u type=%s",
0173           __get_str(name), __entry->qid,
0174           show_nvsp_type(__entry->msg_type))
0175 );
0176 
0177 #endif /* _NETVSC_TRACE_H */
0178 
0179 /* This part must be outside protection */
0180 #undef TRACE_INCLUDE_PATH
0181 #define TRACE_INCLUDE_PATH ../../drivers/net/hyperv
0182 #include <trace/define_trace.h>