get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/1182397/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 1182397,
    "url": "http://patchwork.ozlabs.org/api/patches/1182397/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20191023182253.1115-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": "<20191023182253.1115-14-shiraz.saleem@intel.com>",
    "list_archive_url": null,
    "date": "2019-10-23T18:22:49",
    "name": "[rdma-nxt,13/16] RDMA/irdma: Add dynamic tracing for CM",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "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/20191023182253.1115-14-shiraz.saleem@intel.com/mbox/",
    "series": [
        {
            "id": 138160,
            "url": "http://patchwork.ozlabs.org/api/series/138160/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=138160",
            "date": "2019-10-23T18:22:36",
            "name": "Add unified Intel Ethernet RDMA driver (irdma)",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/138160/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1182397/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1182397/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; spf=pass (sender SPF authorized)\n\tsmtp.mailfrom=osuosl.org (client-ip=140.211.166.136;\n\thelo=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 46yzfD1YQRz9sNw\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 24 Oct 2019 05:38:28 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 7A32E228E8;\n\tWed, 23 Oct 2019 18:38:26 +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 xshUN4SQiKeB; Wed, 23 Oct 2019 18:38:18 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 02810228EF;\n\tWed, 23 Oct 2019 18:38:12 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id D36D71BF9B0\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 23 Oct 2019 18:38:07 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id C248E228EF\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 23 Oct 2019 18:38:07 +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 Jt5Fh1v3hvxq for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 23 Oct 2019 18:38:01 +0000 (UTC)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby silver.osuosl.org (Postfix) with ESMTPS id AB8E322BA3\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 23 Oct 2019 18:37:58 +0000 (UTC)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t23 Oct 2019 11:37:58 -0700",
            "from ssaleem-mobl.amr.corp.intel.com ([10.122.128.45])\n\tby fmsmga002.fm.intel.com with ESMTP; 23 Oct 2019 11:37:58 -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.68,221,1569308400\"; d=\"scan'208\";a=\"228225088\"",
        "From": "Shiraz Saleem <shiraz.saleem@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Wed, 23 Oct 2019 13:22:49 -0500",
        "Message-Id": "<20191023182253.1115-14-shiraz.saleem@intel.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20191023182253.1115-1-shiraz.saleem@intel.com>",
        "References": "<20191023182253.1115-1-shiraz.saleem@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH rdma-nxt 13/16] 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-nxt",
        "13/16"
    ]
}