1/* 2* Copyright(c) 2015, 2016, 2017 Intel Corporation. 3* 4* This file is provided under a dual BSD/GPLv2 license. When using or 5* redistributing this file, you may do so under either license. 6* 7* GPL LICENSE SUMMARY 8* 9* This program is free software; you can redistribute it and/or modify 10* it under the terms of version 2 of the GNU General Public License as 11* published by the Free Software Foundation. 12* 13* This program is distributed in the hope that it will be useful, but 14* WITHOUT ANY WARRANTY; without even the implied warranty of 15* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16* General Public License for more details. 17* 18* BSD LICENSE 19* 20* Redistribution and use in source and binary forms, with or without 21* modification, are permitted provided that the following conditions 22* are met: 23* 24* - Redistributions of source code must retain the above copyright 25* notice, this list of conditions and the following disclaimer. 26* - Redistributions in binary form must reproduce the above copyright 27* notice, this list of conditions and the following disclaimer in 28* the documentation and/or other materials provided with the 29* distribution. 30* - Neither the name of Intel Corporation nor the names of its 31* contributors may be used to endorse or promote products derived 32* from this software without specific prior written permission. 33* 34* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 35* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 36* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 37* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 38* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 39* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 40* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 41* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 42* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 43* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 44* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 45* 46*/ 47#if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ) 48#define __HFI1_TRACE_RC_H 49 50#include <linux/tracepoint.h> 51#include <linux/trace_seq.h> 52 53#include "hfi.h" 54 55#undef TRACE_SYSTEM 56#define TRACE_SYSTEM hfi1_rc 57 58DECLARE_EVENT_CLASS(hfi1_rc_template, 59 TP_PROTO(struct rvt_qp *qp, u32 psn), 60 TP_ARGS(qp, psn), 61 TP_STRUCT__entry( 62 DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 63 __field(u32, qpn) 64 __field(u32, s_flags) 65 __field(u32, psn) 66 __field(u32, s_psn) 67 __field(u32, s_next_psn) 68 __field(u32, s_sending_psn) 69 __field(u32, s_sending_hpsn) 70 __field(u32, r_psn) 71 ), 72 TP_fast_assign( 73 DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 74 __entry->qpn = qp->ibqp.qp_num; 75 __entry->s_flags = qp->s_flags; 76 __entry->psn = psn; 77 __entry->s_psn = qp->s_psn; 78 __entry->s_next_psn = qp->s_next_psn; 79 __entry->s_sending_psn = qp->s_sending_psn; 80 __entry->s_sending_hpsn = qp->s_sending_hpsn; 81 __entry->r_psn = qp->r_psn; 82 ), 83 TP_printk( 84 "[%s] qpn 0x%x s_flags 0x%x psn 0x%x s_psn 0x%x s_next_psn 0x%x s_sending_psn 0x%x sending_hpsn 0x%x r_psn 0x%x", 85 __get_str(dev), 86 __entry->qpn, 87 __entry->s_flags, 88 __entry->psn, 89 __entry->s_psn, 90 __entry->s_next_psn, 91 __entry->s_sending_psn, 92 __entry->s_sending_hpsn, 93 __entry->r_psn 94 ) 95); 96 97DEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete, 98 TP_PROTO(struct rvt_qp *qp, u32 psn), 99 TP_ARGS(qp, psn) 100); 101 102DEFINE_EVENT(hfi1_rc_template, hfi1_ack, 103 TP_PROTO(struct rvt_qp *qp, u32 psn), 104 TP_ARGS(qp, psn) 105); 106 107DEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error, 108 TP_PROTO(struct rvt_qp *qp, u32 psn), 109 TP_ARGS(qp, psn) 110); 111 112#endif /* __HFI1_TRACE_RC_H */ 113 114#undef TRACE_INCLUDE_PATH 115#undef TRACE_INCLUDE_FILE 116#define TRACE_INCLUDE_PATH . 117#define TRACE_INCLUDE_FILE trace_rc 118#include <trace/define_trace.h> 119