Commit | Line | Data |
---|---|---|
d8355240 YM |
1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* Copyright (c) 2018-2019 Hisilicon Limited. */ | |
3 | ||
4 | /* This must be outside ifdef _HCLGEVF_TRACE_H */ | |
5 | #undef TRACE_SYSTEM | |
6 | #define TRACE_SYSTEM hns3 | |
7 | ||
8 | #if !defined(_HCLGEVF_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) | |
9 | #define _HCLGEVF_TRACE_H_ | |
10 | ||
11 | #include <linux/tracepoint.h> | |
12 | ||
13 | #define VF_GET_MBX_LEN (sizeof(struct hclge_mbx_pf_to_vf_cmd) / sizeof(u32)) | |
14 | #define VF_SEND_MBX_LEN (sizeof(struct hclge_mbx_vf_to_pf_cmd) / sizeof(u32)) | |
15 | ||
16 | TRACE_EVENT(hclge_vf_mbx_get, | |
17 | TP_PROTO( | |
18 | struct hclgevf_dev *hdev, | |
19 | struct hclge_mbx_pf_to_vf_cmd *req), | |
20 | TP_ARGS(hdev, req), | |
21 | ||
22 | TP_STRUCT__entry( | |
23 | __field(u8, vfid) | |
24 | __field(u16, code) | |
25 | __string(pciname, pci_name(hdev->pdev)) | |
3f9952e8 | 26 | __string(devname, hdev->nic.kinfo.netdev->name) |
d8355240 YM |
27 | __array(u32, mbx_data, VF_GET_MBX_LEN) |
28 | ), | |
29 | ||
30 | TP_fast_assign( | |
31 | __entry->vfid = req->dest_vfid; | |
767975e5 | 32 | __entry->code = le16_to_cpu(req->msg.code); |
2c92ca84 SRG |
33 | __assign_str(pciname); |
34 | __assign_str(devname); | |
d8355240 YM |
35 | memcpy(__entry->mbx_data, req, |
36 | sizeof(struct hclge_mbx_pf_to_vf_cmd)); | |
37 | ), | |
38 | ||
39 | TP_printk( | |
40 | "%s %s vfid:%u code:%u data:%s", | |
41 | __get_str(pciname), __get_str(devname), __entry->vfid, | |
42 | __entry->code, | |
43 | __print_array(__entry->mbx_data, VF_GET_MBX_LEN, sizeof(u32)) | |
44 | ) | |
45 | ); | |
46 | ||
47 | TRACE_EVENT(hclge_vf_mbx_send, | |
48 | TP_PROTO( | |
49 | struct hclgevf_dev *hdev, | |
50 | struct hclge_mbx_vf_to_pf_cmd *req), | |
51 | TP_ARGS(hdev, req), | |
52 | ||
53 | TP_STRUCT__entry( | |
54 | __field(u8, vfid) | |
55 | __field(u8, code) | |
56 | __field(u8, subcode) | |
57 | __string(pciname, pci_name(hdev->pdev)) | |
3f9952e8 | 58 | __string(devname, hdev->nic.kinfo.netdev->name) |
d8355240 YM |
59 | __array(u32, mbx_data, VF_SEND_MBX_LEN) |
60 | ), | |
61 | ||
62 | TP_fast_assign( | |
63 | __entry->vfid = req->mbx_src_vfid; | |
64 | __entry->code = req->msg.code; | |
65 | __entry->subcode = req->msg.subcode; | |
2c92ca84 SRG |
66 | __assign_str(pciname); |
67 | __assign_str(devname); | |
d8355240 YM |
68 | memcpy(__entry->mbx_data, req, |
69 | sizeof(struct hclge_mbx_vf_to_pf_cmd)); | |
70 | ), | |
71 | ||
72 | TP_printk( | |
73 | "%s %s vfid:%u code:%u subcode:%u data:%s", | |
74 | __get_str(pciname), __get_str(devname), __entry->vfid, | |
75 | __entry->code, __entry->subcode, | |
76 | __print_array(__entry->mbx_data, VF_SEND_MBX_LEN, sizeof(u32)) | |
77 | ) | |
78 | ); | |
79 | ||
2a1a1a7b HL |
80 | DECLARE_EVENT_CLASS(hclge_vf_cmd_template, |
81 | TP_PROTO(struct hclge_comm_hw *hw, | |
82 | struct hclge_desc *desc, | |
83 | int index, | |
84 | int num), | |
85 | ||
86 | TP_ARGS(hw, desc, index, num), | |
87 | ||
88 | TP_STRUCT__entry(__field(u16, opcode) | |
89 | __field(u16, flag) | |
90 | __field(u16, retval) | |
91 | __field(u16, rsv) | |
92 | __field(int, index) | |
93 | __field(int, num) | |
94 | __string(pciname, pci_name(hw->cmq.csq.pdev)) | |
95 | __array(u32, data, HCLGE_DESC_DATA_LEN)), | |
96 | ||
97 | TP_fast_assign(int i; | |
98 | __entry->opcode = le16_to_cpu(desc->opcode); | |
99 | __entry->flag = le16_to_cpu(desc->flag); | |
100 | __entry->retval = le16_to_cpu(desc->retval); | |
101 | __entry->rsv = le16_to_cpu(desc->rsv); | |
102 | __entry->index = index; | |
103 | __entry->num = num; | |
2c92ca84 | 104 | __assign_str(pciname); |
2a1a1a7b HL |
105 | for (i = 0; i < HCLGE_DESC_DATA_LEN; i++) |
106 | __entry->data[i] = le32_to_cpu(desc->data[i]);), | |
107 | ||
108 | TP_printk("%s opcode:0x%04x %d-%d flag:0x%04x retval:0x%04x rsv:0x%04x data:%s", | |
109 | __get_str(pciname), __entry->opcode, | |
110 | __entry->index, __entry->num, | |
111 | __entry->flag, __entry->retval, __entry->rsv, | |
112 | __print_array(__entry->data, | |
113 | HCLGE_DESC_DATA_LEN, sizeof(u32))) | |
114 | ); | |
115 | ||
116 | DEFINE_EVENT(hclge_vf_cmd_template, hclge_vf_cmd_send, | |
117 | TP_PROTO(struct hclge_comm_hw *hw, | |
118 | struct hclge_desc *desc, | |
119 | int index, | |
120 | int num), | |
121 | TP_ARGS(hw, desc, index, num)); | |
122 | ||
123 | DEFINE_EVENT(hclge_vf_cmd_template, hclge_vf_cmd_get, | |
124 | TP_PROTO(struct hclge_comm_hw *hw, | |
125 | struct hclge_desc *desc, | |
126 | int index, | |
127 | int num), | |
128 | TP_ARGS(hw, desc, index, num)); | |
129 | ||
d8355240 YM |
130 | #endif /* _HCLGEVF_TRACE_H_ */ |
131 | ||
132 | /* This must be outside ifdef _HCLGEVF_TRACE_H */ | |
133 | #undef TRACE_INCLUDE_PATH | |
134 | #define TRACE_INCLUDE_PATH . | |
135 | #undef TRACE_INCLUDE_FILE | |
136 | #define TRACE_INCLUDE_FILE hclgevf_trace | |
137 | #include <trace/define_trace.h> |