root/drivers/net/fjes/fjes_trace.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  18 TRACE_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 
  50 TRACE_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 
  81 TRACE_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 
  93 TRACE_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 
 124 TRACE_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 
 141 TRACE_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 
 153 TRACE_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 
 168 TRACE_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 
 185 TRACE_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 
 197 TRACE_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 
 214 TRACE_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 
 228 TRACE_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 
 240 TRACE_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 
 254 TRACE_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 
 268 TRACE_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 
 292 TRACE_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 
 312 TRACE_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 
 336 TRACE_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>

/* [<][>][^][v][top][bottom][index][help] */