get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 111547,
    "url": "https://patches.dpdk.org/api/patches/111547/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220520141512.2713384-4-ed.czeck@atomicrules.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20220520141512.2713384-4-ed.czeck@atomicrules.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220520141512.2713384-4-ed.czeck@atomicrules.com",
    "date": "2022-05-20T14:15:09",
    "name": "[v2,4/7] net/ark: update UDM functions for firmware update",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "3fc4fb6cd4371a4de7dc699b8f4eefb3b46b7c51",
    "submitter": {
        "id": 699,
        "url": "https://patches.dpdk.org/api/people/699/?format=api",
        "name": "Ed Czeck",
        "email": "ed.czeck@atomicrules.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220520141512.2713384-4-ed.czeck@atomicrules.com/mbox/",
    "series": [
        {
            "id": 23067,
            "url": "https://patches.dpdk.org/api/series/23067/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=23067",
            "date": "2022-05-20T14:15:06",
            "name": "[v2,1/7] devtools: add Atomic Rules acronyms for commit checks",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/23067/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/111547/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/111547/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 2C587A0503;\n\tFri, 20 May 2022 16:15:56 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 4E3FB42B6C;\n\tFri, 20 May 2022 16:15:43 +0200 (CEST)",
            "from mail-qt1-f181.google.com (mail-qt1-f181.google.com\n [209.85.160.181])\n by mails.dpdk.org (Postfix) with ESMTP id C8591427F2\n for <dev@dpdk.org>; Fri, 20 May 2022 16:15:39 +0200 (CEST)",
            "by mail-qt1-f181.google.com with SMTP id g3so6980565qtb.7\n for <dev@dpdk.org>; Fri, 20 May 2022 07:15:39 -0700 (PDT)",
            "from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net.\n [173.48.102.189]) by smtp.gmail.com with ESMTPSA id\n n71-20020a37404a000000b0069fc13ce202sm3029655qka.51.2022.05.20.07.15.37\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 20 May 2022 07:15:38 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=atomicrules-com.20210112.gappssmtp.com; s=20210112;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=7iFgoEcXRERHWZL9h+YW5C2eJLXIp6N39TKSKr4YOmU=;\n b=604lh6z+OljnVzEQvHiUf3W7a4qwobA1EeacWN9MTGahfD5U7ndTDmEc/VmyqnnlYo\n /L6a0NKHXaSpRGaSma9IWYCxkC+CsJJCTtWihQuq6EaOVov4/wLZ+JeLL8Dg2Ics0yYe\n EYpK2f3VUN1SuNUe8QHacdqkqhHbNdMUqu5GVddL83fLn5aH7XZ7Fo0p095icQ8tnwQO\n 8HXucQiuvY8H/5ye60QAGBvHOXlBfuBiiJPB+QRD58nHaFW6LuURofA0WwVuQzNfaKth\n glQ7c/zYmUObLFP82Y4cpMxacD4SEh/SEpXwnPBgyCLSQETAvkuMwwqN7QN+4X+qbCl9\n vNig==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=7iFgoEcXRERHWZL9h+YW5C2eJLXIp6N39TKSKr4YOmU=;\n b=Raqi/D+T2XS6d9QDwJ3kVME9qJjUZX2i8wv6pE0M7UNflONAaJX7H+7W8yoe/bYJ3A\n TIUqOET9+qJl3sNuxRjcDjTW2qmyVfzEqI6qcCf64HZ/zqtLyhbbRq9FLGZ4FgCsoQwQ\n 9MxZ9szaOzEb5Ry+fwnFdM2bgM422OlmGSXiKrbTiB20zMksbXNpo5PsZM+zSj0XnDTf\n TPLaMAT+cYs7qS+rB8OeSOx3eKmS1K9y/MadvJBg72LjKUDz6bQjVmPBNmZV/6ChMhNL\n UV486TeajK6gGLk6PITn3CendExd8+axm5cw33C7Y8fx1iP5UKoo3JfK3sEvSLVFvTKd\n 3QQA==",
        "X-Gm-Message-State": "AOAM532UazCxVstXlACiTVgO7Ihuc4yY5hHfaS3aKHQiSLsPXVEuw5s2\n 0OLBFl2KQLK4yh74j4VF8d8KBtGadaVhAwJT",
        "X-Google-Smtp-Source": "\n ABdhPJxHQbHkthI2SVI3F39L0rfE2HNDSyM5oAtjpKUCoGejXswD+feUKMDjCSJ/+o1vGITXyj64XA==",
        "X-Received": "by 2002:ac8:580b:0:b0:2f9:24b8:c6f8 with SMTP id\n g11-20020ac8580b000000b002f924b8c6f8mr885154qtg.591.1653056138832;\n Fri, 20 May 2022 07:15:38 -0700 (PDT)",
        "From": "Ed Czeck <ed.czeck@atomicrules.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org,\n Shepard Siegel <shepard.siegel@atomicrules.com>,\n John Miller <john.miller@atomicrules.com>",
        "Subject": "[PATCH v2 4/7] net/ark: update UDM functions for firmware update",
        "Date": "Fri, 20 May 2022 10:15:09 -0400",
        "Message-Id": "<20220520141512.2713384-4-ed.czeck@atomicrules.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220520141512.2713384-1-ed.czeck@atomicrules.com>",
        "References": "<20220502212232.1283-1-ed.czeck@atomicrules.com>\n <20220520141512.2713384-1-ed.czeck@atomicrules.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "new firmware version for UDM (Upstream Data Mover)\nremove device-level start, stop, and reset operations\nadd queue-based start, stop and reset as required by firmware\nremove performance structs as they are not in the firmware module\n\nSigned-off-by: Ed Czeck <ed.czeck@atomicrules.com>\n\n---\nv2: reword commit message\n---\n drivers/net/ark/ark_ethdev.c    |  34 +----------\n drivers/net/ark/ark_ethdev_rx.c |  38 +-----------\n drivers/net/ark/ark_ethdev_rx.h |   1 -\n drivers/net/ark/ark_udm.c       | 103 +++-----------------------------\n drivers/net/ark/ark_udm.h       |  73 +++++-----------------\n 5 files changed, 27 insertions(+), 222 deletions(-)",
    "diff": "diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c\nindex 07d1d2178d..8b4daa819b 100644\n--- a/drivers/net/ark/ark_ethdev.c\n+++ b/drivers/net/ark/ark_ethdev.c\n@@ -512,13 +512,6 @@ ark_config_device(struct rte_eth_dev *dev)\n \tif (ark_ddm_verify(ark->ddm.v))\n \t\treturn -1;\n \n-\t/* UDM */\n-\tif (ark_udm_reset(ark->udm.v)) {\n-\t\tARK_PMD_LOG(ERR, \"Unable to stop and reset UDM\\n\");\n-\t\treturn -1;\n-\t}\n-\t/* Keep in reset until the MPU are cleared */\n-\n \t/* MPU reset */\n \tmpu = ark->mpurx.v;\n \tnum_q = ark_api_num_queues(mpu);\n@@ -577,9 +570,6 @@ eth_ark_dev_start(struct rte_eth_dev *dev)\n \tint i;\n \n \t/* RX Side */\n-\t/* start UDM */\n-\tark_udm_start(ark->udm.v);\n-\n \tfor (i = 0; i < dev->data->nb_rx_queues; i++)\n \t\teth_ark_rx_start_queue(dev, i);\n \n@@ -627,7 +617,6 @@ eth_ark_dev_stop(struct rte_eth_dev *dev)\n \tuint16_t i;\n \tint status;\n \tstruct ark_adapter *ark = dev->data->dev_private;\n-\tstruct ark_mpu_t *mpu;\n \n \tif (ark->started == 0)\n \t\treturn 0;\n@@ -660,27 +649,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev)\n \t\t}\n \t}\n \n-\t/* STOP RX Side */\n-\t/* Stop UDM  multiple tries attempted */\n-\tfor (i = 0; i < 10; i++) {\n-\t\tstatus = ark_udm_stop(ark->udm.v, 1);\n-\t\tif (status == 0)\n-\t\t\tbreak;\n-\t}\n-\tif (status || i != 0) {\n-\t\tARK_PMD_LOG(ERR, \"UDM stop anomaly. status %d iter: %u. (%s)\\n\",\n-\t\t\t    status, i, __func__);\n-\t\tark_udm_dump(ark->udm.v, \"Stop anomaly\");\n-\n-\t\tmpu = ark->mpurx.v;\n-\t\tfor (i = 0; i < ark->rx_queues; i++) {\n-\t\t\tark_mpu_dump(mpu, \"UDM Stop anomaly\", i);\n-\t\t\tmpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET);\n-\t\t}\n-\t}\n-\n \tark_udm_dump_stats(ark->udm.v, \"Post stop\");\n-\tark_udm_dump_perf(ark->udm.v, \"Post stop\");\n \n \tfor (i = 0; i < dev->data->nb_rx_queues; i++)\n \t\teth_ark_rx_dump_queue(dev, i, __func__);\n@@ -708,10 +677,9 @@ eth_ark_dev_close(struct rte_eth_dev *dev)\n \t\t ark->user_data[dev->data->port_id]);\n \n \teth_ark_dev_stop(dev);\n-\teth_ark_udm_force_close(dev);\n \n \t/*\n-\t * TODO This should only be called once for the device during shutdown\n+\t * This should only be called once for the device during shutdown\n \t */\n \tif (ark->rqpacing)\n \t\tark_rqp_dump(ark->rqpacing);\ndiff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c\nindex 85e34d0bb8..cbc0416bc2 100644\n--- a/drivers/net/ark/ark_ethdev_rx.c\n+++ b/drivers/net/ark/ark_ethdev_rx.c\n@@ -200,13 +200,10 @@ eth_ark_dev_rx_queue_setup(struct rte_eth_dev *dev,\n \tqueue->mpu = RTE_PTR_ADD(ark->mpurx.v, qidx * ARK_MPU_QOFFSET);\n \n \t/* Configure UDM per queue */\n-\tark_udm_stop(queue->udm, 0);\n \tark_udm_configure(queue->udm,\n \t\t\t  RTE_PKTMBUF_HEADROOM,\n-\t\t\t  queue->dataroom,\n-\t\t\t  ARK_RX_WRITE_TIME_NS);\n-\tark_udm_stats_reset(queue->udm);\n-\tark_udm_stop(queue->udm, 0);\n+\t\t\t  queue->dataroom);\n+\tark_udm_queue_stats_reset(queue->udm);\n \n \t/* populate mbuf reserve */\n \tstatus = eth_ark_rx_seed_mbufs(queue);\n@@ -589,36 +586,6 @@ eth_rx_queue_stats_reset(void *vqueue)\n \tark_udm_queue_stats_reset(queue->udm);\n }\n \n-void\n-eth_ark_udm_force_close(struct rte_eth_dev *dev)\n-{\n-\tstruct ark_adapter *ark = dev->data->dev_private;\n-\tstruct ark_rx_queue *queue;\n-\tuint32_t index;\n-\tuint16_t i;\n-\n-\tif (!ark_udm_is_flushed(ark->udm.v)) {\n-\t\t/* restart the MPUs */\n-\t\tARK_PMD_LOG(NOTICE, \"UDM not flushed -- forcing flush\\n\");\n-\t\tfor (i = 0; i < dev->data->nb_rx_queues; i++) {\n-\t\t\tqueue = (struct ark_rx_queue *)dev->data->rx_queues[i];\n-\t\t\tif (queue == 0)\n-\t\t\t\tcontinue;\n-\n-\t\t\tark_mpu_start(queue->mpu);\n-\t\t\t/* Add some buffers */\n-\t\t\tindex = ARK_RX_MPU_CHUNK + queue->seed_index;\n-\t\t\tark_mpu_set_producer(queue->mpu, index);\n-\t\t}\n-\t\t/* Wait to allow data to pass */\n-\t\tusleep(100);\n-\n-\t\tARK_PMD_LOG(NOTICE, \"UDM forced flush attempt, stopped = %d\\n\",\n-\t\t\t    ark_udm_is_flushed(ark->udm.v));\n-\t}\n-\tark_udm_reset(ark->udm.v);\n-}\n-\n static void\n ark_ethdev_rx_dump(const char *name, struct ark_rx_queue *queue)\n {\n@@ -633,7 +600,6 @@ ark_ethdev_rx_dump(const char *name, struct ark_rx_queue *queue)\n \n \tark_mpu_dump(queue->mpu, name, queue->phys_qid);\n \tark_mpu_dump_setup(queue->mpu, queue->phys_qid);\n-\tark_udm_dump(queue->udm, name);\n \tark_udm_dump_setup(queue->udm, queue->phys_qid);\n }\n \ndiff --git a/drivers/net/ark/ark_ethdev_rx.h b/drivers/net/ark/ark_ethdev_rx.h\nindex f64b3dd137..2e3400fd2f 100644\n--- a/drivers/net/ark/ark_ethdev_rx.h\n+++ b/drivers/net/ark/ark_ethdev_rx.h\n@@ -27,6 +27,5 @@ void eth_rx_queue_stats_get(void *vqueue, struct rte_eth_stats *stats);\n void eth_rx_queue_stats_reset(void *vqueue);\n void eth_ark_rx_dump_queue(struct rte_eth_dev *dev, uint16_t queue_id,\n \t\t\t   const char *msg);\n-void eth_ark_udm_force_close(struct rte_eth_dev *dev);\n \n #endif\ndiff --git a/drivers/net/ark/ark_udm.c b/drivers/net/ark/ark_udm.c\nindex 9ebed89627..81b141ad0b 100644\n--- a/drivers/net/ark/ark_udm.c\n+++ b/drivers/net/ark/ark_udm.c\n@@ -12,6 +12,8 @@ static_assert(sizeof(struct ark_rx_meta) == 32, \"Unexpected struct size ark_rx_m\n int\n ark_udm_verify(struct ark_udm_t *udm)\n {\n+\tuint32_t idnum = udm->setup.idnum;\n+\tuint32_t vernum = udm->setup.vernum;\n \tif (sizeof(struct ark_udm_t) != ARK_UDM_EXPECT_SIZE) {\n \t\tARK_PMD_LOG(ERR,\n \t\t\t    \"ARK: UDM structure looks incorrect %d vs %zd\\n\",\n@@ -19,94 +21,30 @@ ark_udm_verify(struct ark_udm_t *udm)\n \t\treturn -1;\n \t}\n \n-\tif (udm->setup.const0 != ARK_UDM_CONST) {\n+\tif (idnum != ARK_UDM_MODID || vernum != ARK_UDM_MODVER) {\n \t\tARK_PMD_LOG(ERR,\n-\t\t\t    \"ARK: UDM module not found as expected 0x%08x\\n\",\n-\t\t\t    udm->setup.const0);\n+\t\t\t    \"ARK: UDM module not found as expected 0x%08x 0x%08x\\n\",\n+\t\t\t    idnum, vernum);\n \t\treturn -1;\n \t}\n \treturn 0;\n }\n \n-int\n-ark_udm_stop(struct ark_udm_t *udm, const int wait)\n-{\n-\tint cnt = 0;\n-\n-\tudm->setup.r0 = 0;\n-\tudm->cfg.command = 2;\n-\trte_wmb();\n-\n-\twhile (wait && (udm->cfg.stop_flushed & 0x01) == 0) {\n-\t\tif (cnt++ > 1000)\n-\t\t\treturn 1;\n-\n-\t\tusleep(10);\n-\t}\n-\treturn 0;\n-}\n-\n-int\n-ark_udm_reset(struct ark_udm_t *udm)\n-{\n-\tint status;\n-\n-\tstatus = ark_udm_stop(udm, 1);\n-\tif (status != 0) {\n-\t\tARK_PMD_LOG(NOTICE, \"%s  stop failed  doing forced reset\\n\",\n-\t\t\t      __func__);\n-\t\tudm->cfg.command = 4;\n-\t\tusleep(10);\n-\t\tudm->cfg.command = 3;\n-\t\tstatus = ark_udm_stop(udm, 0);\n-\t\tARK_PMD_LOG(INFO, \"%s  stop status %d post failure\"\n-\t\t\t      \" and forced reset\\n\",\n-\t\t\t      __func__, status);\n-\t} else {\n-\t\tudm->cfg.command = 3;\n-\t}\n-\n-\treturn status;\n-}\n-\n-void\n-ark_udm_start(struct ark_udm_t *udm)\n-{\n-\tudm->setup.r0 = 0x100;\n-\tudm->cfg.command = 1;\n-}\n-\n-void\n-ark_udm_stats_reset(struct ark_udm_t *udm)\n-{\n-\tudm->pcibp.pci_clear = 1;\n-\tudm->tlp_ps.tlp_clear = 1;\n-}\n-\n void\n ark_udm_configure(struct ark_udm_t *udm,\n \t\t  uint32_t headroom,\n-\t\t  uint32_t dataroom,\n-\t\t  uint32_t write_interval_ns)\n+\t\t  uint32_t dataroom)\n {\n \t/* headroom and data room are in DWords in the UDM */\n \tudm->cfg.dataroom = dataroom / 4;\n \tudm->cfg.headroom = headroom / 4;\n-\n-\t/* 4 NS period ns */\n-\tudm->rt_cfg.write_interval = write_interval_ns / 4;\n }\n \n void\n ark_udm_write_addr(struct ark_udm_t *udm, rte_iova_t addr)\n {\n \tudm->rt_cfg.hw_prod_addr = addr;\n-}\n-\n-int\n-ark_udm_is_flushed(struct ark_udm_t *udm)\n-{\n-\treturn (udm->cfg.stop_flushed & 0x01) != 0;\n+\tudm->rt_cfg.prod_idx = 0;\n }\n \n uint64_t\n@@ -131,11 +69,10 @@ void\n ark_udm_dump_stats(struct ark_udm_t *udm, const char *msg)\n {\n \tARK_PMD_LOG(INFO, \"UDM Stats: %s\"\n-\t\t      ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 \"\\n\",\n+\t\t      ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 \"\\n\",\n \t\t      msg,\n \t\t      \"Pkts Received\", udm->stats.rx_packet_count,\n \t\t      \"Pkts Finalized\", udm->stats.rx_sent_packets,\n-\t\t      \"Pkts Dropped\", udm->tlp.pkt_drop,\n \t\t      \"Bytes Count\", udm->stats.rx_byte_count,\n \t\t      \"MBuf Count\", udm->stats.rx_mbuf_count);\n }\n@@ -155,13 +92,6 @@ ark_udm_dump_queue_stats(struct ark_udm_t *udm, const char *msg, uint16_t qid)\n \t\t      \"MBuf Count\", udm->qstats.q_mbuf_count);\n }\n \n-void\n-ark_udm_dump(struct ark_udm_t *udm, const char *msg)\n-{\n-\tARK_PMD_LOG(DEBUG, \"UDM Dump: %s Stopped: %d\\n\", msg,\n-\t\t      udm->cfg.stop_flushed);\n-}\n-\n void\n ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id)\n {\n@@ -172,23 +102,6 @@ ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id)\n \t\t      \"prod_idx\", udm->rt_cfg.prod_idx);\n }\n \n-void\n-ark_udm_dump_perf(struct ark_udm_t *udm, const char *msg)\n-{\n-\tstruct ark_udm_pcibp_t *bp = &udm->pcibp;\n-\n-\tARK_PMD_LOG(INFO, \"UDM Performance %s\"\n-\t\t      ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32\n-\t\t      \"\\n\",\n-\t\t      msg,\n-\t\t      \"PCI Empty\", bp->pci_empty,\n-\t\t      \"PCI Q1\", bp->pci_q1,\n-\t\t      \"PCI Q2\", bp->pci_q2,\n-\t\t      \"PCI Q3\", bp->pci_q3,\n-\t\t      \"PCI Q4\", bp->pci_q4,\n-\t\t      \"PCI Full\", bp->pci_full);\n-}\n-\n void\n ark_udm_queue_stats_reset(struct ark_udm_t *udm)\n {\ndiff --git a/drivers/net/ark/ark_udm.h b/drivers/net/ark/ark_udm.h\nindex 1cbcd94a98..f0685c95c7 100644\n--- a/drivers/net/ark/ark_udm.h\n+++ b/drivers/net/ark/ark_udm.h\n@@ -32,19 +32,25 @@ struct ark_rx_meta {\n \n #define ARK_RX_WRITE_TIME_NS 2500\n #define ARK_UDM_SETUP 0\n-#define ARK_UDM_CONST2 0xbACECACE\n-#define ARK_UDM_CONST3 0x344d4455\n-#define ARK_UDM_CONST ARK_UDM_CONST3\n+#define ARK_UDM_MODID 0x4d445500\n+#define ARK_UDM_MODVER 0x37313232\n+\n struct ark_udm_setup_t {\n+\tunion {\n+\t\tchar id[4];\n+\t\tuint32_t idnum;\n+\t};\n+\tunion {\n+\t\tchar ver[4];\n+\t\tuint32_t vernum;\n+\t};\n \tuint32_t r0;\n-\tuint32_t r4;\n-\tvolatile uint32_t cycle_count;\n \tuint32_t const0;\n };\n \n #define ARK_UDM_CFG 0x010\n struct ark_udm_cfg_t {\n-\tvolatile uint32_t stop_flushed;\t/* RO */\n+\tuint32_t write_interval;\t/* 4ns cycles */\n \tvolatile uint32_t command;\n \tuint32_t dataroom;\n \tuint32_t headroom;\n@@ -74,45 +80,11 @@ struct ark_udm_queue_stats_t {\n \tuint32_t q_enable;\n };\n \n-#define ARK_UDM_TLP 0x0070\n-struct ark_udm_tlp_t {\n-\tvolatile uint64_t pkt_drop;\t/* global */\n-\tvolatile uint32_t tlp_q1;\n-\tvolatile uint32_t tlp_q2;\n-\tvolatile uint32_t tlp_q3;\n-\tvolatile uint32_t tlp_q4;\n-\tvolatile uint32_t tlp_full;\n-};\n-\n-#define ARK_UDM_PCIBP 0x00a0\n-struct ark_udm_pcibp_t {\n-\tvolatile uint32_t pci_clear;\n-\tvolatile uint32_t pci_empty;\n-\tvolatile uint32_t pci_q1;\n-\tvolatile uint32_t pci_q2;\n-\tvolatile uint32_t pci_q3;\n-\tvolatile uint32_t pci_q4;\n-\tvolatile uint32_t pci_full;\n-};\n-\n-#define ARK_UDM_TLP_PS 0x00bc\n-struct ark_udm_tlp_ps_t {\n-\tvolatile uint32_t tlp_clear;\n-\tvolatile uint32_t tlp_ps_min;\n-\tvolatile uint32_t tlp_ps_max;\n-\tvolatile uint32_t tlp_full_ps_min;\n-\tvolatile uint32_t tlp_full_ps_max;\n-\tvolatile uint32_t tlp_dw_ps_min;\n-\tvolatile uint32_t tlp_dw_ps_max;\n-\tvolatile uint32_t tlp_pldw_ps_min;\n-\tvolatile uint32_t tlp_pldw_ps_max;\n-};\n-\n #define ARK_UDM_RT_CFG 0x00e0\n struct ark_udm_rt_cfg_t {\n \trte_iova_t hw_prod_addr;\n-\tuint32_t write_interval;\t/* 4ns cycles */\n-\tvolatile uint32_t prod_idx;\t/* RO */\n+\tuint32_t reserved;\n+\tvolatile uint32_t prod_idx; /* Updated by HW */\n };\n \n /*  Consolidated structure */\n@@ -123,13 +95,8 @@ struct ark_udm_t {\n \tstruct ark_udm_cfg_t cfg;\n \tstruct ark_udm_stats_t stats;\n \tstruct ark_udm_queue_stats_t qstats;\n-\tuint8_t reserved1[(ARK_UDM_TLP - ARK_UDM_PQ) -\n+\tuint8_t reserved1[(ARK_UDM_RT_CFG - ARK_UDM_PQ) -\n \t\t\t  sizeof(struct ark_udm_queue_stats_t)];\n-\tstruct ark_udm_tlp_t tlp;\n-\tuint8_t reserved2[(ARK_UDM_PCIBP - ARK_UDM_TLP) -\n-\t\t\t  sizeof(struct ark_udm_tlp_t)];\n-\tstruct ark_udm_pcibp_t pcibp;\n-\tstruct ark_udm_tlp_ps_t tlp_ps;\n \tstruct ark_udm_rt_cfg_t rt_cfg;\n \tint8_t reserved3[(ARK_UDM_EXPECT_SIZE - ARK_UDM_RT_CFG) -\n \t\t\t sizeof(struct ark_udm_rt_cfg_t)];\n@@ -137,22 +104,14 @@ struct ark_udm_t {\n \n \n int ark_udm_verify(struct ark_udm_t *udm);\n-int ark_udm_stop(struct ark_udm_t *udm, int wait);\n-void ark_udm_start(struct ark_udm_t *udm);\n-int ark_udm_reset(struct ark_udm_t *udm);\n void ark_udm_configure(struct ark_udm_t *udm,\n \t\t       uint32_t headroom,\n-\t\t       uint32_t dataroom,\n-\t\t       uint32_t write_interval_ns);\n+\t\t       uint32_t dataroom);\n void ark_udm_write_addr(struct ark_udm_t *udm, rte_iova_t addr);\n-void ark_udm_stats_reset(struct ark_udm_t *udm);\n void ark_udm_dump_stats(struct ark_udm_t *udm, const char *msg);\n void ark_udm_dump_queue_stats(struct ark_udm_t *udm, const char *msg,\n \t\t\t      uint16_t qid);\n-void ark_udm_dump(struct ark_udm_t *udm, const char *msg);\n-void ark_udm_dump_perf(struct ark_udm_t *udm, const char *msg);\n void ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id);\n-int ark_udm_is_flushed(struct ark_udm_t *udm);\n \n /* Per queue data */\n uint64_t ark_udm_dropped(struct ark_udm_t *udm);\n",
    "prefixes": [
        "v2",
        "4/7"
    ]
}