Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1124840/?format=api
{ "id": 1124840, "url": "http://patchwork.ozlabs.org/api/patches/1124840/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190629185405.1601-14-shiraz.saleem@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20190629185405.1601-14-shiraz.saleem@intel.com>", "list_archive_url": null, "date": "2019-06-29T18:54:01", "name": "[rdma-next,13/17] RDMA/irdma: Add dynamic tracing for CM", "commit_ref": null, "pull_url": null, "state": "rejected", "archived": false, "hash": "67124c142ae754f168d0446ecb9f77a3f5037df2", "submitter": { "id": 69500, "url": "http://patchwork.ozlabs.org/api/people/69500/?format=api", "name": "Saleem, Shiraz", "email": "shiraz.saleem@intel.com" }, "delegate": { "id": 68, "url": "http://patchwork.ozlabs.org/api/users/68/?format=api", "username": "jtkirshe", "first_name": "Jeff", "last_name": "Kirsher", "email": "jeffrey.t.kirsher@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190629185405.1601-14-shiraz.saleem@intel.com/mbox/", "series": [ { "id": 116886, "url": "http://patchwork.ozlabs.org/api/series/116886/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=116886", "date": "2019-06-29T18:53:48", "name": "Add unified Intel Ethernet RDMA driver (irdma)", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/116886/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1124840/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1124840/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.136; helo=silver.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com" ], "Received": [ "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 45bjVl4WSVz9s3Z\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSun, 30 Jun 2019 04:54:55 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 1D8E9204CE;\n\tSat, 29 Jun 2019 18:54:54 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 689r1ofDX+1g; Sat, 29 Jun 2019 18:54:39 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id A6CC7204C9;\n\tSat, 29 Jun 2019 18:54:26 +0000 (UTC)", "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id A30541BF3AD\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tSat, 29 Jun 2019 18:54:24 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A084B87E94\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tSat, 29 Jun 2019 18:54:24 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id kysRN+FyoGDQ for <intel-wired-lan@lists.osuosl.org>;\n\tSat, 29 Jun 2019 18:54:23 +0000 (UTC)", "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id 1595087E58\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tSat, 29 Jun 2019 18:54:23 +0000 (UTC)", "from fmsmga004.fm.intel.com ([10.253.24.48])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t29 Jun 2019 11:54:22 -0700", "from ssaleem-mobl.amr.corp.intel.com ([10.254.177.95])\n\tby fmsmga004.fm.intel.com with ESMTP; 29 Jun 2019 11:54:22 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.63,432,1557212400\"; d=\"scan'208\";a=\"185972894\"", "From": "Shiraz Saleem <shiraz.saleem@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Sat, 29 Jun 2019 13:54:01 -0500", "Message-Id": "<20190629185405.1601-14-shiraz.saleem@intel.com>", "X-Mailer": "git-send-email 2.21.0", "In-Reply-To": "<20190629185405.1601-1-shiraz.saleem@intel.com>", "References": "<20190629185405.1601-1-shiraz.saleem@intel.com>", "MIME-Version": "1.0", "Subject": "[Intel-wired-lan] [PATCH rdma-next 13/17] RDMA/irdma: Add dynamic\n\ttracing for CM", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>", "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "Cc": "\"Michael J. Ruhl\" <michael.j.ruhl@intel.com>,\n\tShiraz Saleem <shiraz.saleem@intel.com>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "From: \"Michael J. Ruhl\" <michael.j.ruhl@intel.com>\n\nAdd dynamic tracing functionality to debug connection\nmanagement issues.\n\nSigned-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>\nSigned-off-by: Shiraz Saleem <shiraz.saleem@intel.com>\n---\n drivers/infiniband/hw/irdma/trace.c | 113 ++++++++\n drivers/infiniband/hw/irdma/trace.h | 4 +\n drivers/infiniband/hw/irdma/trace_cm.h | 459 +++++++++++++++++++++++++++++++++\n 3 files changed, 576 insertions(+)\n create mode 100644 drivers/infiniband/hw/irdma/trace.c\n create mode 100644 drivers/infiniband/hw/irdma/trace.h\n create mode 100644 drivers/infiniband/hw/irdma/trace_cm.h", "diff": "diff --git a/drivers/infiniband/hw/irdma/trace.c b/drivers/infiniband/hw/irdma/trace.c\nnew file mode 100644\nindex 0000000..ee68c5a\n--- /dev/null\n+++ b/drivers/infiniband/hw/irdma/trace.c\n@@ -0,0 +1,113 @@\n+// SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB\n+/* Copyright (c) 2019, Intel Corporation. */\n+\n+#define CREATE_TRACE_POINTS\n+#include \"trace.h\"\n+\n+const char *print_ip_addr(struct trace_seq *p, u32 *addr, u16 port, bool ipv4)\n+{\n+\tconst char *ret = trace_seq_buffer_ptr(p);\n+\n+\tif (ipv4) {\n+\t\t__be32 myaddr = htonl(*addr);\n+\n+\t\ttrace_seq_printf(p, \"%pI4:%d\", &myaddr, htons(port));\n+\t} else {\n+\t\ttrace_seq_printf(p, \"%pI6:%d\", addr, htons(port));\n+\t}\n+\ttrace_seq_putc(p, 0);\n+\n+\treturn ret;\n+}\n+\n+const char *parse_iw_event_type(enum iw_cm_event_type iw_type)\n+{\n+\tswitch (iw_type) {\n+\tcase IW_CM_EVENT_CONNECT_REQUEST:\n+\t\treturn \"IwRequest\";\n+\tcase IW_CM_EVENT_CONNECT_REPLY:\n+\t\treturn \"IwReply\";\n+\tcase IW_CM_EVENT_ESTABLISHED:\n+\t\treturn \"IwEstablished\";\n+\tcase IW_CM_EVENT_DISCONNECT:\n+\t\treturn \"IwDisconnect\";\n+\tcase IW_CM_EVENT_CLOSE:\n+\t\treturn \"IwClose\";\n+\t}\n+\n+\treturn \"Unknown\";\n+}\n+\n+const char *parse_cm_event_type(enum irdma_cm_event_type cm_type)\n+{\n+\tswitch (cm_type) {\n+\tcase IRDMA_CM_EVENT_ESTABLISHED:\n+\t\treturn \"CmEstablished\";\n+\tcase IRDMA_CM_EVENT_MPA_REQ:\n+\t\treturn \"CmMPA_REQ\";\n+\tcase IRDMA_CM_EVENT_MPA_CONNECT:\n+\t\treturn \"CmMPA_CONNECT\";\n+\tcase IRDMA_CM_EVENT_MPA_ACCEPT:\n+\t\treturn \"CmMPA_ACCEPT\";\n+\tcase IRDMA_CM_EVENT_MPA_REJECT:\n+\t\treturn \"CmMPA_REJECT\";\n+\tcase IRDMA_CM_EVENT_MPA_ESTABLISHED:\n+\t\treturn \"CmMPA_ESTABLISHED\";\n+\tcase IRDMA_CM_EVENT_CONNECTED:\n+\t\treturn \"CmConnected\";\n+\tcase IRDMA_CM_EVENT_RESET:\n+\t\treturn \"CmReset\";\n+\tcase IRDMA_CM_EVENT_ABORTED:\n+\t\treturn \"CmAborted\";\n+\tcase IRDMA_CM_EVENT_UNKNOWN:\n+\t\treturn \"none\";\n+\t}\n+\treturn \"Unknown\";\n+}\n+\n+const char *parse_cm_state(enum irdma_cm_node_state state)\n+{\n+\tswitch (state) {\n+\tcase IRDMA_CM_STATE_UNKNOWN:\n+\t\treturn \"UNKNOWN\";\n+\tcase IRDMA_CM_STATE_INITED:\n+\t\treturn \"INITED\";\n+\tcase IRDMA_CM_STATE_LISTENING:\n+\t\treturn \"LISTENING\";\n+\tcase IRDMA_CM_STATE_SYN_RCVD:\n+\t\treturn \"SYN_RCVD\";\n+\tcase IRDMA_CM_STATE_SYN_SENT:\n+\t\treturn \"SYN_SENT\";\n+\tcase IRDMA_CM_STATE_ONE_SIDE_ESTABLISHED:\n+\t\treturn \"ONE_SIDE_ESTABLISHED\";\n+\tcase IRDMA_CM_STATE_ESTABLISHED:\n+\t\treturn \"ESTABLISHED\";\n+\tcase IRDMA_CM_STATE_ACCEPTING:\n+\t\treturn \"ACCEPTING\";\n+\tcase IRDMA_CM_STATE_MPAREQ_SENT:\n+\t\treturn \"MPAREQ_SENT\";\n+\tcase IRDMA_CM_STATE_MPAREQ_RCVD:\n+\t\treturn \"MPAREQ_RCVD\";\n+\tcase IRDMA_CM_STATE_MPAREJ_RCVD:\n+\t\treturn \"MPAREJ_RECVD\";\n+\tcase IRDMA_CM_STATE_OFFLOADED:\n+\t\treturn \"OFFLOADED\";\n+\tcase IRDMA_CM_STATE_FIN_WAIT1:\n+\t\treturn \"FIN_WAIT1\";\n+\tcase IRDMA_CM_STATE_FIN_WAIT2:\n+\t\treturn \"FIN_WAIT2\";\n+\tcase IRDMA_CM_STATE_CLOSE_WAIT:\n+\t\treturn \"CLOSE_WAIT\";\n+\tcase IRDMA_CM_STATE_TIME_WAIT:\n+\t\treturn \"TIME_WAIT\";\n+\tcase IRDMA_CM_STATE_LAST_ACK:\n+\t\treturn \"LAST_ACK\";\n+\tcase IRDMA_CM_STATE_CLOSING:\n+\t\treturn \"CLOSING\";\n+\tcase IRDMA_CM_STATE_LISTENER_DESTROYED:\n+\t\treturn \"LISTENER_DESTROYED\";\n+\tcase IRDMA_CM_STATE_CLOSED:\n+\t\treturn \"CLOSED\";\n+\t}\n+\treturn (\"Bad state\");\n+}\ndiff --git a/drivers/infiniband/hw/irdma/trace.h b/drivers/infiniband/hw/irdma/trace.h\nnew file mode 100644\nindex 0000000..40cd65e\n--- /dev/null\n+++ b/drivers/infiniband/hw/irdma/trace.h\n@@ -0,0 +1,4 @@\n+/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */\n+/* Copyright (c) 2019, Intel Corporation. */\n+\n+#include \"trace_cm.h\"\ndiff --git a/drivers/infiniband/hw/irdma/trace_cm.h b/drivers/infiniband/hw/irdma/trace_cm.h\nnew file mode 100644\nindex 0000000..fe7cf45\n--- /dev/null\n+++ b/drivers/infiniband/hw/irdma/trace_cm.h\n@@ -0,0 +1,459 @@\n+/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */\n+/* Copyright (c) 2019, Intel Corporation. */\n+\n+#if !defined(__TRACE_CM_H) || defined(TRACE_HEADER_MULTI_READ)\n+#define __TRACE_CM_H\n+\n+#include <linux/tracepoint.h>\n+#include <linux/trace_seq.h>\n+\n+#include \"main.h\"\n+\n+const char *print_ip_addr(struct trace_seq *p, u32 *addr, u16 port, bool ivp4);\n+const char *parse_iw_event_type(enum iw_cm_event_type iw_type);\n+const char *parse_cm_event_type(enum irdma_cm_event_type cm_type);\n+const char *parse_cm_state(enum irdma_cm_node_state);\n+#define __print_ip_addr(addr, port, ipv4) print_ip_addr(p, addr, port, ipv4)\n+\n+#undef TRACE_SYSTEM\n+#define TRACE_SYSTEM irdma_cm\n+\n+TRACE_EVENT(irdma_create_listen,\n+\t TP_PROTO(struct irdma_device *iwdev, struct irdma_cm_info *cm_info),\n+\t TP_ARGS(iwdev, cm_info),\n+\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t __field(u16, lport)\n+\t\t\t __field(bool, ipv4)\n+\t\t ),\n+\t TP_fast_assign(__entry->iwdev = iwdev;\n+\t\t\t __entry->lport = cm_info->loc_port;\n+\t\t\t __entry->ipv4 = cm_info->ipv4;\n+\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t cm_info->loc_addr, 4);\n+\t\t ),\n+\t TP_printk(\"iwdev=%p loc: %s\",\n+\t\t __entry->iwdev,\n+\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t __entry->lport, __entry->ipv4)\n+\t\t )\n+);\n+\n+TRACE_EVENT(irdma_dec_refcnt_listen,\n+\t TP_PROTO(struct irdma_cm_listener *listener, void *caller),\n+\t TP_ARGS(listener, caller),\n+\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t __field(u32, refcnt)\n+\t\t __dynamic_array(u32, laddr, 4)\n+\t\t __field(u16, lport)\n+\t\t __field(bool, ipv4)\n+\t\t __field(void *, caller)\n+\t\t ),\n+\t TP_fast_assign(__entry->iwdev = listener->iwdev;\n+\t\t\t __entry->lport = listener->loc_port;\n+\t\t\t __entry->ipv4 = listener->ipv4;\n+\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t listener->loc_addr, 4);\n+\t\t ),\n+\t TP_printk(\"iwdev=%p caller=%pS loc: %s\",\n+\t\t __entry->iwdev,\n+\t\t __entry->caller,\n+\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t __entry->lport, __entry->ipv4)\n+\t\t )\n+);\n+\n+DECLARE_EVENT_CLASS(listener_template,\n+\t\t TP_PROTO(struct irdma_cm_listener *listener),\n+\t\t TP_ARGS(listener),\n+\t\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t\t __field(u16, lport)\n+\t\t\t\t __field(u16, vlan_id)\n+\t\t\t\t __field(bool, ipv4)\n+\t\t\t\t __field(enum irdma_cm_listener_state,\n+\t\t\t\t\t state)\n+\t\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t ),\n+\t\t TP_fast_assign(__entry->iwdev = listener->iwdev;\n+\t\t\t\t __entry->lport = listener->loc_port;\n+\t\t\t\t __entry->vlan_id = listener->vlan_id;\n+\t\t\t\t __entry->ipv4 = listener->ipv4;\n+\t\t\t\t __entry->state = listener->listener_state;\n+\t\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t\t listener->loc_addr, 4);\n+\t\t\t ),\n+\t\t TP_printk(\"iwdev=%p vlan=%d loc: %s\",\n+\t\t\t __entry->iwdev,\n+\t\t\t __entry->vlan_id,\n+\t\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t\t __entry->lport, __entry->ipv4)\n+\t\t\t )\n+);\n+\n+DEFINE_EVENT(listener_template, irdma_find_listener,\n+\t TP_PROTO(struct irdma_cm_listener *listener),\n+\t TP_ARGS(listener));\n+\n+DEFINE_EVENT(listener_template, irdma_del_multiple_qhash,\n+\t TP_PROTO(struct irdma_cm_listener *listener),\n+\t TP_ARGS(listener));\n+\n+TRACE_EVENT(irdma_negotiate_mpa_v2,\n+\t TP_PROTO(struct irdma_cm_node *cm_node),\n+\t TP_ARGS(cm_node),\n+\t TP_STRUCT__entry(__field(struct irdma_cm_node *, cm_node)\n+\t\t\t __field(u16, ord_size)\n+\t\t\t __field(u16, ird_size)\n+\t\t ),\n+\t TP_fast_assign(__entry->cm_node = cm_node;\n+\t\t\t __entry->ord_size = cm_node->ord_size;\n+\t\t\t __entry->ird_size = cm_node->ird_size;\n+\t\t ),\n+\t TP_printk(\"MPVA2 Negotiated cm_node=%p ORD:[%d], IRD:[%d]\",\n+\t\t __entry->cm_node,\n+\t\t __entry->ord_size,\n+\t\t __entry->ird_size\n+\t\t )\n+);\n+\n+DECLARE_EVENT_CLASS(tos_template,\n+\t\t TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),\n+\t\t TP_ARGS(iwdev, tos, user_pri),\n+\t\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t\t __field(u8, tos)\n+\t\t\t\t __field(u8, user_pri)\n+\t\t\t ),\n+\t\t TP_fast_assign(__entry->iwdev = iwdev;\n+\t\t\t\t __entry->tos = tos;\n+\t\t\t\t __entry->user_pri = user_pri;\n+\t\t\t ),\n+\t\t TP_printk(\"iwdev=%p TOS:[%d] UP:[%d]\",\n+\t\t\t __entry->iwdev,\n+\t\t\t __entry->tos,\n+\t\t\t __entry->user_pri\n+\t\t\t )\n+);\n+\n+DEFINE_EVENT(tos_template, irdma_listener_tos,\n+\t TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),\n+\t TP_ARGS(iwdev, tos, user_pri));\n+\n+DEFINE_EVENT(tos_template, irdma_dcb_tos,\n+\t TP_PROTO(struct irdma_device *iwdev, u8 tos, u8 user_pri),\n+\t TP_ARGS(iwdev, tos, user_pri));\n+\n+DECLARE_EVENT_CLASS(qhash_template,\n+\t\t TP_PROTO(struct irdma_device *iwdev,\n+\t\t\t struct irdma_cm_listener *listener,\n+\t\t\t char *dev_addr),\n+\t\t TP_ARGS(iwdev, listener, dev_addr),\n+\t\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t\t __field(u16, lport)\n+\t\t\t\t __field(u16, vlan_id)\n+\t\t\t\t __field(bool, ipv4)\n+\t\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t\t __dynamic_array(u32, mac, ETH_ALEN)\n+\t\t\t ),\n+\t\t TP_fast_assign(__entry->iwdev = iwdev;\n+\t\t\t\t __entry->lport = listener->loc_port;\n+\t\t\t\t __entry->vlan_id = listener->vlan_id;\n+\t\t\t\t __entry->ipv4 = listener->ipv4;\n+\t\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t\t listener->loc_addr, 4);\n+\t\t\t\t ether_addr_copy(__get_dynamic_array(mac),\n+\t\t\t\t\t\t dev_addr);\n+\t\t\t ),\n+\t\t TP_printk(\"iwdev=%p vlan=%d MAC=%pM loc: %s\",\n+\t\t\t __entry->iwdev,\n+\t\t\t __entry->vlan_id,\n+\t\t\t __get_dynamic_array(mac),\n+\t\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t\t __entry->lport, __entry->ipv4)\n+\t\t )\n+);\n+\n+DEFINE_EVENT(qhash_template, irdma_add_mqh_6,\n+\t TP_PROTO(struct irdma_device *iwdev,\n+\t\t struct irdma_cm_listener *listener, char *dev_addr),\n+\t TP_ARGS(iwdev, listener, dev_addr));\n+\n+DEFINE_EVENT(qhash_template, irdma_add_mqh_4,\n+\t TP_PROTO(struct irdma_device *iwdev,\n+\t\t struct irdma_cm_listener *listener, char *dev_addr),\n+\t TP_ARGS(iwdev, listener, dev_addr));\n+\n+TRACE_EVENT(irdma_addr_resolve,\n+\t TP_PROTO(struct irdma_device *iwdev, char *dev_addr),\n+\t TP_ARGS(iwdev, dev_addr),\n+\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t __dynamic_array(u8, mac, ETH_ALEN)\n+\t\t ),\n+\t TP_fast_assign(__entry->iwdev = iwdev;\n+\t\t ether_addr_copy(__get_dynamic_array(mac), dev_addr);\n+\t\t ),\n+\t TP_printk(\"iwdev=%p MAC=%pM\", __entry->iwdev,\n+\t\t __get_dynamic_array(mac)\n+\t\t )\n+);\n+\n+TRACE_EVENT(irdma_send_cm_event,\n+\t TP_PROTO(struct irdma_cm_node *cm_node, struct iw_cm_id *cm_id,\n+\t\t enum iw_cm_event_type type, int status, void *caller),\n+\t TP_ARGS(cm_node, cm_id, type, status, caller),\n+\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t __field(struct irdma_cm_node *, cm_node)\n+\t\t\t __field(struct iw_cm_id *, cm_id)\n+\t\t\t __field(u32, refcount)\n+\t\t\t __field(u16, lport)\n+\t\t\t __field(u16, rport)\n+\t\t\t __field(enum irdma_cm_node_state, state)\n+\t\t\t __field(bool, ipv4)\n+\t\t\t __field(u16, vlan_id)\n+\t\t\t __field(int, accel)\n+\t\t\t __field(enum iw_cm_event_type, type)\n+\t\t\t __field(int, status)\n+\t\t\t __field(void *, caller)\n+\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t __dynamic_array(u32, raddr, 4)\n+\t\t ),\n+\t TP_fast_assign(__entry->iwdev = cm_node->iwdev;\n+\t\t\t __entry->cm_node = cm_node;\n+\t\t\t __entry->cm_id = cm_id;\n+\t\t\t __entry->refcount = atomic_read(&cm_node->ref_count);\n+\t\t\t __entry->state = cm_node->state;\n+\t\t\t __entry->lport = cm_node->loc_port;\n+\t\t\t __entry->rport = cm_node->rem_port;\n+\t\t\t __entry->ipv4 = cm_node->ipv4;\n+\t\t\t __entry->vlan_id = cm_node->vlan_id;\n+\t\t\t __entry->accel = cm_node->accelerated;\n+\t\t\t __entry->type = type;\n+\t\t\t __entry->status = status;\n+\t\t\t __entry->caller = caller;\n+\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t cm_node->loc_addr, 4);\n+\t\t\t memcpy(__get_dynamic_array(raddr),\n+\t\t\t\t cm_node->rem_addr, 4);\n+\t\t ),\n+\t 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\",\n+\t\t __entry->iwdev,\n+\t\t __entry->caller,\n+\t\t __entry->cm_id,\n+\t\t __entry->cm_node,\n+\t\t __entry->refcount,\n+\t\t __entry->vlan_id,\n+\t\t __entry->accel,\n+\t\t parse_cm_state(__entry->state),\n+\t\t parse_iw_event_type(__entry->type),\n+\t\t __entry->status,\n+\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t __entry->lport, __entry->ipv4),\n+\t\t __print_ip_addr(__get_dynamic_array(raddr),\n+\t\t\t\t __entry->rport, __entry->ipv4)\n+\t\t )\n+);\n+\n+TRACE_EVENT(irdma_send_cm_event_no_node,\n+\t TP_PROTO(struct iw_cm_id *cm_id, enum iw_cm_event_type type,\n+\t\t int status, void *caller),\n+\t TP_ARGS(cm_id, type, status, caller),\n+\t TP_STRUCT__entry(__field(struct iw_cm_id *, cm_id)\n+\t\t\t __field(enum iw_cm_event_type, type)\n+\t\t\t __field(int, status)\n+\t\t\t __field(void *, caller)\n+\t\t ),\n+\t TP_fast_assign(__entry->cm_id = cm_id;\n+\t\t\t __entry->type = type;\n+\t\t\t __entry->status = status;\n+\t\t\t __entry->caller = caller;\n+\t\t ),\n+\t TP_printk(\"cm_id=%p caller=%pS event_type=%s status=%d\",\n+\t\t __entry->cm_id,\n+\t\t __entry->caller,\n+\t\t parse_iw_event_type(__entry->type),\n+\t\t __entry->status\n+\t\t )\n+);\n+\n+DECLARE_EVENT_CLASS(cm_node_template,\n+\t\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t\t enum irdma_cm_event_type type, void *caller),\n+\t\t TP_ARGS(cm_node, type, caller),\n+\t\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t\t __field(struct irdma_cm_node *, cm_node)\n+\t\t\t\t __field(u32, refcount)\n+\t\t\t\t __field(u16, lport)\n+\t\t\t\t __field(u16, rport)\n+\t\t\t\t __field(enum irdma_cm_node_state, state)\n+\t\t\t\t __field(bool, ipv4)\n+\t\t\t\t __field(u16, vlan_id)\n+\t\t\t\t __field(int, accel)\n+\t\t\t\t __field(enum irdma_cm_event_type, type)\n+\t\t\t\t __field(void *, caller)\n+\t\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t\t __dynamic_array(u32, raddr, 4)\n+\t\t\t ),\n+\t\t TP_fast_assign(__entry->iwdev = cm_node->iwdev;\n+\t\t\t\t __entry->cm_node = cm_node;\n+\t\t\t\t __entry->refcount = atomic_read(&cm_node->ref_count);\n+\t\t\t\t __entry->state = cm_node->state;\n+\t\t\t\t __entry->lport = cm_node->loc_port;\n+\t\t\t\t __entry->rport = cm_node->rem_port;\n+\t\t\t\t __entry->ipv4 = cm_node->ipv4;\n+\t\t\t\t __entry->vlan_id = cm_node->vlan_id;\n+\t\t\t\t __entry->accel = cm_node->accelerated;\n+\t\t\t\t __entry->type = type;\n+\t\t\t\t __entry->caller = caller;\n+\t\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t\t cm_node->loc_addr, 4);\n+\t\t\t\t memcpy(__get_dynamic_array(raddr),\n+\t\t\t\t\t cm_node->rem_addr, 4);\n+\t\t\t ),\n+\t\t TP_printk(\"iwdev=%p caller=%pS node=%p refcnt=%d vlan_id=%d accel=%d state=%s event_type=%s loc: %s rem: %s\",\n+\t\t\t __entry->iwdev,\n+\t\t\t __entry->caller,\n+\t\t\t __entry->cm_node,\n+\t\t\t __entry->refcount,\n+\t\t\t __entry->vlan_id,\n+\t\t\t __entry->accel,\n+\t\t\t parse_cm_state(__entry->state),\n+\t\t\t parse_cm_event_type(__entry->type),\n+\t\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t\t __entry->lport, __entry->ipv4),\n+\t\t\t __print_ip_addr(__get_dynamic_array(raddr),\n+\t\t\t\t\t __entry->rport, __entry->ipv4)\n+\t\t )\n+);\n+\n+DEFINE_EVENT(cm_node_template, irdma_create_event,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_accept,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_connect,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_reject,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_find_node,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_send_reset,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_rem_ref_cm_node,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+DEFINE_EVENT(cm_node_template, irdma_cm_event_handler,\n+\t TP_PROTO(struct irdma_cm_node *cm_node,\n+\t\t enum irdma_cm_event_type type, void *caller),\n+\t TP_ARGS(cm_node, type, caller));\n+\n+TRACE_EVENT(open_err_template,\n+\t TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),\n+\t TP_ARGS(cm_node, reset, caller),\n+\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t __field(struct irdma_cm_node *, cm_node)\n+\t\t\t __field(enum irdma_cm_node_state, state)\n+\t\t\t __field(bool, reset)\n+\t\t\t __field(void *, caller)\n+\t\t ),\n+\t TP_fast_assign(__entry->iwdev = cm_node->iwdev;\n+\t\t\t __entry->cm_node = cm_node;\n+\t\t\t __entry->state = cm_node->state;\n+\t\t\t __entry->reset = reset;\n+\t\t\t __entry->caller = caller;\n+\t\t ),\n+\t TP_printk(\"iwdev=%p caller=%pS node%p reset=%d state=%s\",\n+\t\t __entry->iwdev,\n+\t\t __entry->caller,\n+\t\t __entry->cm_node,\n+\t\t __entry->reset,\n+\t\t parse_cm_state(__entry->state)\n+\t\t )\n+);\n+\n+DEFINE_EVENT(open_err_template, irdma_active_open_err,\n+\t TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),\n+\t TP_ARGS(cm_node, reset, caller));\n+\n+DEFINE_EVENT(open_err_template, irdma_passive_open_err,\n+\t TP_PROTO(struct irdma_cm_node *cm_node, bool reset, void *caller),\n+\t TP_ARGS(cm_node, reset, caller));\n+\n+DECLARE_EVENT_CLASS(cm_node_ah_template,\n+\t\t TP_PROTO(struct irdma_cm_node *cm_node),\n+\t\t TP_ARGS(cm_node),\n+\t\t TP_STRUCT__entry(__field(struct irdma_device *, iwdev)\n+\t\t\t\t __field(struct irdma_cm_node *, cm_node)\n+\t\t\t\t __field(struct irdma_sc_ah *, ah)\n+\t\t\t\t __field(u32, refcount)\n+\t\t\t\t __field(u16, lport)\n+\t\t\t\t __field(u16, rport)\n+\t\t\t\t __field(enum irdma_cm_node_state, state)\n+\t\t\t\t __field(bool, ipv4)\n+\t\t\t\t __field(u16, vlan_id)\n+\t\t\t\t __field(int, accel)\n+\t\t\t\t __dynamic_array(u32, laddr, 4)\n+\t\t\t\t __dynamic_array(u32, raddr, 4)\n+\t\t\t ),\n+\t\t TP_fast_assign(__entry->iwdev = cm_node->iwdev;\n+\t\t\t\t __entry->cm_node = cm_node;\n+\t\t\t\t __entry->ah = cm_node->ah;\n+\t\t\t\t __entry->refcount = atomic_read(&cm_node->ref_count);\n+\t\t\t\t __entry->lport = cm_node->loc_port;\n+\t\t\t\t __entry->rport = cm_node->rem_port;\n+\t\t\t\t __entry->state = cm_node->state;\n+\t\t\t\t __entry->ipv4 = cm_node->ipv4;\n+\t\t\t\t __entry->vlan_id = cm_node->vlan_id;\n+\t\t\t\t __entry->accel = cm_node->accelerated;\n+\t\t\t\t memcpy(__get_dynamic_array(laddr),\n+\t\t\t\t\t cm_node->loc_addr, 4);\n+\t\t\t\t memcpy(__get_dynamic_array(raddr),\n+\t\t\t\t\t cm_node->rem_addr, 4);\n+\t\t\t ),\n+\t\t TP_printk(\"iwdev=%p node=%p ah=%p refcnt=%d vlan_id=%d accel=%d state=%s loc: %s rem: %s\",\n+\t\t\t __entry->iwdev,\n+\t\t\t __entry->cm_node,\n+\t\t\t __entry->ah,\n+\t\t\t __entry->refcount,\n+\t\t\t __entry->vlan_id,\n+\t\t\t __entry->accel,\n+\t\t\t parse_cm_state(__entry->state),\n+\t\t\t __print_ip_addr(__get_dynamic_array(laddr),\n+\t\t\t\t\t __entry->lport, __entry->ipv4),\n+\t\t\t __print_ip_addr(__get_dynamic_array(raddr),\n+\t\t\t\t\t __entry->rport, __entry->ipv4)\n+\t\t )\n+);\n+\n+DEFINE_EVENT(cm_node_ah_template, irdma_cm_free_ah,\n+\t TP_PROTO(struct irdma_cm_node *cm_node),\n+\t TP_ARGS(cm_node));\n+\n+DEFINE_EVENT(cm_node_ah_template, irdma_create_ah,\n+\t TP_PROTO(struct irdma_cm_node *cm_node),\n+\t TP_ARGS(cm_node));\n+\n+#endif /* __TRACE_CM_H */\n+\n+#undef TRACE_INCLUDE_PATH\n+#undef TRACE_INCLUDE_FILE\n+#define TRACE_INCLUDE_PATH .\n+#define TRACE_INCLUDE_FILE trace_cm\n+#include <trace/define_trace.h>\n", "prefixes": [ "rdma-next", "13/17" ] }