138 lines · c
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_SYSTEM6#define TRACE_SYSTEM hns37 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 16TRACE_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))26 __string(devname, hdev->nic.kinfo.netdev->name)27 __array(u32, mbx_data, VF_GET_MBX_LEN)28 ),29 30 TP_fast_assign(31 __entry->vfid = req->dest_vfid;32 __entry->code = le16_to_cpu(req->msg.code);33 __assign_str(pciname);34 __assign_str(devname);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 47TRACE_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))58 __string(devname, hdev->nic.kinfo.netdev->name)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;66 __assign_str(pciname);67 __assign_str(devname);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 80DECLARE_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;104 __assign_str(pciname);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 116DEFINE_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 123DEFINE_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 130#endif /* _HCLGEVF_TRACE_H_ */131 132/* This must be outside ifdef _HCLGEVF_TRACE_H */133#undef TRACE_INCLUDE_PATH134#define TRACE_INCLUDE_PATH .135#undef TRACE_INCLUDE_FILE136#define TRACE_INCLUDE_FILE hclgevf_trace137#include <trace/define_trace.h>138