get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134869,
    "url": "http://patches.dpdk.org/api/patches/134869/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231205094539.1377142-2-rkudurumalla@marvell.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": "<20231205094539.1377142-2-rkudurumalla@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231205094539.1377142-2-rkudurumalla@marvell.com",
    "date": "2023-12-05T09:45:39",
    "name": "[2/2] net/cnxk: dump Rx descriptor info to file",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "cf4fc4876a5c1a4b003a65e10f3f034d8e5aed50",
    "submitter": {
        "id": 2289,
        "url": "http://patches.dpdk.org/api/people/2289/?format=api",
        "name": "Rakesh Kudurumalla",
        "email": "rkudurumalla@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231205094539.1377142-2-rkudurumalla@marvell.com/mbox/",
    "series": [
        {
            "id": 30452,
            "url": "http://patches.dpdk.org/api/series/30452/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30452",
            "date": "2023-12-05T09:45:38",
            "name": "[1/2] common/cnxk: support to dump debug info to file",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30452/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/134869/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/134869/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 0EA0C43676;\n\tTue,  5 Dec 2023 10:46:00 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 28B3A42E17;\n\tTue,  5 Dec 2023 10:45:53 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id E9B9242E09\n for <dev@dpdk.org>; Tue,  5 Dec 2023 10:45:50 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 3B59TjHn007242 for <dev@dpdk.org>; Tue, 5 Dec 2023 01:45:50 -0800",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3ut0e686va-2\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT)\n for <dev@dpdk.org>; Tue, 05 Dec 2023 01:45:50 -0800",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Tue, 5 Dec 2023 01:45:47 -0800",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Tue, 5 Dec 2023 01:45:47 -0800",
            "from localhost.localdomain (unknown [10.28.36.154])\n by maili.marvell.com (Postfix) with ESMTP id C371E3F70A6;\n Tue,  5 Dec 2023 01:45:45 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=3rEfE/zHOYl7Me0HDe46E9dZ3pIE2jUkhlRNmsiNouY=;\n b=JwKgmkc26k0KqUhrHgmLBg3zrPS8wGs8ww5FedDoLxKYTgYNju7suiUMGMl/IfV5+Hi/\n X45wfcUbpSPeahEMUSJt0QLlKBMXocwPfmASG6oT/sN5MbgpPNytVTenbXuLpjZizOlL\n AQ6qLNLttCxcm/3TtIuPNrGsKVK6OFIT4zYl7pui65jUPrW6qvSdH/G7fIprWi7XhRig\n 0NlZNnyIEPxxN183CTiqihj49axgC+99bfNTDFjIurki29MOV0EQqBEamjVoCt1EoXG5\n oYx4pVPtzePmG2xPf0RorsdJPD3ONZoeaMU7RXhLHNqqq5IrEZiiBW8do6Dg9KIn73DE AQ==",
        "From": "Rakesh Kudurumalla <rkudurumalla@marvell.com>",
        "To": "Nithin Dabilpuram <ndabilpuram@marvell.com>, Kiran Kumar K\n <kirankumark@marvell.com>, Sunil Kumar Kori <skori@marvell.com>, Satha Rao\n <skoteshwar@marvell.com>",
        "CC": "<dev@dpdk.org>, <jerinj@marvell.com>, Rakesh Kudurumalla\n <rkudurumalla@marvell.com>",
        "Subject": "[PATCH 2/2] net/cnxk: dump Rx descriptor info to file",
        "Date": "Tue, 5 Dec 2023 15:15:39 +0530",
        "Message-ID": "<20231205094539.1377142-2-rkudurumalla@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20231205094539.1377142-1-rkudurumalla@marvell.com>",
        "References": "<20231205094539.1377142-1-rkudurumalla@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "iv9Et-UcPPNn3-piUQAjdbGUTFIcYSrj",
        "X-Proofpoint-ORIG-GUID": "iv9Et-UcPPNn3-piUQAjdbGUTFIcYSrj",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26\n definitions=2023-12-05_04,2023-12-04_01,2023-05-22_02",
        "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"
    },
    "content": "Add support for eth_rx_descriptor_dump for cn9k and cn10k.\nThis patch dumps contents of receviced packet descriptor from CQ\nfor debug to file\n\nSigned-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>\n---\n drivers/net/cnxk/cn10k_ethdev.c | 67 +++++++++++++++++++++++++++++++++\n drivers/net/cnxk/cn9k_ethdev.c  | 53 ++++++++++++++++++++++++++\n 2 files changed, 120 insertions(+)",
    "diff": "diff --git a/drivers/net/cnxk/cn10k_ethdev.c b/drivers/net/cnxk/cn10k_ethdev.c\nindex 4a4e97287c..7eee9b1da8 100644\n--- a/drivers/net/cnxk/cn10k_ethdev.c\n+++ b/drivers/net/cnxk/cn10k_ethdev.c\n@@ -656,6 +656,72 @@ cn10k_nix_reassembly_conf_set(struct rte_eth_dev *eth_dev,\n \treturn rc;\n }\n \n+static int\n+cn10k_nix_rx_avail_get(struct cn10k_eth_rxq *rxq)\n+{\n+\tuint32_t qmask = rxq->qmask;\n+\tuint64_t reg, head, tail;\n+\tint available;\n+\n+\t/* Use LDADDA version to avoid reorder */\n+\treg = roc_atomic64_add_sync(rxq->wdata, rxq->cq_status);\n+\t/* CQ_OP_STATUS operation error */\n+\tif (reg & BIT_ULL(NIX_CQ_OP_STAT_OP_ERR) ||\n+\t    reg & BIT_ULL(NIX_CQ_OP_STAT_CQ_ERR))\n+\t\treturn 0;\n+\ttail = reg & 0xFFFFF;\n+\thead = (reg >> 20) & 0xFFFFF;\n+\tif (tail < head)\n+\t\tavailable = tail - head + qmask + 1;\n+\telse\n+\t\tavailable = tail - head;\n+\n+\treturn available;\n+}\n+\n+static int\n+cn10k_rx_descriptor_dump(const struct rte_eth_dev *eth_dev, uint16_t qid,\n+\t\t\t uint16_t offset, uint16_t num, FILE *file)\n+{\n+\tstruct cn10k_eth_rxq *rxq = eth_dev->data->rx_queues[qid];\n+\tconst uint64_t data_off = rxq->data_off;\n+\tconst uint32_t qmask = rxq->qmask;\n+\tconst uintptr_t desc = rxq->desc;\n+\tstruct cpt_parse_hdr_s *cpth;\n+\tuint32_t head = rxq->head;\n+\tstruct nix_cqe_hdr_s *cq;\n+\tuint16_t count = 0;\n+\tint availble_pkts;\n+\tuint64_t cq_w1;\n+\n+\tavailble_pkts = cn10k_nix_rx_avail_get(rxq);\n+\n+\tif ((offset + num - 1) >= availble_pkts) {\n+\t\tplt_err(\"Invalid BD num=%u\\n\", num);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\twhile (count < num) {\n+\t\tcq = (struct nix_cqe_hdr_s *)(desc + CQE_SZ(head) +\n+\t\t\t\t\t      count + offset);\n+\t\tcq_w1 = *((const uint64_t *)cq + 1);\n+\t\tif (cq_w1 & BIT(11)) {\n+\t\t\trte_iova_t buff = *((rte_iova_t *)((uint64_t *)cq + 9));\n+\t\t\tstruct rte_mbuf *mbuf =\n+\t\t\t\t(struct rte_mbuf *)(buff - data_off);\n+\t\t\tcpth = (struct cpt_parse_hdr_s *)\n+\t\t\t\t((uintptr_t)mbuf + (uint16_t)data_off);\n+\t\t\troc_cpt_parse_hdr_dump(file, cpth);\n+\t\t} else {\n+\t\t\troc_nix_cqe_dump(file, cq);\n+\t\t}\n+\n+\t\tcount++;\n+\t\thead &= qmask;\n+\t}\n+\treturn 0;\n+}\n+\n static int\n cn10k_nix_tm_mark_vlan_dei(struct rte_eth_dev *eth_dev, int mark_green,\n \t\t\t   int mark_yellow, int mark_red,\n@@ -794,6 +860,7 @@ nix_eth_dev_ops_override(void)\n \t\t\tcn10k_nix_reassembly_capability_get;\n \tcnxk_eth_dev_ops.ip_reassembly_conf_get = cn10k_nix_reassembly_conf_get;\n \tcnxk_eth_dev_ops.ip_reassembly_conf_set = cn10k_nix_reassembly_conf_set;\n+\tcnxk_eth_dev_ops.eth_rx_descriptor_dump = cn10k_rx_descriptor_dump;\n }\n \n /* Update platform specific tm ops */\ndiff --git a/drivers/net/cnxk/cn9k_ethdev.c b/drivers/net/cnxk/cn9k_ethdev.c\nindex bae4dda5e2..e88631a02e 100644\n--- a/drivers/net/cnxk/cn9k_ethdev.c\n+++ b/drivers/net/cnxk/cn9k_ethdev.c\n@@ -664,6 +664,58 @@ cn9k_nix_tm_mark_ip_dscp(struct rte_eth_dev *eth_dev, int mark_green,\n \treturn rc;\n }\n \n+static int\n+cn9k_nix_rx_avail_get(struct cn9k_eth_rxq *rxq)\n+{\n+\tuint32_t qmask = rxq->qmask;\n+\tuint64_t reg, head, tail;\n+\tint available;\n+\n+\t/* Use LDADDA version to avoid reorder */\n+\treg = roc_atomic64_add_sync(rxq->wdata, rxq->cq_status);\n+\t/* CQ_OP_STATUS operation error */\n+\tif (reg & BIT_ULL(NIX_CQ_OP_STAT_OP_ERR) ||\n+\t    reg & BIT_ULL(NIX_CQ_OP_STAT_CQ_ERR))\n+\t\treturn 0;\n+\ttail = reg & 0xFFFFF;\n+\thead = (reg >> 20) & 0xFFFFF;\n+\tif (tail < head)\n+\t\tavailable = tail - head + qmask + 1;\n+\telse\n+\t\tavailable = tail - head;\n+\n+\treturn available;\n+}\n+\n+static int\n+cn9k_rx_descriptor_dump(const struct rte_eth_dev *eth_dev, uint16_t qid,\n+\t\t\t uint16_t offset, uint16_t num, FILE *file)\n+{\n+\tstruct cn9k_eth_rxq *rxq = eth_dev->data->rx_queues[qid];\n+\tconst uint32_t qmask = rxq->qmask;\n+\tconst uintptr_t desc = rxq->desc;\n+\tuint32_t head = rxq->head;\n+\tstruct nix_cqe_hdr_s *cq;\n+\tuint16_t count = 0;\n+\tint availble_pkts;\n+\n+\tavailble_pkts = cn9k_nix_rx_avail_get(rxq);\n+\n+\tif ((offset + num - 1) >= availble_pkts) {\n+\t\tplt_err(\"Invalid BD num=%u\\n\", num);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\twhile (count < num) {\n+\t\tcq = (struct nix_cqe_hdr_s *)(desc + CQE_SZ(head) +\n+\t\t\t\t\t      count + offset);\n+\t\troc_nix_cqe_dump(file, cq);\n+\t\tcount++;\n+\t\thead &= qmask;\n+\t}\n+\treturn 0;\n+}\n+\n /* Update platform specific eth dev ops */\n static void\n nix_eth_dev_ops_override(void)\n@@ -687,6 +739,7 @@ nix_eth_dev_ops_override(void)\n \tcnxk_eth_dev_ops.mtr_ops_get = NULL;\n \tcnxk_eth_dev_ops.timesync_read_tx_timestamp =\n \t\tcn9k_nix_timesync_read_tx_timestamp;\n+\tcnxk_eth_dev_ops.eth_rx_descriptor_dump = cn9k_rx_descriptor_dump;\n }\n \n /* Update platform specific eth dev ops */\n",
    "prefixes": [
        "2/2"
    ]
}