get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 88988,
    "url": "http://patches.dpdk.org/api/patches/88988/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210312055819.52789-10-ajit.khaparde@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210312055819.52789-10-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210312055819.52789-10-ajit.khaparde@broadcom.com",
    "date": "2021-03-12T05:58:16",
    "name": "[v3,09/12] net/bnxt: handle echo request async message",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "fd7766e09f173b90dd251c90e0aba46f2b3932c5",
    "submitter": {
        "id": 501,
        "url": "http://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210312055819.52789-10-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 15626,
            "url": "http://patches.dpdk.org/api/series/15626/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=15626",
            "date": "2021-03-12T05:58:08",
            "name": "bnxt fixes",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/15626/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/88988/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/88988/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E11FEA0547;\n\tFri, 12 Mar 2021 06:59:26 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D33BA160891;\n\tFri, 12 Mar 2021 06:58:40 +0100 (CET)",
            "from mail-pf1-f173.google.com (mail-pf1-f173.google.com\n [209.85.210.173])\n by mails.dpdk.org (Postfix) with ESMTP id 6CCD21606BB\n for <dev@dpdk.org>; Fri, 12 Mar 2021 06:58:36 +0100 (CET)",
            "by mail-pf1-f173.google.com with SMTP id l7so1132793pfd.3\n for <dev@dpdk.org>; Thu, 11 Mar 2021 21:58:36 -0800 (PST)",
            "from localhost.localdomain ([192.19.223.252])\n by smtp.gmail.com with ESMTPSA id 186sm4413173pfb.143.2021.03.11.21.58.34\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Thu, 11 Mar 2021 21:58:34 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n s=google;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version; bh=yBezN7oDezwp0KWPGXTwSU6hFZnm2pEb3vh6UH/BnfM=;\n b=DXuNioVvOS7hlVHqV36m779UhSQZ49MSlBtv4fUTy/L4iin5V3ghxxxCZikLOqaAHe\n ypJhe6sIRNclVfT8mXo5zmSRMoeW7nj0ttiaYSjpyG074hmlrE5Nl3RtRFhepY7tkr49\n jxYhfL1O4nKncZSIYypWNYaEAFXJTnuUoMVY0=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version;\n bh=yBezN7oDezwp0KWPGXTwSU6hFZnm2pEb3vh6UH/BnfM=;\n b=Xa3xJmwdqlIVixlBaCgT7XpAEKFnotpSLAlIIvX7BRZuOtz84gvkk8X7duH6In+Va6\n M3oXHqW1x3WEYZX1/GUCTr5ROwlWk07baaT4kdCTkZom7H9eLTxmZfbgSbSj2Uv8cwmc\n WzQK5hlMBQeJjgGH0P6l9CRK7K7Zf2qSf7z0HtHwMKW8Cd+bar2bUTxW9MlH6q6Gk3wU\n Bvq+8Wf7R91OYmlHGL09yhJV7wfWNnDj6URhAYSc8pIX0ibz8eaVc6gFcIpc5+jcTwNa\n L31WOzrGF6gTCjPQm+KsZyyXt6yCZdJE2+vowB1I+4cJieBnX/c4Fpxn1d8y0mViKv7c\n xxLg==",
        "X-Gm-Message-State": "AOAM531OTMy3YhlHBCR9A2rPks2S9tB45LxC58zcGpoMR93/M9QXnw5T\n 9ziiyTSJdh/7Q3USBwRj+YM26Wh4SIfErfNoVqK4Q8k/1EOJdj4rcBgAYchOj3vMAOTf2JPnT7t\n imhcvN7jxOPiict44sPBdv4UwnrwUEPGnQl9MYICnnllN5vvoe373odSTFvU0VpqypQ==",
        "X-Google-Smtp-Source": "\n ABdhPJyBdsXMRUT2qbsB6Ls2aL0KES0JPueBCLY7kyane8r49ubzk2qq/AbxcoGQGcI/Z/5FlgowiQ==",
        "X-Received": "by 2002:a63:ce15:: with SMTP id y21mr10394500pgf.4.1615528715167;\n Thu, 11 Mar 2021 21:58:35 -0800 (PST)",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com, Kalesh AP <kalesh-anakkur.purayil@broadcom.com>,\n Lance Richardson <lance.richardson@broadcom.com>",
        "Date": "Thu, 11 Mar 2021 21:58:16 -0800",
        "Message-Id": "<20210312055819.52789-10-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.21.1 (Apple Git-122.3)",
        "In-Reply-To": "<20210312055819.52789-1-ajit.khaparde@broadcom.com>",
        "References": "\n <CACZ4nhtnEg+YVCB0dtH24Q0XywynXeeQgFfVUzAFiPco4ZaKew@mail.gmail.com>\n <20210312055819.52789-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Type": "multipart/signed; protocol=\"application/pkcs7-signature\";\n micalg=sha-256; boundary=\"0000000000003838bd05bd50972f\"",
        "X-Content-Filtered-By": "Mailman/MimeDel 2.1.29",
        "Subject": "[dpdk-dev] [PATCH v3 09/12] net/bnxt: handle echo request async\n message",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\n\nThis is a new async message that the firmware can send to check if it\ncan communicate with the driver. This is an added error detection\nscheme that firmware can use if it suspects errors in the PCIe\ninterface. When the driver receives this async message, it will reply\nback echoing some data in the async message. If the firmware is not\ngetting the reply with the proper data after some retries, error\nrecovery will kick in.\n\nSigned-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\nReviewed-by: Lance Richardson <lance.richardson@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt_cpr.c  | 11 +++++++++++\n drivers/net/bnxt/bnxt_hwrm.c | 22 ++++++++++++++++++++++\n drivers/net/bnxt/bnxt_hwrm.h |  4 ++++\n 3 files changed, 37 insertions(+)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c\nindex 20b4f929ba..2c7fd78c3d 100644\n--- a/drivers/net/bnxt/bnxt_cpr.c\n+++ b/drivers/net/bnxt/bnxt_cpr.c\n@@ -103,6 +103,7 @@ void bnxt_handle_async_event(struct bnxt *bp,\n \tuint16_t port_id = bp->eth_dev->data->port_id;\n \tstruct bnxt_error_recovery_info *info;\n \tuint32_t event_data;\n+\tuint32_t echo_req_data1, echo_req_data2;\n \n \tswitch (event_id) {\n \tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE:\n@@ -204,6 +205,16 @@ void bnxt_handle_async_event(struct bnxt *bp,\n \tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE:\n \t\tbnxt_process_default_vnic_change(bp, async_cmp);\n \t\tbreak;\n+\tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_ECHO_REQUEST:\n+\t\techo_req_data1 = rte_le_to_cpu_32(async_cmp->event_data1);\n+\t\techo_req_data2 = rte_le_to_cpu_32(async_cmp->event_data2);\n+\t\tPMD_DRV_LOG(INFO,\n+\t\t\t    \"Port %u: Received fw echo request: data1 %#x data2 %#x\\n\",\n+\t\t\t    port_id, echo_req_data1, echo_req_data2);\n+\t\tif (bp->recovery_info)\n+\t\t\tbnxt_hwrm_fw_echo_reply(bp, echo_req_data1,\n+\t\t\t\t\t\techo_req_data2);\n+\t\tbreak;\n \tdefault:\n \t\tPMD_DRV_LOG(DEBUG, \"handle_async_event id = 0x%x\\n\", event_id);\n \t\tbreak;\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex 37fa78e79f..9142119954 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -954,6 +954,9 @@ int bnxt_hwrm_func_driver_register(struct bnxt *bp)\n \t\treq.async_event_fwd[1] |=\n \t\trte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE);\n \n+\treq.async_event_fwd[2] |=\n+\t\trte_cpu_to_le_32(ASYNC_CMPL_EVENT_ID_ECHO_REQUEST);\n+\n \trc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);\n \n \tHWRM_CHECK_RESULT();\n@@ -5891,3 +5894,22 @@ int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp)\n \n \treturn rc;\n }\n+\n+int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1,\n+\t\t\t    uint32_t echo_req_data2)\n+{\n+\tstruct hwrm_func_echo_response_input req = {0};\n+\tstruct hwrm_func_echo_response_output *resp = bp->hwrm_cmd_resp_addr;\n+\tint rc;\n+\n+\tHWRM_PREP(&req, HWRM_FUNC_ECHO_RESPONSE, BNXT_USE_CHIMP_MB);\n+\treq.event_data1 = rte_cpu_to_le_32(echo_req_data1);\n+\treq.event_data2 = rte_cpu_to_le_32(echo_req_data2);\n+\n+\trc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);\n+\n+\tHWRM_CHECK_RESULT();\n+\tHWRM_UNLOCK();\n+\n+\treturn rc;\n+}\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h\nindex 449cb911e5..c47c2498e9 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.h\n+++ b/drivers/net/bnxt/bnxt_hwrm.h\n@@ -35,6 +35,8 @@ struct hwrm_func_qstats_output;\n \t(1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DEBUG_NOTIFICATION - 32))\n #define\tASYNC_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE\t\\\n \t(1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DEFAULT_VNIC_CHANGE - 32))\n+#define\tASYNC_CMPL_EVENT_ID_ECHO_REQUEST\t\\\n+\t(1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_ECHO_REQUEST - 64))\n \n #define HWRM_QUEUE_SERVICE_PROFILE_LOSSY \\\n \tHWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID0_SERVICE_PROFILE_LOSSY\n@@ -300,4 +302,6 @@ int bnxt_hwrm_first_vf_id_query(struct bnxt *bp, uint16_t fid,\n int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep);\n int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep);\n int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp);\n+int bnxt_hwrm_fw_echo_reply(struct bnxt *bp, uint32_t echo_req_data1,\n+\t\t\t    uint32_t echo_req_data2);\n #endif\n",
    "prefixes": [
        "v3",
        "09/12"
    ]
}