linux/drivers/net/fjes/fjes_trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 *  FUJITSU Extended Socket Network Device driver
   4 *  Copyright (c) 2015-2016 FUJITSU LIMITED
   5 */
   6
   7#if !defined(FJES_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
   8#define FJES_TRACE_H_
   9
  10#include <linux/types.h>
  11#include <linux/tracepoint.h>
  12
  13#undef TRACE_SYSTEM
  14#define TRACE_SYSTEM fjes
  15
  16/* tracepoints for fjes_hw.c */
  17
  18TRACE_EVENT(fjes_hw_issue_request_command,
  19        TP_PROTO(union REG_CR *cr, union REG_CS *cs, int timeout,
  20                 enum fjes_dev_command_response_e ret),
  21        TP_ARGS(cr, cs, timeout, ret),
  22        TP_STRUCT__entry(
  23                __field(u16, cr_req)
  24                __field(u8, cr_error)
  25                __field(u16, cr_err_info)
  26                __field(u8, cr_req_start)
  27                __field(u16, cs_req)
  28                __field(u8, cs_busy)
  29                __field(u8, cs_complete)
  30                __field(int, timeout)
  31                __field(int, ret)
  32        ),
  33        TP_fast_assign(
  34                __entry->cr_req = cr->bits.req_code;
  35                __entry->cr_error = cr->bits.error;
  36                __entry->cr_err_info = cr->bits.err_info;
  37                __entry->cr_req_start = cr->bits.req_start;
  38                __entry->cs_req = cs->bits.req_code;
  39                __entry->cs_busy = cs->bits.busy;
  40                __entry->cs_complete = cs->bits.complete;
  41                __entry->timeout = timeout;
  42                __entry->ret = ret;
  43        ),
  44        TP_printk("CR=[req=%04x, error=%u, err_info=%04x, req_start=%u], CS=[req=%04x, busy=%u, complete=%u], timeout=%d, ret=%d",
  45                  __entry->cr_req, __entry->cr_error, __entry->cr_err_info,
  46                  __entry->cr_req_start, __entry->cs_req, __entry->cs_busy,
  47                  __entry->cs_complete, __entry->timeout, __entry->ret)
  48);
  49
  50TRACE_EVENT(fjes_hw_request_info,
  51        TP_PROTO(struct fjes_hw *hw, union fjes_device_command_res *res_buf),
  52        TP_ARGS(hw, res_buf),
  53        TP_STRUCT__entry(
  54                __field(int, length)
  55                __field(int, code)
  56                __dynamic_array(u8, zone, hw->max_epid)
  57                __dynamic_array(u8, status, hw->max_epid)
  58        ),
  59        TP_fast_assign(
  60                int x;
  61
  62                __entry->length = res_buf->info.length;
  63                __entry->code = res_buf->info.code;
  64                for (x = 0; x < hw->max_epid; x++) {
  65                        *((u8 *)__get_dynamic_array(zone) + x) =
  66                                        res_buf->info.info[x].zone;
  67                        *((u8 *)__get_dynamic_array(status) + x) =
  68                                        res_buf->info.info[x].es_status;
  69                }
  70        ),
  71        TP_printk("res_buf=[length=%d, code=%d, es_zones=%s, es_status=%s]",
  72                  __entry->length, __entry->code,
  73                  __print_array(__get_dynamic_array(zone),
  74                                __get_dynamic_array_len(zone) / sizeof(u8),
  75                                sizeof(u8)),
  76                  __print_array(__get_dynamic_array(status),
  77                                __get_dynamic_array_len(status) / sizeof(u8),
  78                                sizeof(u8)))
  79);
  80
  81TRACE_EVENT(fjes_hw_request_info_err,
  82        TP_PROTO(char *err),
  83        TP_ARGS(err),
  84        TP_STRUCT__entry(
  85                __string(err, err)
  86        ),
  87        TP_fast_assign(
  88                __assign_str(err, err);
  89        ),
  90        TP_printk("%s", __get_str(err))
  91);
  92
  93TRACE_EVENT(fjes_hw_register_buff_addr_req,
  94        TP_PROTO(union fjes_device_command_req *req_buf,
  95                 struct ep_share_mem_info *buf_pair),
  96        TP_ARGS(req_buf, buf_pair),
  97        TP_STRUCT__entry(
  98                __field(int, length)
  99                __field(int, epid)
 100                __field(u64, tx)
 101                __field(size_t, tx_size)
 102                __field(u64, rx)
 103                __field(size_t, rx_size)
 104        ),
 105        TP_fast_assign(
 106                void *tx, *rx;
 107
 108                tx = (void *)buf_pair->tx.buffer;
 109                rx = (void *)buf_pair->rx.buffer;
 110                __entry->length = req_buf->share_buffer.length;
 111                __entry->epid = req_buf->share_buffer.epid;
 112                __entry->tx_size = buf_pair->tx.size;
 113                __entry->rx_size = buf_pair->rx.size;
 114                __entry->tx = page_to_phys(vmalloc_to_page(tx)) +
 115                                offset_in_page(tx);
 116                __entry->rx = page_to_phys(vmalloc_to_page(rx)) +
 117                                offset_in_page(rx);
 118        ),
 119        TP_printk("req_buf=[length=%d, epid=%d], TX=[phy=0x%016llx, size=%zu], RX=[phy=0x%016llx, size=%zu]",
 120                  __entry->length, __entry->epid, __entry->tx, __entry->tx_size,
 121                  __entry->rx, __entry->rx_size)
 122);
 123
 124TRACE_EVENT(fjes_hw_register_buff_addr,
 125        TP_PROTO(union fjes_device_command_res *res_buf, int timeout),
 126        TP_ARGS(res_buf, timeout),
 127        TP_STRUCT__entry(
 128                __field(int, length)
 129                __field(int, code)
 130                __field(int, timeout)
 131        ),
 132        TP_fast_assign(
 133                __entry->length = res_buf->share_buffer.length;
 134                __entry->code = res_buf->share_buffer.code;
 135                __entry->timeout = timeout;
 136        ),
 137        TP_printk("res_buf=[length=%d, code=%d], timeout=%d",
 138                  __entry->length, __entry->code, __entry->timeout)
 139);
 140
 141TRACE_EVENT(fjes_hw_register_buff_addr_err,
 142        TP_PROTO(char *err),
 143        TP_ARGS(err),
 144        TP_STRUCT__entry(
 145                __string(err, err)
 146        ),
 147        TP_fast_assign(
 148                __assign_str(err, err);
 149        ),
 150        TP_printk("%s", __get_str(err))
 151);
 152
 153TRACE_EVENT(fjes_hw_unregister_buff_addr_req,
 154        TP_PROTO(union fjes_device_command_req *req_buf),
 155        TP_ARGS(req_buf),
 156        TP_STRUCT__entry(
 157                __field(int, length)
 158                __field(int, epid)
 159        ),
 160        TP_fast_assign(
 161                __entry->length = req_buf->unshare_buffer.length;
 162                __entry->epid = req_buf->unshare_buffer.epid;
 163        ),
 164        TP_printk("req_buf=[length=%d, epid=%d]",
 165                  __entry->length, __entry->epid)
 166);
 167
 168TRACE_EVENT(fjes_hw_unregister_buff_addr,
 169        TP_PROTO(union fjes_device_command_res *res_buf, int timeout),
 170        TP_ARGS(res_buf, timeout),
 171        TP_STRUCT__entry(
 172                __field(int, length)
 173                __field(int, code)
 174                __field(int, timeout)
 175        ),
 176        TP_fast_assign(
 177                __entry->length = res_buf->unshare_buffer.length;
 178                __entry->code = res_buf->unshare_buffer.code;
 179                __entry->timeout = timeout;
 180        ),
 181        TP_printk("res_buf=[length=%d, code=%d], timeout=%d",
 182                  __entry->length, __entry->code, __entry->timeout)
 183);
 184
 185TRACE_EVENT(fjes_hw_unregister_buff_addr_err,
 186        TP_PROTO(char *err),
 187        TP_ARGS(err),
 188        TP_STRUCT__entry(
 189                __string(err, err)
 190        ),
 191        TP_fast_assign(
 192                __assign_str(err, err);
 193        ),
 194        TP_printk("%s", __get_str(err))
 195);
 196
 197TRACE_EVENT(fjes_hw_start_debug_req,
 198        TP_PROTO(union fjes_device_command_req *req_buf),
 199        TP_ARGS(req_buf),
 200        TP_STRUCT__entry(
 201                __field(int, length)
 202                __field(int, mode)
 203                __field(phys_addr_t, buffer)
 204        ),
 205        TP_fast_assign(
 206                __entry->length = req_buf->start_trace.length;
 207                __entry->mode = req_buf->start_trace.mode;
 208                __entry->buffer = req_buf->start_trace.buffer[0];
 209        ),
 210        TP_printk("req_buf=[length=%d, mode=%d, buffer=%pap]",
 211                  __entry->length, __entry->mode, &__entry->buffer)
 212);
 213
 214TRACE_EVENT(fjes_hw_start_debug,
 215        TP_PROTO(union fjes_device_command_res *res_buf),
 216        TP_ARGS(res_buf),
 217        TP_STRUCT__entry(
 218                __field(int, length)
 219                __field(int, code)
 220        ),
 221        TP_fast_assign(
 222                __entry->length = res_buf->start_trace.length;
 223                __entry->code = res_buf->start_trace.code;
 224        ),
 225        TP_printk("res_buf=[length=%d, code=%d]", __entry->length, __entry->code)
 226);
 227
 228TRACE_EVENT(fjes_hw_start_debug_err,
 229        TP_PROTO(char *err),
 230        TP_ARGS(err),
 231        TP_STRUCT__entry(
 232                 __string(err, err)
 233        ),
 234        TP_fast_assign(
 235                __assign_str(err, err);
 236        ),
 237        TP_printk("%s", __get_str(err))
 238);
 239
 240TRACE_EVENT(fjes_hw_stop_debug,
 241        TP_PROTO(union fjes_device_command_res *res_buf),
 242        TP_ARGS(res_buf),
 243        TP_STRUCT__entry(
 244                __field(int, length)
 245                __field(int, code)
 246        ),
 247        TP_fast_assign(
 248                __entry->length = res_buf->stop_trace.length;
 249                __entry->code = res_buf->stop_trace.code;
 250        ),
 251        TP_printk("res_buf=[length=%d, code=%d]", __entry->length, __entry->code)
 252);
 253
 254TRACE_EVENT(fjes_hw_stop_debug_err,
 255        TP_PROTO(char *err),
 256        TP_ARGS(err),
 257        TP_STRUCT__entry(
 258                 __string(err, err)
 259        ),
 260        TP_fast_assign(
 261                __assign_str(err, err);
 262        ),
 263        TP_printk("%s", __get_str(err))
 264);
 265
 266/* tracepoints for fjes_main.c */
 267
 268TRACE_EVENT(fjes_txrx_stop_req_irq_pre,
 269        TP_PROTO(struct fjes_hw *hw, int src_epid,
 270                 enum ep_partner_status status),
 271        TP_ARGS(hw, src_epid, status),
 272        TP_STRUCT__entry(
 273                __field(int, src_epid)
 274                __field(enum ep_partner_status, status)
 275                __field(u8, ep_status)
 276                __field(unsigned long, txrx_stop_req_bit)
 277                __field(u16, rx_status)
 278        ),
 279        TP_fast_assign(
 280                __entry->src_epid = src_epid;
 281                __entry->status = status;
 282                __entry->ep_status = hw->hw_info.share->ep_status[src_epid];
 283                __entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
 284                __entry->rx_status =
 285                        hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
 286        ),
 287        TP_printk("epid=%d, partner_status=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
 288                  __entry->src_epid, __entry->status, __entry->ep_status,
 289                  __entry->txrx_stop_req_bit, __entry->rx_status)
 290);
 291
 292TRACE_EVENT(fjes_txrx_stop_req_irq_post,
 293        TP_PROTO(struct fjes_hw *hw, int src_epid),
 294        TP_ARGS(hw, src_epid),
 295        TP_STRUCT__entry(
 296                __field(int, src_epid)
 297                __field(u8, ep_status)
 298                __field(unsigned long, txrx_stop_req_bit)
 299                __field(u16, rx_status)
 300        ),
 301        TP_fast_assign(
 302                __entry->src_epid = src_epid;
 303                __entry->ep_status = hw->hw_info.share->ep_status[src_epid];
 304                __entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
 305                __entry->rx_status = hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
 306        ),
 307        TP_printk("epid=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
 308                  __entry->src_epid, __entry->ep_status,
 309                  __entry->txrx_stop_req_bit, __entry->rx_status)
 310);
 311
 312TRACE_EVENT(fjes_stop_req_irq_pre,
 313        TP_PROTO(struct fjes_hw *hw, int src_epid,
 314                 enum ep_partner_status status),
 315        TP_ARGS(hw, src_epid, status),
 316        TP_STRUCT__entry(
 317                __field(int, src_epid)
 318                __field(enum ep_partner_status, status)
 319                __field(u8, ep_status)
 320                __field(unsigned long, txrx_stop_req_bit)
 321                __field(u16, rx_status)
 322        ),
 323        TP_fast_assign(
 324                __entry->src_epid = src_epid;
 325                __entry->status = status;
 326                __entry->ep_status = hw->hw_info.share->ep_status[src_epid];
 327                __entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
 328                __entry->rx_status =
 329                        hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
 330        ),
 331        TP_printk("epid=%d, partner_status=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
 332                  __entry->src_epid, __entry->status, __entry->ep_status,
 333                  __entry->txrx_stop_req_bit, __entry->rx_status)
 334);
 335
 336TRACE_EVENT(fjes_stop_req_irq_post,
 337        TP_PROTO(struct fjes_hw *hw, int src_epid),
 338        TP_ARGS(hw, src_epid),
 339        TP_STRUCT__entry(
 340                __field(int, src_epid)
 341                __field(u8, ep_status)
 342                __field(unsigned long, txrx_stop_req_bit)
 343                __field(u16, rx_status)
 344        ),
 345        TP_fast_assign(
 346                __entry->src_epid = src_epid;
 347                __entry->ep_status = hw->hw_info.share->ep_status[src_epid];
 348                __entry->txrx_stop_req_bit = hw->txrx_stop_req_bit;
 349                __entry->rx_status =
 350                        hw->ep_shm_info[src_epid].tx.info->v1i.rx_status;
 351        ),
 352        TP_printk("epid=%d, ep_status=%x, txrx_stop_req_bit=%016lx, tx.rx_status=%08x",
 353                  __entry->src_epid, __entry->ep_status,
 354                  __entry->txrx_stop_req_bit, __entry->rx_status)
 355);
 356
 357#endif /* FJES_TRACE_H_ */
 358
 359#undef TRACE_INCLUDE_PATH
 360#undef TRACE_INCLUDE_FILE
 361#define TRACE_INCLUDE_PATH ../../../drivers/net/fjes
 362#define TRACE_INCLUDE_FILE fjes_trace
 363
 364/* This part must be outside protection */
 365#include <trace/define_trace.h>
 366