Jetpack/kernel/nvidia/drivers/staging/ozwpan/ozeventtrace.h

220 lines
6.3 KiB
C

/* -----------------------------------------------------------------------------
* Copyright (c) 2011 Ozmo Inc
* Released under the GNU General Public License Version 2 (GPLv2).
* -----------------------------------------------------------------------------
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ozwpan
#if !defined(_OZEVENTTRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _OZEVENTTRACE_H
#include <linux/tracepoint.h>
#include <linux/usb.h>
#define MAX_URB_LEN 16
#define MAX_FRAME_LEN 32
#define MAX_MSG_LEN 128
TRACE_EVENT(urb_in,
TP_PROTO(struct urb *oz_urb),
TP_ARGS(oz_urb),
TP_STRUCT__entry(
__field(uintptr_t, urb)
__field(u32, endpoint)
__field(u32, buffer_length)
__field(u32, inc_length)
__array(u8, buffer, MAX_URB_LEN)
),
TP_fast_assign(
__entry->urb = (uintptr_t)oz_urb;
__entry->endpoint = usb_pipeendpoint(oz_urb->pipe);
if (usb_pipein(oz_urb->pipe))
__entry->endpoint |= 0x80;
__entry->buffer_length = oz_urb->transfer_buffer_length;
__entry->inc_length = oz_urb->transfer_buffer_length
<= MAX_URB_LEN ? oz_urb->transfer_buffer_length : MAX_URB_LEN;
if ((__entry->endpoint == 0x00) ||
(__entry->endpoint == 0x80)) {
__entry->buffer_length = 8;
__entry->inc_length = 8;
memcpy(__entry->buffer, oz_urb->setup_packet, 8);
} else {
memcpy(__entry->buffer, oz_urb->transfer_buffer,
__entry->inc_length);
}
),
TP_printk("%08x,%02x,%03x,%03x,"
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
(u32)__entry->urb, __entry->endpoint, __entry->buffer_length,
__entry->inc_length, __entry->buffer[0], __entry->buffer[1],
__entry->buffer[2], __entry->buffer[3], __entry->buffer[4],
__entry->buffer[5], __entry->buffer[6], __entry->buffer[7],
__entry->buffer[8], __entry->buffer[9], __entry->buffer[10],
__entry->buffer[11], __entry->buffer[12], __entry->buffer[13],
__entry->buffer[14], __entry->buffer[15])
);
TRACE_EVENT(urb_out,
TP_PROTO(struct urb *oz_urb, int status),
TP_ARGS(oz_urb, status),
TP_STRUCT__entry(
__field(uintptr_t, urb)
__field(u32, endpoint)
__field(u32, status)
__field(u32, actual_length)
__field(u32, inc_length)
__array(u8, buffer, MAX_URB_LEN)
),
TP_fast_assign(
__entry->urb = (uintptr_t)oz_urb;
__entry->endpoint = usb_pipeendpoint(oz_urb->pipe);
__entry->status = status;
if (usb_pipein(oz_urb->pipe))
__entry->endpoint |= 0x80;
__entry->actual_length = oz_urb->actual_length;
__entry->inc_length = oz_urb->actual_length
<= MAX_URB_LEN ? oz_urb->actual_length : MAX_URB_LEN;
if (usb_pipein(oz_urb->pipe))
memcpy(__entry->buffer, oz_urb->transfer_buffer,
__entry->inc_length);
),
TP_printk("%08x,%08x,%02x,%03x,%03x,"
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
(u32)__entry->urb, __entry->status, __entry->endpoint,
__entry->actual_length, __entry->inc_length, __entry->buffer[0],
__entry->buffer[1], __entry->buffer[2], __entry->buffer[3],
__entry->buffer[4], __entry->buffer[5], __entry->buffer[6],
__entry->buffer[7], __entry->buffer[8], __entry->buffer[9],
__entry->buffer[10], __entry->buffer[11], __entry->buffer[12],
__entry->buffer[13], __entry->buffer[14], __entry->buffer[15])
);
TRACE_EVENT(rx_frame,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb),
TP_STRUCT__entry(
__field(u32, inc_len)
__field(u32, orig_len)
__array(u8, data, MAX_FRAME_LEN)
),
TP_fast_assign(
__entry->orig_len = skb->len;
__entry->inc_len = skb->len < MAX_FRAME_LEN ?
skb->len : MAX_FRAME_LEN;
memcpy(__entry->data, (u8 *)skb_network_header(skb),
__entry->inc_len);
),
TP_printk("%03x,%03x,%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
"%02x%02x%02x", __entry->orig_len,
__entry->inc_len, __entry->data[0], __entry->data[1],
__entry->data[2], __entry->data[3], __entry->data[4],
__entry->data[5], __entry->data[6], __entry->data[7],
__entry->data[8], __entry->data[9], __entry->data[10],
__entry->data[11], __entry->data[12], __entry->data[13],
__entry->data[14], __entry->data[15], __entry->data[16],
__entry->data[17], __entry->data[18], __entry->data[19],
__entry->data[20], __entry->data[21], __entry->data[22],
__entry->data[23], __entry->data[24], __entry->data[25],
__entry->data[26], __entry->data[27], __entry->data[28],
__entry->data[29], __entry->data[30], __entry->data[31])
);
TRACE_EVENT(tx_frame,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb),
TP_STRUCT__entry(
__field(u32, inc_len)
__field(u32, orig_len)
__array(u8, data, MAX_FRAME_LEN)
),
TP_fast_assign(
__entry->orig_len = skb->len - 14;
__entry->inc_len = __entry->orig_len
< MAX_FRAME_LEN ?
__entry->orig_len
: MAX_FRAME_LEN;
memcpy(__entry->data, (u8 *)skb_network_header(skb),
__entry->inc_len);
),
TP_printk("%03x,%03x,%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
"%02x%02x%02x", __entry->orig_len,
__entry->inc_len, __entry->data[0], __entry->data[1],
__entry->data[2], __entry->data[3], __entry->data[4],
__entry->data[5], __entry->data[6], __entry->data[7],
__entry->data[8], __entry->data[9], __entry->data[10],
__entry->data[11], __entry->data[12], __entry->data[13],
__entry->data[14], __entry->data[15], __entry->data[16],
__entry->data[17], __entry->data[18], __entry->data[19],
__entry->data[20], __entry->data[21], __entry->data[22],
__entry->data[23], __entry->data[24], __entry->data[25],
__entry->data[26], __entry->data[27], __entry->data[28],
__entry->data[29], __entry->data[30], __entry->data[31])
);
DECLARE_EVENT_CLASS(debug_msg,
TP_PROTO(char *fmt, va_list arg),
TP_ARGS(fmt, arg),
TP_STRUCT__entry(
__array(char, msg, MAX_MSG_LEN)
),
TP_fast_assign(
snprintf(__entry->msg, MAX_MSG_LEN, fmt, arg);
),
TP_printk("%s", __entry->msg)
);
DEFINE_EVENT(debug_msg, hcd_msg_evt,
TP_PROTO(char *fmt, va_list arg),
TP_ARGS(fmt, arg)
);
DEFINE_EVENT(debug_msg, isoc_msg_evt,
TP_PROTO(char *fmt, va_list arg),
TP_ARGS(fmt, arg)
);
DEFINE_EVENT(debug_msg, info_msg_evt,
TP_PROTO(char *fmt, va_list arg),
TP_ARGS(fmt, arg)
);
#endif /*_OZEVENTTRACE_H*/
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH ../../../nvidia/drivers/staging/ozwpan
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE ozeventtrace
#include <trace/define_trace.h>