461 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */2/* Copyright (c) 2019 - 2021 Intel Corporation */3#if !defined(__TRACE_CM_H) || defined(TRACE_HEADER_MULTI_READ)4#define __TRACE_CM_H5 6#include <linux/tracepoint.h>7#include <linux/trace_seq.h>8 9#include "main.h"10 11const char *print_ip_addr(struct trace_seq *p, u32 *addr, u16 port, bool ivp4);12const char *parse_iw_event_type(enum iw_cm_event_type iw_type);13const char *parse_cm_event_type(enum irdma_cm_event_type cm_type);14const char *parse_cm_state(enum irdma_cm_node_state);15#define __print_ip_addr(addr, port, ipv4) print_ip_addr(p, addr, port, ipv4)16 17#undef TRACE_SYSTEM18#define TRACE_SYSTEM irdma_cm19 20TRACE_EVENT(irdma_create_listen,21 TP_PROTO(struct irdma_device *iwdev, struct irdma_cm_info *cm_info),22 TP_ARGS(iwdev, cm_info),23 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)24 __dynamic_array(u32, laddr, 4)25 __field(u16, lport)26 __field(bool, ipv4)27 ),28 TP_fast_assign(__entry->iwdev = iwdev;29 __entry->lport = cm_info->loc_port;30 __entry->ipv4 = cm_info->ipv4;31 memcpy(__get_dynamic_array(laddr),32 cm_info->loc_addr, 4);33 ),34 TP_printk("iwdev=%p loc: %s",35 __entry->iwdev,36 __print_ip_addr(__get_dynamic_array(laddr),37 __entry->lport, __entry->ipv4)38 )39);40 41TRACE_EVENT(irdma_dec_refcnt_listen,42 TP_PROTO(struct irdma_cm_listener *listener, void *caller),43 TP_ARGS(listener, caller),44 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)45 __field(u32, refcnt)46 __dynamic_array(u32, laddr, 4)47 __field(u16, lport)48 __field(bool, ipv4)49 __field(void *, caller)50 ),51 TP_fast_assign(__entry->iwdev = listener->iwdev;52 __entry->lport = listener->loc_port;53 __entry->ipv4 = listener->ipv4;54 memcpy(__get_dynamic_array(laddr),55 listener->loc_addr, 4);56 ),57 TP_printk("iwdev=%p caller=%pS loc: %s",58 __entry->iwdev,59 __entry->caller,60 __print_ip_addr(__get_dynamic_array(laddr),61 __entry->lport, __entry->ipv4)62 )63);64 65DECLARE_EVENT_CLASS(listener_template,66 TP_PROTO(struct irdma_cm_listener *listener),67 TP_ARGS(listener),68 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)69 __field(u16, lport)70 __field(u16, vlan_id)71 __field(bool, ipv4)72 __field(enum irdma_cm_listener_state,73 state)74 __dynamic_array(u32, laddr, 4)75 ),76 TP_fast_assign(__entry->iwdev = listener->iwdev;77 __entry->lport = listener->loc_port;78 __entry->vlan_id = listener->vlan_id;79 __entry->ipv4 = listener->ipv4;80 __entry->state = listener->listener_state;81 memcpy(__get_dynamic_array(laddr),82 listener->loc_addr, 4);83 ),84 TP_printk("iwdev=%p vlan=%d loc: %s",85 __entry->iwdev,86 __entry->vlan_id,87 __print_ip_addr(__get_dynamic_array(laddr),88 __entry->lport, __entry->ipv4)89 )90);91 92DEFINE_EVENT(listener_template, irdma_find_listener,93 TP_PROTO(struct irdma_cm_listener *listener),94 TP_ARGS(listener));95 96DEFINE_EVENT(listener_template, irdma_del_multiple_qhash,97 TP_PROTO(struct irdma_cm_listener *listener),98 TP_ARGS(listener));99 100TRACE_EVENT(irdma_negotiate_mpa_v2,101 TP_PROTO(struct irdma_cm_node *cm_node),102 TP_ARGS(cm_node),103 TP_STRUCT__entry(__field(struct irdma_cm_node *, cm_node)104 __field(u16, ord_size)105 __field(u16, ird_size)106 ),107 TP_fast_assign(__entry->cm_node = cm_node;108 __entry->ord_size = cm_node->ord_size;109 __entry->ird_size = cm_node->ird_size;110 ),111 TP_printk("MPVA2 Negotiated cm_node=%p ORD:[%d], IRD:[%d]",112 __entry->cm_node,113 __entry->ord_size,114 __entry->ird_size115 )116);117 118DECLARE_EVENT_CLASS(tos_template,119 TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),120 TP_ARGS(iwdev, tos, user_pri),121 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)122 __field(u8, tos)123 __field(u8, user_pri)124 ),125 TP_fast_assign(__entry->iwdev = iwdev;126 __entry->tos = tos;127 __entry->user_pri = user_pri;128 ),129 TP_printk("iwdev=%p TOS:[%d] UP:[%d]",130 __entry->iwdev,131 __entry->tos,132 __entry->user_pri133 )134);135 136DEFINE_EVENT(tos_template, irdma_listener_tos,137 TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),138 TP_ARGS(iwdev, tos, user_pri));139 140DEFINE_EVENT(tos_template, irdma_dcb_tos,141 TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),142 TP_ARGS(iwdev, tos, user_pri));143 144DECLARE_EVENT_CLASS(qhash_template,145 TP_PROTO(struct irdma_device *iwdev,146 struct irdma_cm_listener *listener,147 const char *dev_addr),148 TP_ARGS(iwdev, listener, dev_addr),149 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)150 __field(u16, lport)151 __field(u16, vlan_id)152 __field(bool, ipv4)153 __dynamic_array(u32, laddr, 4)154 __dynamic_array(u32, mac, ETH_ALEN)155 ),156 TP_fast_assign(__entry->iwdev = iwdev;157 __entry->lport = listener->loc_port;158 __entry->vlan_id = listener->vlan_id;159 __entry->ipv4 = listener->ipv4;160 memcpy(__get_dynamic_array(laddr),161 listener->loc_addr, 4);162 ether_addr_copy(__get_dynamic_array(mac),163 dev_addr);164 ),165 TP_printk("iwdev=%p vlan=%d MAC=%6phC loc: %s",166 __entry->iwdev,167 __entry->vlan_id,168 __get_dynamic_array(mac),169 __print_ip_addr(__get_dynamic_array(laddr),170 __entry->lport, __entry->ipv4)171 )172);173 174DEFINE_EVENT(qhash_template, irdma_add_mqh_6,175 TP_PROTO(struct irdma_device *iwdev,176 struct irdma_cm_listener *listener,177 const char *dev_addr),178 TP_ARGS(iwdev, listener, dev_addr));179 180DEFINE_EVENT(qhash_template, irdma_add_mqh_4,181 TP_PROTO(struct irdma_device *iwdev,182 struct irdma_cm_listener *listener,183 const char *dev_addr),184 TP_ARGS(iwdev, listener, dev_addr));185 186TRACE_EVENT(irdma_addr_resolve,187 TP_PROTO(struct irdma_device *iwdev, char *dev_addr),188 TP_ARGS(iwdev, dev_addr),189 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)190 __dynamic_array(u8, mac, ETH_ALEN)191 ),192 TP_fast_assign(__entry->iwdev = iwdev;193 ether_addr_copy(__get_dynamic_array(mac), dev_addr);194 ),195 TP_printk("iwdev=%p MAC=%6phC", __entry->iwdev,196 __get_dynamic_array(mac)197 )198);199 200TRACE_EVENT(irdma_send_cm_event,201 TP_PROTO(struct irdma_cm_node *cm_node, struct iw_cm_id *cm_id,202 enum iw_cm_event_type type, int status, void *caller),203 TP_ARGS(cm_node, cm_id, type, status, caller),204 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)205 __field(struct irdma_cm_node *, cm_node)206 __field(struct iw_cm_id *, cm_id)207 __field(u32, refcount)208 __field(u16, lport)209 __field(u16, rport)210 __field(enum irdma_cm_node_state, state)211 __field(bool, ipv4)212 __field(u16, vlan_id)213 __field(int, accel)214 __field(enum iw_cm_event_type, type)215 __field(int, status)216 __field(void *, caller)217 __dynamic_array(u32, laddr, 4)218 __dynamic_array(u32, raddr, 4)219 ),220 TP_fast_assign(__entry->iwdev = cm_node->iwdev;221 __entry->cm_node = cm_node;222 __entry->cm_id = cm_id;223 __entry->refcount = refcount_read(&cm_node->refcnt);224 __entry->state = cm_node->state;225 __entry->lport = cm_node->loc_port;226 __entry->rport = cm_node->rem_port;227 __entry->ipv4 = cm_node->ipv4;228 __entry->vlan_id = cm_node->vlan_id;229 __entry->accel = cm_node->accelerated;230 __entry->type = type;231 __entry->status = status;232 __entry->caller = caller;233 memcpy(__get_dynamic_array(laddr),234 cm_node->loc_addr, 4);235 memcpy(__get_dynamic_array(raddr),236 cm_node->rem_addr, 4);237 ),238 TP_printk("iwdev=%p caller=%pS cm_id=%p node=%p refcnt=%d vlan_id=%d accel=%d state=%s event_type=%s status=%d loc: %s rem: %s",239 __entry->iwdev,240 __entry->caller,241 __entry->cm_id,242 __entry->cm_node,243 __entry->refcount,244 __entry->vlan_id,245 __entry->accel,246 parse_cm_state(__entry->state),247 parse_iw_event_type(__entry->type),248 __entry->status,249 __print_ip_addr(__get_dynamic_array(laddr),250 __entry->lport, __entry->ipv4),251 __print_ip_addr(__get_dynamic_array(raddr),252 __entry->rport, __entry->ipv4)253 )254);255 256TRACE_EVENT(irdma_send_cm_event_no_node,257 TP_PROTO(struct iw_cm_id *cm_id, enum iw_cm_event_type type,258 int status, void *caller),259 TP_ARGS(cm_id, type, status, caller),260 TP_STRUCT__entry(__field(struct iw_cm_id *, cm_id)261 __field(enum iw_cm_event_type, type)262 __field(int, status)263 __field(void *, caller)264 ),265 TP_fast_assign(__entry->cm_id = cm_id;266 __entry->type = type;267 __entry->status = status;268 __entry->caller = caller;269 ),270 TP_printk("cm_id=%p caller=%pS event_type=%s status=%d",271 __entry->cm_id,272 __entry->caller,273 parse_iw_event_type(__entry->type),274 __entry->status275 )276);277 278DECLARE_EVENT_CLASS(cm_node_template,279 TP_PROTO(struct irdma_cm_node *cm_node,280 enum irdma_cm_event_type type, void *caller),281 TP_ARGS(cm_node, type, caller),282 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)283 __field(struct irdma_cm_node *, cm_node)284 __field(u32, refcount)285 __field(u16, lport)286 __field(u16, rport)287 __field(enum irdma_cm_node_state, state)288 __field(bool, ipv4)289 __field(u16, vlan_id)290 __field(int, accel)291 __field(enum irdma_cm_event_type, type)292 __field(void *, caller)293 __dynamic_array(u32, laddr, 4)294 __dynamic_array(u32, raddr, 4)295 ),296 TP_fast_assign(__entry->iwdev = cm_node->iwdev;297 __entry->cm_node = cm_node;298 __entry->refcount = refcount_read(&cm_node->refcnt);299 __entry->state = cm_node->state;300 __entry->lport = cm_node->loc_port;301 __entry->rport = cm_node->rem_port;302 __entry->ipv4 = cm_node->ipv4;303 __entry->vlan_id = cm_node->vlan_id;304 __entry->accel = cm_node->accelerated;305 __entry->type = type;306 __entry->caller = caller;307 memcpy(__get_dynamic_array(laddr),308 cm_node->loc_addr, 4);309 memcpy(__get_dynamic_array(raddr),310 cm_node->rem_addr, 4);311 ),312 TP_printk("iwdev=%p caller=%pS node=%p refcnt=%d vlan_id=%d accel=%d state=%s event_type=%s loc: %s rem: %s",313 __entry->iwdev,314 __entry->caller,315 __entry->cm_node,316 __entry->refcount,317 __entry->vlan_id,318 __entry->accel,319 parse_cm_state(__entry->state),320 parse_cm_event_type(__entry->type),321 __print_ip_addr(__get_dynamic_array(laddr),322 __entry->lport, __entry->ipv4),323 __print_ip_addr(__get_dynamic_array(raddr),324 __entry->rport, __entry->ipv4)325 )326);327 328DEFINE_EVENT(cm_node_template, irdma_create_event,329 TP_PROTO(struct irdma_cm_node *cm_node,330 enum irdma_cm_event_type type, void *caller),331 TP_ARGS(cm_node, type, caller));332 333DEFINE_EVENT(cm_node_template, irdma_accept,334 TP_PROTO(struct irdma_cm_node *cm_node,335 enum irdma_cm_event_type type, void *caller),336 TP_ARGS(cm_node, type, caller));337 338DEFINE_EVENT(cm_node_template, irdma_connect,339 TP_PROTO(struct irdma_cm_node *cm_node,340 enum irdma_cm_event_type type, void *caller),341 TP_ARGS(cm_node, type, caller));342 343DEFINE_EVENT(cm_node_template, irdma_reject,344 TP_PROTO(struct irdma_cm_node *cm_node,345 enum irdma_cm_event_type type, void *caller),346 TP_ARGS(cm_node, type, caller));347 348DEFINE_EVENT(cm_node_template, irdma_find_node,349 TP_PROTO(struct irdma_cm_node *cm_node,350 enum irdma_cm_event_type type, void *caller),351 TP_ARGS(cm_node, type, caller));352 353DEFINE_EVENT(cm_node_template, irdma_send_reset,354 TP_PROTO(struct irdma_cm_node *cm_node,355 enum irdma_cm_event_type type, void *caller),356 TP_ARGS(cm_node, type, caller));357 358DEFINE_EVENT(cm_node_template, irdma_rem_ref_cm_node,359 TP_PROTO(struct irdma_cm_node *cm_node,360 enum irdma_cm_event_type type, void *caller),361 TP_ARGS(cm_node, type, caller));362 363DEFINE_EVENT(cm_node_template, irdma_cm_event_handler,364 TP_PROTO(struct irdma_cm_node *cm_node,365 enum irdma_cm_event_type type, void *caller),366 TP_ARGS(cm_node, type, caller));367 368TRACE_EVENT(open_err_template,369 TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),370 TP_ARGS(cm_node, reset, caller),371 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)372 __field(struct irdma_cm_node *, cm_node)373 __field(enum irdma_cm_node_state, state)374 __field(bool, reset)375 __field(void *, caller)376 ),377 TP_fast_assign(__entry->iwdev = cm_node->iwdev;378 __entry->cm_node = cm_node;379 __entry->state = cm_node->state;380 __entry->reset = reset;381 __entry->caller = caller;382 ),383 TP_printk("iwdev=%p caller=%pS node%p reset=%d state=%s",384 __entry->iwdev,385 __entry->caller,386 __entry->cm_node,387 __entry->reset,388 parse_cm_state(__entry->state)389 )390);391 392DEFINE_EVENT(open_err_template, irdma_active_open_err,393 TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),394 TP_ARGS(cm_node, reset, caller));395 396DEFINE_EVENT(open_err_template, irdma_passive_open_err,397 TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),398 TP_ARGS(cm_node, reset, caller));399 400DECLARE_EVENT_CLASS(cm_node_ah_template,401 TP_PROTO(struct irdma_cm_node *cm_node),402 TP_ARGS(cm_node),403 TP_STRUCT__entry(__field(struct irdma_device *, iwdev)404 __field(struct irdma_cm_node *, cm_node)405 __field(struct irdma_sc_ah *, ah)406 __field(u32, refcount)407 __field(u16, lport)408 __field(u16, rport)409 __field(enum irdma_cm_node_state, state)410 __field(bool, ipv4)411 __field(u16, vlan_id)412 __field(int, accel)413 __dynamic_array(u32, laddr, 4)414 __dynamic_array(u32, raddr, 4)415 ),416 TP_fast_assign(__entry->iwdev = cm_node->iwdev;417 __entry->cm_node = cm_node;418 __entry->ah = cm_node->ah;419 __entry->refcount = refcount_read(&cm_node->refcnt);420 __entry->lport = cm_node->loc_port;421 __entry->rport = cm_node->rem_port;422 __entry->state = cm_node->state;423 __entry->ipv4 = cm_node->ipv4;424 __entry->vlan_id = cm_node->vlan_id;425 __entry->accel = cm_node->accelerated;426 memcpy(__get_dynamic_array(laddr),427 cm_node->loc_addr, 4);428 memcpy(__get_dynamic_array(raddr),429 cm_node->rem_addr, 4);430 ),431 TP_printk("iwdev=%p node=%p ah=%p refcnt=%d vlan_id=%d accel=%d state=%s loc: %s rem: %s",432 __entry->iwdev,433 __entry->cm_node,434 __entry->ah,435 __entry->refcount,436 __entry->vlan_id,437 __entry->accel,438 parse_cm_state(__entry->state),439 __print_ip_addr(__get_dynamic_array(laddr),440 __entry->lport, __entry->ipv4),441 __print_ip_addr(__get_dynamic_array(raddr),442 __entry->rport, __entry->ipv4)443 )444);445 446DEFINE_EVENT(cm_node_ah_template, irdma_cm_free_ah,447 TP_PROTO(struct irdma_cm_node *cm_node),448 TP_ARGS(cm_node));449 450DEFINE_EVENT(cm_node_ah_template, irdma_create_ah,451 TP_PROTO(struct irdma_cm_node *cm_node),452 TP_ARGS(cm_node));453 454#endif /* __TRACE_CM_H */455 456#undef TRACE_INCLUDE_PATH457#undef TRACE_INCLUDE_FILE458#define TRACE_INCLUDE_PATH .459#define TRACE_INCLUDE_FILE trace_cm460#include <trace/define_trace.h>461