^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #if !defined(_NETVSC_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #define _NETVSC_TRACE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define TRACE_SYSTEM netvsc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define TRACE_INCLUDE_FILE netvsc_trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) TRACE_DEFINE_ENUM(RNDIS_MSG_PACKET);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) TRACE_DEFINE_ENUM(RNDIS_MSG_INDICATE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) TRACE_DEFINE_ENUM(RNDIS_MSG_INIT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) TRACE_DEFINE_ENUM(RNDIS_MSG_INIT_C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) TRACE_DEFINE_ENUM(RNDIS_MSG_HALT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TRACE_DEFINE_ENUM(RNDIS_MSG_QUERY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) TRACE_DEFINE_ENUM(RNDIS_MSG_QUERY_C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) TRACE_DEFINE_ENUM(RNDIS_MSG_SET);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) TRACE_DEFINE_ENUM(RNDIS_MSG_SET_C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) TRACE_DEFINE_ENUM(RNDIS_MSG_RESET);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) TRACE_DEFINE_ENUM(RNDIS_MSG_RESET_C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) TRACE_DEFINE_ENUM(RNDIS_MSG_KEEPALIVE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) TRACE_DEFINE_ENUM(RNDIS_MSG_KEEPALIVE_C);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define show_rndis_type(type) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) __print_symbolic(type, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) { RNDIS_MSG_PACKET, "PACKET" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) { RNDIS_MSG_INDICATE, "INDICATE", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) { RNDIS_MSG_INIT, "INIT", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) { RNDIS_MSG_INIT_C, "INIT_C", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) { RNDIS_MSG_HALT, "HALT", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) { RNDIS_MSG_QUERY, "QUERY", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) { RNDIS_MSG_QUERY_C, "QUERY_C", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) { RNDIS_MSG_SET, "SET", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) { RNDIS_MSG_SET_C, "SET_C", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) { RNDIS_MSG_RESET, "RESET", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) { RNDIS_MSG_RESET_C, "RESET_C", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) { RNDIS_MSG_KEEPALIVE, "KEEPALIVE", }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) { RNDIS_MSG_KEEPALIVE_C, "KEEPALIVE_C", })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) DECLARE_EVENT_CLASS(rndis_msg_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) TP_PROTO(const struct net_device *ndev, u16 q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) const struct rndis_message *msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) TP_ARGS(ndev, q, msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) __string( name, ndev->name )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) __field( u16, queue )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) __field( u32, req_id )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) __field( u32, msg_type )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) __field( u32, msg_len )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) __assign_str(name, ndev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) __entry->queue = q;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) __entry->req_id = msg->msg.init_req.req_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) __entry->msg_type = msg->ndis_msg_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) __entry->msg_len = msg->msg_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) TP_printk("dev=%s q=%u req=%#x type=%s msg_len=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) __get_str(name), __entry->queue, __entry->req_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) show_rndis_type(__entry->msg_type), __entry->msg_len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) DEFINE_EVENT(rndis_msg_class, rndis_send,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) TP_PROTO(const struct net_device *ndev, u16 q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) const struct rndis_message *msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) TP_ARGS(ndev, q, msg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) DEFINE_EVENT(rndis_msg_class, rndis_recv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) TP_PROTO(const struct net_device *ndev, u16 q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) const struct rndis_message *msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) TP_ARGS(ndev, q, msg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) TRACE_DEFINE_ENUM(NVSP_MSG_TYPE_INIT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) TRACE_DEFINE_ENUM(NVSP_MSG_TYPE_INIT_COMPLETE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_NDIS_VER);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RECV_BUF);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_REVOKE_RECV_BUF);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_SEND_BUF);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_REVOKE_SEND_BUF);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RNDIS_PKT);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) TRACE_DEFINE_ENUM(NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) TRACE_DEFINE_ENUM(NVSP_MSG2_TYPE_SEND_NDIS_CONFIG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) TRACE_DEFINE_ENUM(NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) TRACE_DEFINE_ENUM(NVSP_MSG4_TYPE_SWITCH_DATA_PATH);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) TRACE_DEFINE_ENUM(NVSP_MSG5_TYPE_SUBCHANNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) TRACE_DEFINE_ENUM(NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define show_nvsp_type(type) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) __print_symbolic(type, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) { NVSP_MSG_TYPE_INIT, "INIT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) { NVSP_MSG_TYPE_INIT_COMPLETE, "INIT_COMPLETE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) { NVSP_MSG1_TYPE_SEND_NDIS_VER, "SEND_NDIS_VER" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) { NVSP_MSG1_TYPE_SEND_RECV_BUF, "SEND_RECV_BUF" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) { NVSP_MSG1_TYPE_SEND_RECV_BUF_COMPLETE, "SEND_RECV_BUF_COMPLETE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) { NVSP_MSG1_TYPE_REVOKE_RECV_BUF, "REVOKE_RECV_BUF" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) { NVSP_MSG1_TYPE_SEND_SEND_BUF, "SEND_SEND_BUF" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) { NVSP_MSG1_TYPE_SEND_SEND_BUF_COMPLETE, "SEND_SEND_BUF_COMPLETE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) { NVSP_MSG1_TYPE_REVOKE_SEND_BUF, "REVOKE_SEND_BUF" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) { NVSP_MSG1_TYPE_SEND_RNDIS_PKT, "SEND_RNDIS_PKT" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) { NVSP_MSG1_TYPE_SEND_RNDIS_PKT_COMPLETE, "SEND_RNDIS_PKT_COMPLETE" },\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) { NVSP_MSG2_TYPE_SEND_NDIS_CONFIG, "SEND_NDIS_CONFIG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) { NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION, "SEND_VF_ASSOCIATION" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) { NVSP_MSG4_TYPE_SWITCH_DATA_PATH, "SWITCH_DATA_PATH" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) { NVSP_MSG5_TYPE_SUBCHANNEL, "SUBCHANNEL" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) { NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE, "SEND_INDIRECTION_TABLE" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) TRACE_EVENT(nvsp_send,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) TP_PROTO(const struct net_device *ndev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) const struct nvsp_message *msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) TP_ARGS(ndev, msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) __string( name, ndev->name )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) __field( u32, msg_type )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) __assign_str(name, ndev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) __entry->msg_type = msg->hdr.msg_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) TP_printk("dev=%s type=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) __get_str(name),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) show_nvsp_type(__entry->msg_type))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) TRACE_EVENT(nvsp_send_pkt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) TP_PROTO(const struct net_device *ndev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) const struct vmbus_channel *chan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) const struct nvsp_1_message_send_rndis_packet *rpkt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) TP_ARGS(ndev, chan, rpkt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) __string( name, ndev->name )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) __field( u16, qid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) __field( u32, channel_type )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) __field( u32, section_index )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) __field( u32, section_size )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) __assign_str(name, ndev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) __entry->qid = chan->offermsg.offer.sub_channel_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) __entry->channel_type = rpkt->channel_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) __entry->section_index = rpkt->send_buf_section_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) __entry->section_size = rpkt->send_buf_section_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) TP_printk("dev=%s qid=%u type=%s section=%u size=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) __get_str(name), __entry->qid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) __entry->channel_type ? "CONTROL" : "DATA",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) __entry->section_index, __entry->section_size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) TRACE_EVENT(nvsp_recv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) TP_PROTO(const struct net_device *ndev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) const struct vmbus_channel *chan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) const struct nvsp_message *msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) TP_ARGS(ndev, chan, msg),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) __string( name, ndev->name )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) __field( u16, qid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) __field( u32, msg_type )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) __assign_str(name, ndev->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) __entry->qid = chan->offermsg.offer.sub_channel_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) __entry->msg_type = msg->hdr.msg_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) TP_printk("dev=%s qid=%u type=%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) __get_str(name), __entry->qid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) show_nvsp_type(__entry->msg_type))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #endif /* _NETVSC_TRACE_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #undef TRACE_INCLUDE_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define TRACE_INCLUDE_PATH ../../drivers/net/hyperv
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #include <trace/define_trace.h>