1d5c65159SKalle Valo /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2d5c65159SKalle Valo /* 3d5c65159SKalle Valo * Copyright (c) 2019 The Linux Foundation. All rights reserved. 4*586c7fb1SJeff Johnson * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 5d5c65159SKalle Valo */ 6d5c65159SKalle Valo 7d5c65159SKalle Valo #if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 8d5c65159SKalle Valo 9d5c65159SKalle Valo #include <linux/tracepoint.h> 10d5c65159SKalle Valo #include "core.h" 11d5c65159SKalle Valo 12d5c65159SKalle Valo #define _TRACE_H_ 13d5c65159SKalle Valo 14d5c65159SKalle Valo /* create empty functions when tracing is disabled */ 15d5c65159SKalle Valo #if !defined(CONFIG_ATH11K_TRACING) 16d5c65159SKalle Valo #undef TRACE_EVENT 17d5c65159SKalle Valo #define TRACE_EVENT(name, proto, ...) \ 18fb12305aSVenkateswara Naralasetty static inline void trace_ ## name(proto) {} \ 19fb12305aSVenkateswara Naralasetty static inline bool trace_##name##_enabled(void) \ 20fb12305aSVenkateswara Naralasetty { \ 21fb12305aSVenkateswara Naralasetty return false; \ 22fb12305aSVenkateswara Naralasetty } 23fb12305aSVenkateswara Naralasetty 24fb12305aSVenkateswara Naralasetty #undef DECLARE_EVENT_CLASS 25fb12305aSVenkateswara Naralasetty #define DECLARE_EVENT_CLASS(...) 26fb12305aSVenkateswara Naralasetty #undef DEFINE_EVENT 27fb12305aSVenkateswara Naralasetty #define DEFINE_EVENT(evt_class, name, proto, ...) \ 28d5c65159SKalle Valo static inline void trace_ ## name(proto) {} 29d5c65159SKalle Valo #endif /* !CONFIG_ATH11K_TRACING || __CHECKER__ */ 30d5c65159SKalle Valo 31e8da3986SAnilkumar Kolli #undef TRACE_SYSTEM 32e8da3986SAnilkumar Kolli #define TRACE_SYSTEM ath11k 33e8da3986SAnilkumar Kolli 34fb12305aSVenkateswara Naralasetty #define ATH11K_MSG_MAX 400 35fb12305aSVenkateswara Naralasetty 36d5c65159SKalle Valo TRACE_EVENT(ath11k_htt_pktlog, 3721c1b063SMaharaja Kennadyrajan TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len, 3821c1b063SMaharaja Kennadyrajan u32 pktlog_checksum), 39d5c65159SKalle Valo 4021c1b063SMaharaja Kennadyrajan TP_ARGS(ar, buf, buf_len, pktlog_checksum), 41d5c65159SKalle Valo 42d5c65159SKalle Valo TP_STRUCT__entry( 43d5c65159SKalle Valo __string(device, dev_name(ar->ab->dev)) 44d5c65159SKalle Valo __string(driver, dev_driver_string(ar->ab->dev)) 45d5c65159SKalle Valo __field(u16, buf_len) 4621c1b063SMaharaja Kennadyrajan __field(u32, pktlog_checksum) 47d5c65159SKalle Valo __dynamic_array(u8, pktlog, buf_len) 48d5c65159SKalle Valo ), 49d5c65159SKalle Valo 50d5c65159SKalle Valo TP_fast_assign( 51d5c65159SKalle Valo __assign_str(device, dev_name(ar->ab->dev)); 52d5c65159SKalle Valo __assign_str(driver, dev_driver_string(ar->ab->dev)); 53d5c65159SKalle Valo __entry->buf_len = buf_len; 5421c1b063SMaharaja Kennadyrajan __entry->pktlog_checksum = pktlog_checksum; 55d5c65159SKalle Valo memcpy(__get_dynamic_array(pktlog), buf, buf_len); 56d5c65159SKalle Valo ), 57d5c65159SKalle Valo 58d5c65159SKalle Valo TP_printk( 59bb2d2dfdSTom Rix "%s %s size %u pktlog_checksum %d", 60d5c65159SKalle Valo __get_str(driver), 61d5c65159SKalle Valo __get_str(device), 6221c1b063SMaharaja Kennadyrajan __entry->buf_len, 6321c1b063SMaharaja Kennadyrajan __entry->pktlog_checksum 64d5c65159SKalle Valo ) 65d5c65159SKalle Valo ); 66d5c65159SKalle Valo 67d5c65159SKalle Valo TRACE_EVENT(ath11k_htt_ppdu_stats, 68d5c65159SKalle Valo TP_PROTO(struct ath11k *ar, const void *data, size_t len), 69d5c65159SKalle Valo 70d5c65159SKalle Valo TP_ARGS(ar, data, len), 71d5c65159SKalle Valo 72d5c65159SKalle Valo TP_STRUCT__entry( 73d5c65159SKalle Valo __string(device, dev_name(ar->ab->dev)) 74d5c65159SKalle Valo __string(driver, dev_driver_string(ar->ab->dev)) 75d5c65159SKalle Valo __field(u16, len) 76d5c65159SKalle Valo __dynamic_array(u8, ppdu, len) 77d5c65159SKalle Valo ), 78d5c65159SKalle Valo 79d5c65159SKalle Valo TP_fast_assign( 80d5c65159SKalle Valo __assign_str(device, dev_name(ar->ab->dev)); 81d5c65159SKalle Valo __assign_str(driver, dev_driver_string(ar->ab->dev)); 82d5c65159SKalle Valo __entry->len = len; 83d5c65159SKalle Valo memcpy(__get_dynamic_array(ppdu), data, len); 84d5c65159SKalle Valo ), 85d5c65159SKalle Valo 86d5c65159SKalle Valo TP_printk( 87d5c65159SKalle Valo "%s %s ppdu len %d", 88d5c65159SKalle Valo __get_str(driver), 89d5c65159SKalle Valo __get_str(device), 90d5c65159SKalle Valo __entry->len 91d5c65159SKalle Valo ) 92d5c65159SKalle Valo ); 93d5c65159SKalle Valo 94d5c65159SKalle Valo TRACE_EVENT(ath11k_htt_rxdesc, 95ab18e3bcSAnilkumar Kolli TP_PROTO(struct ath11k *ar, const void *data, size_t log_type, size_t len), 96d5c65159SKalle Valo 97ab18e3bcSAnilkumar Kolli TP_ARGS(ar, data, log_type, len), 98d5c65159SKalle Valo 99d5c65159SKalle Valo TP_STRUCT__entry( 100d5c65159SKalle Valo __string(device, dev_name(ar->ab->dev)) 101d5c65159SKalle Valo __string(driver, dev_driver_string(ar->ab->dev)) 102d5c65159SKalle Valo __field(u16, len) 103ab18e3bcSAnilkumar Kolli __field(u16, log_type) 104d5c65159SKalle Valo __dynamic_array(u8, rxdesc, len) 105d5c65159SKalle Valo ), 106d5c65159SKalle Valo 107d5c65159SKalle Valo TP_fast_assign( 108d5c65159SKalle Valo __assign_str(device, dev_name(ar->ab->dev)); 109d5c65159SKalle Valo __assign_str(driver, dev_driver_string(ar->ab->dev)); 110d5c65159SKalle Valo __entry->len = len; 111ab18e3bcSAnilkumar Kolli __entry->log_type = log_type; 112d5c65159SKalle Valo memcpy(__get_dynamic_array(rxdesc), data, len); 113d5c65159SKalle Valo ), 114d5c65159SKalle Valo 115d5c65159SKalle Valo TP_printk( 116ab18e3bcSAnilkumar Kolli "%s %s rxdesc len %d type %d", 117d5c65159SKalle Valo __get_str(driver), 118d5c65159SKalle Valo __get_str(device), 119ab18e3bcSAnilkumar Kolli __entry->len, 120ab18e3bcSAnilkumar Kolli __entry->log_type 121d5c65159SKalle Valo ) 122d5c65159SKalle Valo ); 123d5c65159SKalle Valo 124fb12305aSVenkateswara Naralasetty DECLARE_EVENT_CLASS(ath11k_log_event, 125fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, struct va_format *vaf), 126fb12305aSVenkateswara Naralasetty TP_ARGS(ab, vaf), 127fb12305aSVenkateswara Naralasetty TP_STRUCT__entry( 128fb12305aSVenkateswara Naralasetty __string(device, dev_name(ab->dev)) 129fb12305aSVenkateswara Naralasetty __string(driver, dev_driver_string(ab->dev)) 130c01406f8SSteven Rostedt (Google) __vstring(msg, vaf->fmt, vaf->va) 131fb12305aSVenkateswara Naralasetty ), 132fb12305aSVenkateswara Naralasetty TP_fast_assign( 133fb12305aSVenkateswara Naralasetty __assign_str(device, dev_name(ab->dev)); 134fb12305aSVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ab->dev)); 135c01406f8SSteven Rostedt (Google) __assign_vstr(msg, vaf->fmt, vaf->va); 136fb12305aSVenkateswara Naralasetty ), 137fb12305aSVenkateswara Naralasetty TP_printk( 138fb12305aSVenkateswara Naralasetty "%s %s %s", 139fb12305aSVenkateswara Naralasetty __get_str(driver), 140fb12305aSVenkateswara Naralasetty __get_str(device), 141fb12305aSVenkateswara Naralasetty __get_str(msg) 142fb12305aSVenkateswara Naralasetty ) 143fb12305aSVenkateswara Naralasetty ); 144fb12305aSVenkateswara Naralasetty 145fb12305aSVenkateswara Naralasetty DEFINE_EVENT(ath11k_log_event, ath11k_log_err, 146fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, struct va_format *vaf), 147fb12305aSVenkateswara Naralasetty TP_ARGS(ab, vaf) 148fb12305aSVenkateswara Naralasetty ); 149fb12305aSVenkateswara Naralasetty 150fb12305aSVenkateswara Naralasetty DEFINE_EVENT(ath11k_log_event, ath11k_log_warn, 151fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, struct va_format *vaf), 152fb12305aSVenkateswara Naralasetty TP_ARGS(ab, vaf) 153fb12305aSVenkateswara Naralasetty ); 154fb12305aSVenkateswara Naralasetty 155fb12305aSVenkateswara Naralasetty DEFINE_EVENT(ath11k_log_event, ath11k_log_info, 156fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, struct va_format *vaf), 157fb12305aSVenkateswara Naralasetty TP_ARGS(ab, vaf) 158fb12305aSVenkateswara Naralasetty ); 159fb12305aSVenkateswara Naralasetty 160fb12305aSVenkateswara Naralasetty TRACE_EVENT(ath11k_wmi_cmd, 161fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, int id, const void *buf, size_t buf_len), 162fb12305aSVenkateswara Naralasetty 163fb12305aSVenkateswara Naralasetty TP_ARGS(ab, id, buf, buf_len), 164fb12305aSVenkateswara Naralasetty 165fb12305aSVenkateswara Naralasetty TP_STRUCT__entry( 166fb12305aSVenkateswara Naralasetty __string(device, dev_name(ab->dev)) 167fb12305aSVenkateswara Naralasetty __string(driver, dev_driver_string(ab->dev)) 168fb12305aSVenkateswara Naralasetty __field(unsigned int, id) 169fb12305aSVenkateswara Naralasetty __field(size_t, buf_len) 170fb12305aSVenkateswara Naralasetty __dynamic_array(u8, buf, buf_len) 171fb12305aSVenkateswara Naralasetty ), 172fb12305aSVenkateswara Naralasetty 173fb12305aSVenkateswara Naralasetty TP_fast_assign( 174fb12305aSVenkateswara Naralasetty __assign_str(device, dev_name(ab->dev)); 175fb12305aSVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ab->dev)); 176fb12305aSVenkateswara Naralasetty __entry->id = id; 177fb12305aSVenkateswara Naralasetty __entry->buf_len = buf_len; 178fb12305aSVenkateswara Naralasetty memcpy(__get_dynamic_array(buf), buf, buf_len); 179fb12305aSVenkateswara Naralasetty ), 180fb12305aSVenkateswara Naralasetty 181fb12305aSVenkateswara Naralasetty TP_printk( 182fb12305aSVenkateswara Naralasetty "%s %s id %d len %zu", 183fb12305aSVenkateswara Naralasetty __get_str(driver), 184fb12305aSVenkateswara Naralasetty __get_str(device), 185fb12305aSVenkateswara Naralasetty __entry->id, 186fb12305aSVenkateswara Naralasetty __entry->buf_len 187fb12305aSVenkateswara Naralasetty ) 188fb12305aSVenkateswara Naralasetty ); 189fb12305aSVenkateswara Naralasetty 190fb12305aSVenkateswara Naralasetty TRACE_EVENT(ath11k_wmi_event, 191fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, int id, const void *buf, size_t buf_len), 192fb12305aSVenkateswara Naralasetty 193fb12305aSVenkateswara Naralasetty TP_ARGS(ab, id, buf, buf_len), 194fb12305aSVenkateswara Naralasetty 195fb12305aSVenkateswara Naralasetty TP_STRUCT__entry( 196fb12305aSVenkateswara Naralasetty __string(device, dev_name(ab->dev)) 197fb12305aSVenkateswara Naralasetty __string(driver, dev_driver_string(ab->dev)) 198fb12305aSVenkateswara Naralasetty __field(unsigned int, id) 199fb12305aSVenkateswara Naralasetty __field(size_t, buf_len) 200fb12305aSVenkateswara Naralasetty __dynamic_array(u8, buf, buf_len) 201fb12305aSVenkateswara Naralasetty ), 202fb12305aSVenkateswara Naralasetty 203fb12305aSVenkateswara Naralasetty TP_fast_assign( 204fb12305aSVenkateswara Naralasetty __assign_str(device, dev_name(ab->dev)); 205fb12305aSVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ab->dev)); 206fb12305aSVenkateswara Naralasetty __entry->id = id; 207fb12305aSVenkateswara Naralasetty __entry->buf_len = buf_len; 208fb12305aSVenkateswara Naralasetty memcpy(__get_dynamic_array(buf), buf, buf_len); 209fb12305aSVenkateswara Naralasetty ), 210fb12305aSVenkateswara Naralasetty 211fb12305aSVenkateswara Naralasetty TP_printk( 212fb12305aSVenkateswara Naralasetty "%s %s id %d len %zu", 213fb12305aSVenkateswara Naralasetty __get_str(driver), 214fb12305aSVenkateswara Naralasetty __get_str(device), 215fb12305aSVenkateswara Naralasetty __entry->id, 216fb12305aSVenkateswara Naralasetty __entry->buf_len 217fb12305aSVenkateswara Naralasetty ) 218fb12305aSVenkateswara Naralasetty ); 219fb12305aSVenkateswara Naralasetty 220fb12305aSVenkateswara Naralasetty TRACE_EVENT(ath11k_log_dbg, 221fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, unsigned int level, struct va_format *vaf), 222fb12305aSVenkateswara Naralasetty 223fb12305aSVenkateswara Naralasetty TP_ARGS(ab, level, vaf), 224fb12305aSVenkateswara Naralasetty 225fb12305aSVenkateswara Naralasetty TP_STRUCT__entry( 226fb12305aSVenkateswara Naralasetty __string(device, dev_name(ab->dev)) 227fb12305aSVenkateswara Naralasetty __string(driver, dev_driver_string(ab->dev)) 228fb12305aSVenkateswara Naralasetty __field(unsigned int, level) 229fb12305aSVenkateswara Naralasetty __dynamic_array(char, msg, ATH11K_MSG_MAX) 230fb12305aSVenkateswara Naralasetty ), 231fb12305aSVenkateswara Naralasetty 232fb12305aSVenkateswara Naralasetty TP_fast_assign( 233fb12305aSVenkateswara Naralasetty __assign_str(device, dev_name(ab->dev)); 234fb12305aSVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ab->dev)); 235fb12305aSVenkateswara Naralasetty __entry->level = level; 236fb12305aSVenkateswara Naralasetty WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg), 237fb12305aSVenkateswara Naralasetty ATH11K_MSG_MAX, vaf->fmt, 238fb12305aSVenkateswara Naralasetty *vaf->va) >= ATH11K_MSG_MAX); 239fb12305aSVenkateswara Naralasetty ), 240fb12305aSVenkateswara Naralasetty 241fb12305aSVenkateswara Naralasetty TP_printk( 242fb12305aSVenkateswara Naralasetty "%s %s %s", 243fb12305aSVenkateswara Naralasetty __get_str(driver), 244fb12305aSVenkateswara Naralasetty __get_str(device), 245fb12305aSVenkateswara Naralasetty __get_str(msg) 246fb12305aSVenkateswara Naralasetty ) 247fb12305aSVenkateswara Naralasetty ); 248fb12305aSVenkateswara Naralasetty 249fb12305aSVenkateswara Naralasetty TRACE_EVENT(ath11k_log_dbg_dump, 250fb12305aSVenkateswara Naralasetty TP_PROTO(struct ath11k_base *ab, const char *msg, const char *prefix, 251fb12305aSVenkateswara Naralasetty const void *buf, size_t buf_len), 252fb12305aSVenkateswara Naralasetty 253fb12305aSVenkateswara Naralasetty TP_ARGS(ab, msg, prefix, buf, buf_len), 254fb12305aSVenkateswara Naralasetty 255fb12305aSVenkateswara Naralasetty TP_STRUCT__entry( 256fb12305aSVenkateswara Naralasetty __string(device, dev_name(ab->dev)) 257fb12305aSVenkateswara Naralasetty __string(driver, dev_driver_string(ab->dev)) 258fb12305aSVenkateswara Naralasetty __string(msg, msg) 259fb12305aSVenkateswara Naralasetty __string(prefix, prefix) 260fb12305aSVenkateswara Naralasetty __field(size_t, buf_len) 261fb12305aSVenkateswara Naralasetty __dynamic_array(u8, buf, buf_len) 262fb12305aSVenkateswara Naralasetty ), 263fb12305aSVenkateswara Naralasetty 264fb12305aSVenkateswara Naralasetty TP_fast_assign( 265fb12305aSVenkateswara Naralasetty __assign_str(device, dev_name(ab->dev)); 266fb12305aSVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ab->dev)); 267fb12305aSVenkateswara Naralasetty __assign_str(msg, msg); 268fb12305aSVenkateswara Naralasetty __assign_str(prefix, prefix); 269fb12305aSVenkateswara Naralasetty __entry->buf_len = buf_len; 270fb12305aSVenkateswara Naralasetty memcpy(__get_dynamic_array(buf), buf, buf_len); 271fb12305aSVenkateswara Naralasetty ), 272fb12305aSVenkateswara Naralasetty 273fb12305aSVenkateswara Naralasetty TP_printk( 274fb12305aSVenkateswara Naralasetty "%s %s %s/%s\n", 275fb12305aSVenkateswara Naralasetty __get_str(driver), 276fb12305aSVenkateswara Naralasetty __get_str(device), 277fb12305aSVenkateswara Naralasetty __get_str(prefix), 278fb12305aSVenkateswara Naralasetty __get_str(msg) 279fb12305aSVenkateswara Naralasetty ) 280fb12305aSVenkateswara Naralasetty ); 28142da1cc7SCheng Wang 28242da1cc7SCheng Wang TRACE_EVENT(ath11k_wmi_diag, 28342da1cc7SCheng Wang TP_PROTO(struct ath11k_base *ab, const void *data, size_t len), 28442da1cc7SCheng Wang 28542da1cc7SCheng Wang TP_ARGS(ab, data, len), 28642da1cc7SCheng Wang 28742da1cc7SCheng Wang TP_STRUCT__entry( 28842da1cc7SCheng Wang __string(device, dev_name(ab->dev)) 28942da1cc7SCheng Wang __string(driver, dev_driver_string(ab->dev)) 29042da1cc7SCheng Wang __field(u16, len) 29142da1cc7SCheng Wang __dynamic_array(u8, data, len) 29242da1cc7SCheng Wang ), 29342da1cc7SCheng Wang 29442da1cc7SCheng Wang TP_fast_assign( 29542da1cc7SCheng Wang __assign_str(device, dev_name(ab->dev)); 29642da1cc7SCheng Wang __assign_str(driver, dev_driver_string(ab->dev)); 29742da1cc7SCheng Wang __entry->len = len; 29842da1cc7SCheng Wang memcpy(__get_dynamic_array(data), data, len); 29942da1cc7SCheng Wang ), 30042da1cc7SCheng Wang 30142da1cc7SCheng Wang TP_printk( 30242da1cc7SCheng Wang "%s %s tlv diag len %d", 30342da1cc7SCheng Wang __get_str(driver), 30442da1cc7SCheng Wang __get_str(device), 30542da1cc7SCheng Wang __entry->len 30642da1cc7SCheng Wang ) 30742da1cc7SCheng Wang ); 30842da1cc7SCheng Wang 309710a95f9SVenkateswara Naralasetty TRACE_EVENT(ath11k_ps_timekeeper, 310710a95f9SVenkateswara Naralasetty TP_PROTO(struct ath11k *ar, const void *peer_addr, 311710a95f9SVenkateswara Naralasetty u32 peer_ps_timestamp, u8 peer_ps_state), 312710a95f9SVenkateswara Naralasetty TP_ARGS(ar, peer_addr, peer_ps_timestamp, peer_ps_state), 313710a95f9SVenkateswara Naralasetty 314710a95f9SVenkateswara Naralasetty TP_STRUCT__entry(__string(device, dev_name(ar->ab->dev)) 315710a95f9SVenkateswara Naralasetty __string(driver, dev_driver_string(ar->ab->dev)) 316710a95f9SVenkateswara Naralasetty __dynamic_array(u8, peer_addr, ETH_ALEN) 317710a95f9SVenkateswara Naralasetty __field(u8, peer_ps_state) 318710a95f9SVenkateswara Naralasetty __field(u32, peer_ps_timestamp) 319710a95f9SVenkateswara Naralasetty ), 320710a95f9SVenkateswara Naralasetty 321710a95f9SVenkateswara Naralasetty TP_fast_assign(__assign_str(device, dev_name(ar->ab->dev)); 322710a95f9SVenkateswara Naralasetty __assign_str(driver, dev_driver_string(ar->ab->dev)); 323710a95f9SVenkateswara Naralasetty memcpy(__get_dynamic_array(peer_addr), peer_addr, 324710a95f9SVenkateswara Naralasetty ETH_ALEN); 325710a95f9SVenkateswara Naralasetty __entry->peer_ps_state = peer_ps_state; 326710a95f9SVenkateswara Naralasetty __entry->peer_ps_timestamp = peer_ps_timestamp; 327710a95f9SVenkateswara Naralasetty ), 328710a95f9SVenkateswara Naralasetty 329710a95f9SVenkateswara Naralasetty TP_printk("%s %s %u %u", 330710a95f9SVenkateswara Naralasetty __get_str(driver), 331710a95f9SVenkateswara Naralasetty __get_str(device), 332710a95f9SVenkateswara Naralasetty __entry->peer_ps_state, 333710a95f9SVenkateswara Naralasetty __entry->peer_ps_timestamp 334710a95f9SVenkateswara Naralasetty ) 335710a95f9SVenkateswara Naralasetty ); 336710a95f9SVenkateswara Naralasetty 337d5c65159SKalle Valo #endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/ 338d5c65159SKalle Valo 339d5c65159SKalle Valo /* we don't want to use include/trace/events */ 340d5c65159SKalle Valo #undef TRACE_INCLUDE_PATH 341d5c65159SKalle Valo #define TRACE_INCLUDE_PATH . 342d5c65159SKalle Valo #undef TRACE_INCLUDE_FILE 343d5c65159SKalle Valo #define TRACE_INCLUDE_FILE trace 344d5c65159SKalle Valo 345d5c65159SKalle Valo /* This part must be outside protection */ 346d5c65159SKalle Valo #include <trace/define_trace.h> 347