From patchwork Tue Jun 7 15:49:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112478 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 6365AA054D; Tue, 7 Jun 2022 17:49:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4BC434021D; Tue, 7 Jun 2022 17:49:32 +0200 (CEST) Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) by mails.dpdk.org (Postfix) with ESMTP id 8221640156 for ; Tue, 7 Jun 2022 17:49:30 +0200 (CEST) Received: by mail-qk1-f176.google.com with SMTP id n197so6440563qke.1 for ; Tue, 07 Jun 2022 08:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AovUxhlMuxecUWzUvem8DwMtRGvHy0RWV/BoNMkWIW4=; b=Ha41H4/W+9Uv+GVtPjATpOs7J0UHBdxN7eHYPEYgx1iqonwA3fv9AKJJPEHUQBWOu4 meLyjU4x5py1kFzMBaPJcNh/p5B7coLMvlvRpeX6LvMCu9vBCcwjQq40fofguwjNb/nO DGXNy7fqR5LFXe3eBqQYQq5jP3P8mMj0doJ61MLgINrxW+QEmGWcoOS+sLL4fqEszFIG SRyI5PVSmlP1viJMWgdgwp2R15O38OnXmmqW8OIIZaZAeb0iqETkVdWsltBITdiustF2 ng2Gv9SEah1ZVSovDWkyRPoLsZ85qcqnQfDSlNe8lFVkKBOS88EO4AYx2gf9baQ8EvPo Vxaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AovUxhlMuxecUWzUvem8DwMtRGvHy0RWV/BoNMkWIW4=; b=3hPxFlG+6da6ggVc2U4QRyskwqnRiK/NeATtzSZ/ErvWt1qZhd/Ljm0MVF7s1l7nP/ h3GPhEBTxWidVp+dvPXGy6bKMpFi6kcxE+HOzuUsh0jmzvHEsfAnktdB7xfm13bTFqoR IYpa3ZGkUyNi2ZpY4sPQ+xfGSEBtwheFnsTl4W3k80dSYrSfT+QSd1Fruj8WtEFbDNxR nyZDjK5KwnjFjPBx8RFyMd5p+XcGoJQ2h6JKXCwPhw/CIfDJnDF998O3siJEAc4qUEW9 uqWq+fI6a/1MZ24i1VC1kq2MIZvgxgOmXx87K9NdUUNcd+bc3KiiamhpbvS7zl+Q7ncy /XuA== X-Gm-Message-State: AOAM532LckvdVcpOwtyB4YRpZGAMACLfR4NraFZL5V8Qn6QVDyyF3jMX bE1CKhZLUUa2RcJghxQzLMaOYRYulPPjtg== X-Google-Smtp-Source: ABdhPJx6AAH9gdxVawvjEi4Aa+5iSsrF9ayAFGuUClSMrVDCHzJhhM93dNCIRpzkkjAw7h+qdaRKjg== X-Received: by 2002:a05:620a:28c6:b0:6a5:7f03:4377 with SMTP id l6-20020a05620a28c600b006a57f034377mr20062534qkp.118.1654616969625; Tue, 07 Jun 2022 08:49:29 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:28 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Thomas Monjalon Subject: [PATCH v3 1/7] devtools: add Atomic Rules acronyms for commit checks Date: Tue, 7 Jun 2022 11:49:11 -0400 Message-Id: <20220607154917.1871118-1-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220502212232.1283-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DDM -> Downstream Data Mover MPU -> Mbuf Prefetch Unit UDM -> Upstream Data Mover Signed-off-by: Ed Czeck --- devtools/words-case.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devtools/words-case.txt b/devtools/words-case.txt index bc33470532..fa92ab273e 100644 --- a/devtools/words-case.txt +++ b/devtools/words-case.txt @@ -11,6 +11,7 @@ CPT CQ CRC DCB +DDM DevX DMA eCPRI @@ -46,6 +47,7 @@ LSC MAC MCAM MPLS +MPU MSI MSI-X MSS @@ -90,6 +92,7 @@ TPID TSO TTL Tx +UDM UDP ULP vDPA From patchwork Tue Jun 7 15:49:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112479 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id BF450A054D; Tue, 7 Jun 2022 17:49:36 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3809841611; Tue, 7 Jun 2022 17:49:35 +0200 (CEST) Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by mails.dpdk.org (Postfix) with ESMTP id 0651E415D7 for ; Tue, 7 Jun 2022 17:49:34 +0200 (CEST) Received: by mail-qk1-f169.google.com with SMTP id 68so5056961qkk.9 for ; Tue, 07 Jun 2022 08:49:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=a2piXELjlrhFfZYmCRutqk89uT5fUgz1qymRdV0Cwq0=; b=EwDlN5OcFt/lZk3sMhSjTGzKHiGSgkl9we4YvdFmvIr/Gqq/f4LqbHbL1kIlgSxK7C X+v7r5xHCnTMbyZO7B0SMKEB76Upx0mG5VDX+pLC/e2bn+O+AdHk46KyJKe3ETb33Smh BoXZ9eCR58dYDXpVDH9b+CSMTH+R94RSBEMWYLHSdzc/0bQHZRYH2BkPN4suUN02BT2c TbYOrkW9kDDS6KB7INJYrqcwwoWc7GOYvctHGPf/uD+Dc+4xTqyCm0kro1EQu3m1a2VJ EICzq7DpkAu/tcLRx+6+LzQTmJnHrUEYbxqHg1eKvUf+9xYnHfmdvbhZiXgZIR+LL0r0 yi6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=a2piXELjlrhFfZYmCRutqk89uT5fUgz1qymRdV0Cwq0=; b=8IgYkZldkjxyUqo1EbvL7fov9sJsFeJMxcZkSrYRH00nGqlXxfgElw0kMWAZvdNsdr 6alCKJQZcrxo1fFuDASpN6Z+rVIEkDVqGECfcKuu8BidmQ9ES14apmS+lv97nZPnXCRO mWdhmPfHDmoiBwlgeC+ep08FJ4WWwWslP74bbYrMoTUWzWNGdJWmOu6uGdhgI0HnMZ1N YHPKp9v7ivRImr3ukoeXoyaipmooShlOv+g7lhC+QqjImdDr6Ha+hXFrRXoZdS88OzZl pj7upZXSTEq0dzYt9juvY7/SDxoGuXHAl1o+aCJDkKnvKTr3nOSCXMsEnSNyzRoLKYgu ADXw== X-Gm-Message-State: AOAM530BE5IWxPsQH5HTGtYnc7D0qS5e5e+i7hKd7rMJsa2e1UTdjWeK eVDvZ/1dAzEV5HQswJNpGOLeNgM6cpfM2w== X-Google-Smtp-Source: ABdhPJwXJUoVXHH9QvUKuiIJ2V3/E9ZdGHxzjRJ84wBay++De2nG4bSDeN0ZYtlDYbbpBk7CkEx1vA== X-Received: by 2002:a37:bc03:0:b0:6a3:67d2:a7b4 with SMTP id m3-20020a37bc03000000b006a367d2a7b4mr20091472qkf.337.1654616973027; Tue, 07 Jun 2022 08:49:33 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:32 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 2/7] net/ark: update MPU functions for firmware update Date: Tue, 7 Jun 2022 11:49:12 -0400 Message-Id: <20220607154917.1871118-2-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org new firmware version for MPU (Mbuf Prefetch Unit) remove device-level global operations remove ark_mpu_reset_stats function Signed-off-by: Ed Czeck --- v2: - document version compatibility between firmware and DPDK - reword commit message --- doc/guides/nics/ark.rst | 15 +++++++++++++++ drivers/net/ark/ark_ethdev.c | 2 -- drivers/net/ark/ark_ethdev_rx.c | 4 ---- drivers/net/ark/ark_mpu.c | 21 ++++----------------- drivers/net/ark/ark_mpu.h | 29 ++--------------------------- 5 files changed, 21 insertions(+), 50 deletions(-) diff --git a/doc/guides/nics/ark.rst b/doc/guides/nics/ark.rst index c965406a7b..29c0a07d60 100644 --- a/doc/guides/nics/ark.rst +++ b/doc/guides/nics/ark.rst @@ -300,6 +300,21 @@ ARK PMD supports the following Arkville RTL PCIe instances including: * ``1d6c:101e`` - AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] * ``1d6c:101f`` - AR-TK242 [2x100GbE Packet Capture Device] +DPDK and Arkville Firmware Versioning +------------------------------------- + +Arkville's firmware and its PMD have version dependencies which must +be stepped together at certain releases. PMD code ensures the versions are +compatible. The following lists shows where version compatible steps have +occurred. If other combinations are required, please contact Atomic Rules +support. + +* DPDK 22.07 requires Arkville 22.07. +* DPDK 22.03 requires Arkville 22.03. +* DPDK 21.05 requires Arkville 21.05. +* DPDK 18.11 requires Arkville 18.11. +* DPDK 17.05 requires Arkville 17.05 -- initial version. + Supported Operating Systems --------------------------- diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index 76b88c62d0..c0578b85ce 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -524,7 +524,6 @@ ark_config_device(struct rte_eth_dev *dev) num_q = ark_api_num_queues(mpu); ark->rx_queues = num_q; for (i = 0; i < num_q; i++) { - ark_mpu_reset(mpu); mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); } @@ -536,7 +535,6 @@ ark_config_device(struct rte_eth_dev *dev) num_q = ark_api_num_queues(mpu); ark->tx_queues = num_q; for (i = 0; i < num_q; i++) { - ark_mpu_reset(mpu); mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); } diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c index 0fbb2603db..85e34d0bb8 100644 --- a/drivers/net/ark/ark_ethdev_rx.c +++ b/drivers/net/ark/ark_ethdev_rx.c @@ -91,9 +91,6 @@ eth_ark_rx_hw_setup(struct rte_eth_dev *dev, ark_udm_write_addr(queue->udm, phys_addr_prod_index); - /* advance the valid pointer, but don't start until the queue starts */ - ark_mpu_reset_stats(queue->mpu); - /* The seed is the producer index for the HW */ ark_mpu_set_producer(queue->mpu, queue->seed_index); dev->data->rx_queue_state[rx_queue_idx] = RTE_ETH_QUEUE_STATE_STOPPED; @@ -589,7 +586,6 @@ eth_rx_queue_stats_reset(void *vqueue) if (queue == 0) return; - ark_mpu_reset_stats(queue->mpu); ark_udm_queue_stats_reset(queue->udm); } diff --git a/drivers/net/ark/ark_mpu.c b/drivers/net/ark/ark_mpu.c index b8e94b6ed3..9d5ee7841b 100644 --- a/drivers/net/ark/ark_mpu.c +++ b/drivers/net/ark/ark_mpu.c @@ -24,10 +24,10 @@ ark_mpu_verify(struct ark_mpu_t *mpu, uint32_t obj_size) { uint32_t version; - version = mpu->id.vernum & 0x0000fF00; - if ((mpu->id.idnum != 0x2055504d) || - (mpu->hw.obj_size != obj_size) || - (version != 0x00003100)) { + version = mpu->id.vernum; + if (mpu->id.idnum != ARK_MPU_MODID || + version != ARK_MPU_MODVER || + mpu->hw.obj_size != obj_size) { ARK_PMD_LOG(ERR, " MPU module not found as expected %08x" " \"%c%c%c%c %c%c%c%c\"\n", @@ -79,16 +79,9 @@ ark_mpu_reset(struct ark_mpu_t *mpu) mpu->cfg.command = MPU_CMD_FORCE_RESET; usleep(10); } - ark_mpu_reset_stats(mpu); return mpu->cfg.command != MPU_CMD_IDLE; } -void -ark_mpu_reset_stats(struct ark_mpu_t *mpu) -{ - mpu->stats.pci_request = 1; /* reset stats */ -} - int ark_mpu_configure(struct ark_mpu_t *mpu, rte_iova_t ring, uint32_t ring_size, int is_tx) @@ -118,12 +111,6 @@ ark_mpu_dump(struct ark_mpu_t *mpu, const char *code, uint16_t qid) ARK_PMD_LOG(DEBUG, "MPU: %s Q: %3u sw_prod %u, hw_cons: %u\n", code, qid, mpu->cfg.sw_prod_index, mpu->cfg.hw_cons_index); - ARK_PMD_LOG(DEBUG, "MPU: %s state: %d count %d, reserved %d" - "\n", - code, - mpu->debug.state, mpu->debug.count, - mpu->debug.reserved - ); } void diff --git a/drivers/net/ark/ark_mpu.h b/drivers/net/ark/ark_mpu.h index 92c3e67c86..9d2b70d35f 100644 --- a/drivers/net/ark/ark_mpu.h +++ b/drivers/net/ark/ark_mpu.h @@ -15,6 +15,8 @@ * there is minimal documentation. */ +#define ARK_MPU_MODID 0x2055504d +#define ARK_MPU_MODVER 0x37313232 /* * MPU hardware structures * These are overlay structures to a memory mapped FPGA device. These @@ -64,26 +66,6 @@ enum ARK_MPU_COMMAND { MPU_COMMAND_LIMIT = 0xfFFFFFFF }; -#define ARK_MPU_STATS 0x080 -struct ark_mpu_stats_t { - volatile uint64_t pci_request; - volatile uint64_t q_empty; - volatile uint64_t q_q1; - volatile uint64_t q_q2; - volatile uint64_t q_q3; - volatile uint64_t q_q4; - volatile uint64_t q_full; -}; - -#define ARK_MPU_DEBUG 0x0C0 -struct ark_mpu_debug_t { - volatile uint32_t state; - uint32_t reserved; - volatile uint32_t count; - volatile uint32_t take; - volatile uint32_t peek[4]; -}; - /* Consolidated structure */ struct ark_mpu_t { struct ark_mpu_id_t id; @@ -93,12 +75,6 @@ struct ark_mpu_t { uint8_t reserved1[(ARK_MPU_CFG - ARK_MPU_HW) - sizeof(struct ark_mpu_hw_t)]; struct ark_mpu_cfg_t cfg; - uint8_t reserved2[(ARK_MPU_STATS - ARK_MPU_CFG) - - sizeof(struct ark_mpu_cfg_t)]; - struct ark_mpu_stats_t stats; - uint8_t reserved3[(ARK_MPU_DEBUG - ARK_MPU_STATS) - - sizeof(struct ark_mpu_stats_t)]; - struct ark_mpu_debug_t debug; }; uint16_t ark_api_num_queues(struct ark_mpu_t *mpu); @@ -113,7 +89,6 @@ int ark_mpu_configure(struct ark_mpu_t *mpu, rte_iova_t ring, void ark_mpu_dump(struct ark_mpu_t *mpu, const char *msg, uint16_t idx); void ark_mpu_dump_setup(struct ark_mpu_t *mpu, uint16_t qid); -void ark_mpu_reset_stats(struct ark_mpu_t *mpu); /* this action is in a performance critical path */ static inline void From patchwork Tue Jun 7 15:49:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112480 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id A9B86A054D; Tue, 7 Jun 2022 17:49:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 22FD5427F0; Tue, 7 Jun 2022 17:49:37 +0200 (CEST) Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by mails.dpdk.org (Postfix) with ESMTP id 1A294427EC for ; Tue, 7 Jun 2022 17:49:36 +0200 (CEST) Received: by mail-qk1-f175.google.com with SMTP id x75so10099934qkb.12 for ; Tue, 07 Jun 2022 08:49:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q9Dn+wGT3kiAbF8yQPoWzy9aKuOLT2R7YHnT57TunLQ=; b=IMbu2TFXNDVjEgG9Q5GjCckpQIV1GP7iU62sBThLBIvB4DfWsSwWCSYh+sBuvQ0PZ5 w/sV+NkYLCnuw42qUoKGuS2EirA+hiFyZ5hf73uzVg0h6+/dVIq9yZfW4bCiPXyqQ/7g Q+gsZImWTjM99esS7Rxtny4dTEoUGrOzjykVXjYFwR2qHxXHXOkm8hTHIUhUH0wE1SBv huKFv61BbmHoew63zapq041WUJwvbMPwSuuUcENA4YVbX+nRJH4Yi9hxZ3KX4GeJ5/sV 3oockiXTEaCXopUGPpyB9CaaEBjDZr7MUuK9xxpAdQRA+ErxnYR+5uOhgJB4XGpC9+HJ 9rJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q9Dn+wGT3kiAbF8yQPoWzy9aKuOLT2R7YHnT57TunLQ=; b=g/4fdJcI3/9rdA7ZaVbty9IG/tIGJ9UEBzUO5bp6dYVoucNS6mPeqQvV+xIIKEaH/n b7tfKjrZevE7P/eYH+7Ht2BTAYLVS7cqvixA3zy/eci6qawYlv8YVlzETF4g/qPeXcVY gTuYjhy3rM7cQr2SVI+x/NMMZaWBeKSkeVnmn3sged6B/X2OHwiEHqCO0GXe07djaXLD JQYYV2FuJ93kD/DUBEWTMqHU1Z9QfUfViHq+WKqNkHcR9oyCT46JS0DP4ojMFvmSLijg 04i9VCHEDJ3cAuPoI9huO6wb+vGbmXMM/OukFdm2FAKOvqy8X9MhqrmPfi87pwllc4g5 9c0g== X-Gm-Message-State: AOAM533cEkGGskOz4zVuJ/xFQi/DVk4MXKwd4UGgD6gRnzGb3D/zz87S lSY4MPuSoOZGepfu2214U2rEj3MnIZu9aQ== X-Google-Smtp-Source: ABdhPJyGAYM0g8dOYlji6Ga5YrtscMjAkaB7tUVm8E5yEmPzkpPAqbZJANlsXAS94ildxl38V1K0DQ== X-Received: by 2002:a05:620a:2442:b0:6a5:a0ac:ab3a with SMTP id h2-20020a05620a244200b006a5a0acab3amr20439581qkn.32.1654616975067; Tue, 07 Jun 2022 08:49:35 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:34 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 3/7] net/ark: update DDM functions for firmware update Date: Tue, 7 Jun 2022 11:49:13 -0400 Message-Id: <20220607154917.1871118-3-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org new firmware version for DDM (Downstream Data Mover) remove device-level start, stop, and reset operations add queue-based start, stop and reset as required by firmware Signed-off-by: Ed Czeck --- v2: reword commit message --- drivers/net/ark/ark_ddm.c | 80 +++++------------------------- drivers/net/ark/ark_ddm.h | 86 +++++++++------------------------ drivers/net/ark/ark_ethdev.c | 33 ------------- drivers/net/ark/ark_ethdev_tx.c | 35 +++----------- 4 files changed, 40 insertions(+), 194 deletions(-) diff --git a/drivers/net/ark/ark_ddm.c b/drivers/net/ark/ark_ddm.c index b16c739d50..eb88349b7b 100644 --- a/drivers/net/ark/ark_ddm.c +++ b/drivers/net/ark/ark_ddm.c @@ -14,95 +14,45 @@ int ark_ddm_verify(struct ark_ddm_t *ddm) { uint32_t hw_const; + uint32_t hw_ver; if (sizeof(struct ark_ddm_t) != ARK_DDM_EXPECTED_SIZE) { ARK_PMD_LOG(ERR, "DDM structure looks incorrect %d vs %zd\n", ARK_DDM_EXPECTED_SIZE, sizeof(struct ark_ddm_t)); return -1; } - hw_const = ddm->cfg.const0; - if (hw_const == ARK_DDM_CONST3) + hw_const = ddm->cfg.idnum; + hw_ver = ddm->cfg.vernum; + if (hw_const == ARK_DDM_MODID && hw_ver == ARK_DDM_MODVER) return 0; - if (hw_const == ARK_DDM_CONST1) { - ARK_PMD_LOG(ERR, - "ARK: DDM module is version 1, " - "PMD expects version 2\n"); - return -1; - } - - if (hw_const == ARK_DDM_CONST2) { - ARK_PMD_LOG(ERR, - "ARK: DDM module is version 2, " - "PMD expects version 3\n"); - return -1; - } ARK_PMD_LOG(ERR, - "ARK: DDM module not found as expected 0x%08x\n", - ddm->cfg.const0); + "ARK: DDM module not found as expected" + " id: %08x ver: %08x\n", + hw_const, hw_ver); return -1; } void -ark_ddm_start(struct ark_ddm_t *ddm) -{ - ddm->cfg.command = 1; -} - -int -ark_ddm_stop(struct ark_ddm_t *ddm, const int wait) +ark_ddm_queue_enable(struct ark_ddm_t *ddm, int enable) { - int cnt = 0; - - ddm->cfg.command = 2; - rte_wmb(); - while (wait && (ddm->cfg.stop_flushed & 0x01) == 0) { - if (cnt++ > 1000) - return 1; - - usleep(10); - } - return 0; + ddm->setup.qcommand = enable ? 1U : 0U; } void -ark_ddm_reset(struct ark_ddm_t *ddm) -{ - int status; - - /* reset only works if ddm has stopped properly. */ - status = ark_ddm_stop(ddm, 1); - - if (status != 0) { - ARK_PMD_LOG(NOTICE, "%s stop failed doing forced reset\n", - __func__); - ddm->cfg.command = 4; - usleep(10); - } - ddm->cfg.command = 3; -} - -void -ark_ddm_setup(struct ark_ddm_t *ddm, rte_iova_t cons_addr, uint32_t interval) +ark_ddm_queue_setup(struct ark_ddm_t *ddm, rte_iova_t cons_addr) { ddm->setup.cons_write_index_addr = cons_addr; - ddm->setup.write_index_interval = interval / 4; /* 4 ns period */ + ddm->setup.cons_index = 0; } +/* Global stats clear */ void ark_ddm_stats_reset(struct ark_ddm_t *ddm) { ddm->cfg.tlp_stats_clear = 1; } -void -ark_ddm_dump(struct ark_ddm_t *ddm, const char *msg) -{ - ARK_PMD_LOG(DEBUG, "%s Stopped: %d\n", msg, - ark_ddm_is_stopped(ddm) - ); -} - void ark_ddm_dump_stats(struct ark_ddm_t *ddm, const char *msg) { @@ -116,12 +66,6 @@ ark_ddm_dump_stats(struct ark_ddm_t *ddm, const char *msg) "MBufs", stats->tx_mbuf_count); } -int -ark_ddm_is_stopped(struct ark_ddm_t *ddm) -{ - return (ddm->cfg.stop_flushed & 0x01) != 0; -} - uint64_t ark_ddm_queue_byte_count(struct ark_ddm_t *ddm) { diff --git a/drivers/net/ark/ark_ddm.h b/drivers/net/ark/ark_ddm.h index 687ff2519a..84beeb063a 100644 --- a/drivers/net/ark/ark_ddm.h +++ b/drivers/net/ark/ark_ddm.h @@ -40,17 +40,24 @@ union ark_tx_meta { */ #define ARK_DDM_CFG 0x0000 /* Set unique HW ID for hardware version */ -#define ARK_DDM_CONST3 (0x334d4444) -#define ARK_DDM_CONST2 (0x324d4444) -#define ARK_DDM_CONST1 (0xfacecafe) +#define ARK_DDM_MODID 0x204d4444 +#define ARK_DDM_MODVER 0x37313232 struct ark_ddm_cfg_t { + union { + char id[4]; + uint32_t idnum; + }; + union { + char ver[4]; + uint32_t vernum; + volatile uint32_t tlp_stats_clear; + }; uint32_t r0; - volatile uint32_t tlp_stats_clear; - uint32_t const0; volatile uint32_t tag_max; volatile uint32_t command; - volatile uint32_t stop_flushed; + uint32_t write_index_interval; /* 4ns each */ + volatile uint64_t qflow; }; #define ARK_DDM_STATS 0x0020 @@ -60,34 +67,6 @@ struct ark_ddm_stats_t { volatile uint64_t tx_mbuf_count; }; -#define ARK_DDM_MRDQ 0x0040 -struct ark_ddm_mrdq_t { - volatile uint32_t mrd_q1; - volatile uint32_t mrd_q2; - volatile uint32_t mrd_q3; - volatile uint32_t mrd_q4; - volatile uint32_t mrd_full; -}; - -#define ARK_DDM_CPLDQ 0x0068 -struct ark_ddm_cpldq_t { - volatile uint32_t cpld_q1; - volatile uint32_t cpld_q2; - volatile uint32_t cpld_q3; - volatile uint32_t cpld_q4; - volatile uint32_t cpld_full; -}; - -#define ARK_DDM_MRD_PS 0x0090 -struct ark_ddm_mrd_ps_t { - volatile uint32_t mrd_ps_min; - volatile uint32_t mrd_ps_max; - volatile uint32_t mrd_full_ps_min; - volatile uint32_t mrd_full_ps_max; - volatile uint32_t mrd_dw_ps_min; - volatile uint32_t mrd_dw_ps_max; -}; - #define ARK_DDM_QUEUE_STATS 0x00a8 struct ark_ddm_qstats_t { volatile uint64_t byte_count; @@ -95,20 +74,10 @@ struct ark_ddm_qstats_t { volatile uint64_t mbuf_count; }; -#define ARK_DDM_CPLD_PS 0x00c0 -struct ark_ddm_cpld_ps_t { - volatile uint32_t cpld_ps_min; - volatile uint32_t cpld_ps_max; - volatile uint32_t cpld_full_ps_min; - volatile uint32_t cpld_full_ps_max; - volatile uint32_t cpld_dw_ps_min; - volatile uint32_t cpld_dw_ps_max; -}; - #define ARK_DDM_SETUP 0x00e0 struct ark_ddm_setup_t { rte_iova_t cons_write_index_addr; - uint32_t write_index_interval; /* 4ns each */ + volatile uint32_t qcommand; volatile uint32_t cons_index; }; @@ -119,39 +88,28 @@ struct ark_ddm_t { struct ark_ddm_cfg_t cfg; uint8_t reserved0[(ARK_DDM_STATS - ARK_DDM_CFG) - sizeof(struct ark_ddm_cfg_t)]; + struct ark_ddm_stats_t stats; - uint8_t reserved1[(ARK_DDM_MRDQ - ARK_DDM_STATS) - + uint8_t reserved1[(ARK_DDM_QUEUE_STATS - ARK_DDM_STATS) - sizeof(struct ark_ddm_stats_t)]; - struct ark_ddm_mrdq_t mrdq; - uint8_t reserved2[(ARK_DDM_CPLDQ - ARK_DDM_MRDQ) - - sizeof(struct ark_ddm_mrdq_t)]; - struct ark_ddm_cpldq_t cpldq; - uint8_t reserved3[(ARK_DDM_MRD_PS - ARK_DDM_CPLDQ) - - sizeof(struct ark_ddm_cpldq_t)]; - struct ark_ddm_mrd_ps_t mrd_ps; + struct ark_ddm_qstats_t queue_stats; - struct ark_ddm_cpld_ps_t cpld_ps; - uint8_t reserved5[(ARK_DDM_SETUP - ARK_DDM_CPLD_PS) - - sizeof(struct ark_ddm_cpld_ps_t)]; + uint8_t reserved5[(ARK_DDM_SETUP - ARK_DDM_QUEUE_STATS) - + sizeof(struct ark_ddm_qstats_t)]; + struct ark_ddm_setup_t setup; uint8_t reserved_p[(ARK_DDM_EXPECTED_SIZE - ARK_DDM_SETUP) - sizeof(struct ark_ddm_setup_t)]; }; - /* DDM function prototype */ int ark_ddm_verify(struct ark_ddm_t *ddm); -void ark_ddm_start(struct ark_ddm_t *ddm); -int ark_ddm_stop(struct ark_ddm_t *ddm, const int wait); -void ark_ddm_reset(struct ark_ddm_t *ddm); void ark_ddm_stats_reset(struct ark_ddm_t *ddm); -void ark_ddm_setup(struct ark_ddm_t *ddm, rte_iova_t cons_addr, - uint32_t interval); +void ark_ddm_queue_setup(struct ark_ddm_t *ddm, rte_iova_t cons_addr); void ark_ddm_dump_stats(struct ark_ddm_t *ddm, const char *msg); -void ark_ddm_dump(struct ark_ddm_t *ddm, const char *msg); -int ark_ddm_is_stopped(struct ark_ddm_t *ddm); uint64_t ark_ddm_queue_byte_count(struct ark_ddm_t *ddm); uint64_t ark_ddm_queue_pkt_count(struct ark_ddm_t *ddm); void ark_ddm_queue_reset_stats(struct ark_ddm_t *ddm); +void ark_ddm_queue_enable(struct ark_ddm_t *ddm, int enable); #endif diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index c0578b85ce..07d1d2178d 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -527,10 +527,6 @@ ark_config_device(struct rte_eth_dev *dev) mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); } - /* TX -- DDM */ - if (ark_ddm_stop(ark->ddm.v, 1)) - ARK_PMD_LOG(ERR, "Unable to stop DDM\n"); - mpu = ark->mputx.v; num_q = ark_api_num_queues(mpu); ark->tx_queues = num_q; @@ -538,10 +534,6 @@ ark_config_device(struct rte_eth_dev *dev) mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); } - ark_ddm_reset(ark->ddm.v); - ark_ddm_stats_reset(ark->ddm.v); - - ark_ddm_stop(ark->ddm.v, 0); if (ark->rqpacing) ark_rqp_stats_reset(ark->rqpacing); @@ -595,9 +587,6 @@ eth_ark_dev_start(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) eth_ark_tx_queue_start(dev, i); - /* start DDM */ - ark_ddm_start(ark->ddm.v); - ark->started = 1; /* set xmit and receive function */ dev->rx_pkt_burst = ð_ark_recv_pkts; @@ -671,28 +660,6 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) } } - /* Stop DDM */ - /* Wait up to 0.1 second. each stop is up to 1000 * 10 useconds */ - for (i = 0; i < 10; i++) { - status = ark_ddm_stop(ark->ddm.v, 1); - if (status == 0) - break; - } - if (status || i != 0) { - ARK_PMD_LOG(ERR, "DDM stop anomaly. status:" - " %d iter: %u. (%s)\n", - status, - i, - __func__); - ark_ddm_dump(ark->ddm.v, "Stop anomaly"); - - mpu = ark->mputx.v; - for (i = 0; i < ark->tx_queues; i++) { - ark_mpu_dump(mpu, "DDM failure dump", i); - mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); - } - } - /* STOP RX Side */ /* Stop UDM multiple tries attempted */ for (i = 0; i < 10; i++) { diff --git a/drivers/net/ark/ark_ethdev_tx.c b/drivers/net/ark/ark_ethdev_tx.c index abdce6a8cc..5940a592a2 100644 --- a/drivers/net/ark/ark_ethdev_tx.c +++ b/drivers/net/ark/ark_ethdev_tx.c @@ -59,12 +59,6 @@ static int eth_ark_tx_jumbo(struct ark_tx_queue *queue, static int eth_ark_tx_hw_queue_config(struct ark_tx_queue *queue); static void free_completed_tx(struct ark_tx_queue *queue); -static inline void -ark_tx_hw_queue_stop(struct ark_tx_queue *queue) -{ - ark_mpu_stop(queue->mpu); -} - /* ************************************************************************* */ static inline void eth_ark_tx_desc_fill(struct ark_tx_queue *queue, @@ -309,7 +303,6 @@ static int eth_ark_tx_hw_queue_config(struct ark_tx_queue *queue) { rte_iova_t queue_base, ring_base, cons_index_addr; - uint32_t write_interval_ns; /* Verify HW -- MPU */ if (ark_mpu_verify(queue->mpu, sizeof(union ark_tx_meta))) @@ -326,28 +319,9 @@ eth_ark_tx_hw_queue_config(struct ark_tx_queue *queue) /* Stop and Reset and configure MPU */ ark_mpu_configure(queue->mpu, ring_base, queue->queue_size, 1); - /* - * Adjust the write interval based on queue size -- - * increase pcie traffic when low mbuf count - * Queue sizes less than 128 are not allowed - */ - switch (queue->queue_size) { - case 128: - write_interval_ns = 500; - break; - case 256: - write_interval_ns = 500; - break; - case 512: - write_interval_ns = 1000; - break; - default: - write_interval_ns = 2000; - break; - } - /* Completion address in UDM */ - ark_ddm_setup(queue->ddm, cons_index_addr, write_interval_ns); + ark_ddm_queue_setup(queue->ddm, cons_index_addr); + ark_ddm_queue_reset_stats(queue->ddm); return 0; } @@ -360,7 +334,8 @@ eth_ark_tx_queue_release(void *vtx_queue) queue = (struct ark_tx_queue *)vtx_queue; - ark_tx_hw_queue_stop(queue); + ark_ddm_queue_enable(queue->ddm, 0); + ark_mpu_stop(queue->mpu); queue->cons_index = queue->prod_index; free_completed_tx(queue); @@ -386,6 +361,7 @@ eth_ark_tx_queue_stop(struct rte_eth_dev *dev, uint16_t queue_id) return -1; } + ark_ddm_queue_enable(queue->ddm, 0); ark_mpu_stop(queue->mpu); free_completed_tx(queue); @@ -404,6 +380,7 @@ eth_ark_tx_queue_start(struct rte_eth_dev *dev, uint16_t queue_id) return 0; ark_mpu_start(queue->mpu); + ark_ddm_queue_enable(queue->ddm, 1); dev->data->tx_queue_state[queue_id] = RTE_ETH_QUEUE_STATE_STARTED; return 0; From patchwork Tue Jun 7 15:49:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112481 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 707F9A054D; Tue, 7 Jun 2022 17:49:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2222C42802; Tue, 7 Jun 2022 17:49:39 +0200 (CEST) Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by mails.dpdk.org (Postfix) with ESMTP id 188CD40156 for ; Tue, 7 Jun 2022 17:49:38 +0200 (CEST) Received: by mail-qk1-f182.google.com with SMTP id bi27so6938398qkb.10 for ; Tue, 07 Jun 2022 08:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+cPvLlwbG9HpJhIdvNMMz/cXGDGbh+fn/XBJsJJjoZo=; b=cOikSH/15VcpUbj4oY0Od0BqKiFdLwuwZWTaLdL/pQOmiBtpW6ieRpkiT7OouB7leD uBPjSVEeO7u/tnAjAeMATrszvtLYtMNAVH4w0quSeFxBgg2pY14/BqAUNL/lsw/LOY/E yEJbwguroCvkx4HGRzU7TQF9Cc2e58D3rZNv0Q3tuUU8NOv/XrNr0AhpxFht5nLt77tP e5fkOFD11lfkkfAwOdGe8n6fUhxZhi/nzBjgAnbGo5Sc2WMBXs+vE0ossAWI9g8/Osmf b5axc+5IbLVIKWx70+FQUeS2fK23U6lqMAK+JgWvtntF8pVmyzdiHVrzSsr/p4sLx8YC n2nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+cPvLlwbG9HpJhIdvNMMz/cXGDGbh+fn/XBJsJJjoZo=; b=yj0vuOEDqOGAU1xjf4mMqzRuJ0luevvDYMwJh2UIEGiBARzJk5OQ6cA9nTVEmUcgZx S1ggP6onGgHFunrp5vgUQ5Js+ivlZLJa1/KJfZYARwQYP70zVLpkmu/NRgZitrBqyQjr yuHIFheX82EmjjU1h/6cymQpRHtGpEUZTrrdY5CdQ7SXGoXlIQ/30XOM1waIHrjabRht Z5E9fHNVPP5zpwoCx1nmFspPLdNSiLgZzDGlqqMADskaVYgB9/484d3o4A/p1tFwMzXk 5fmoxzLggMpPQRwrtvWv2OwGMraSLIuSWfoAjmg4gR3zMAQdR2vN7DbplWEc209MCD5Z +PpA== X-Gm-Message-State: AOAM5320E76Go+UnwT0nO+bgBgEhBTr4H9ggRnIe1SVFdy60vNaKTEO2 LaBzk8y5sK3TmIOyN7KkxmDfMixjMj5KQg== X-Google-Smtp-Source: ABdhPJzoJdQfclphLiDeHxAE3f2V4Mgrl29x1uPNGkmcP25RRF5FXopMYs6X0HjgQh4hK+10r2bs8g== X-Received: by 2002:a05:620a:d83:b0:6a6:5fde:2325 with SMTP id q3-20020a05620a0d8300b006a65fde2325mr19866437qkl.407.1654616977045; Tue, 07 Jun 2022 08:49:37 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:36 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 4/7] net/ark: update UDM functions for firmware update Date: Tue, 7 Jun 2022 11:49:14 -0400 Message-Id: <20220607154917.1871118-4-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org new firmware version for UDM (Upstream Data Mover) remove device-level start, stop, and reset operations add queue-based start, stop and reset as required by firmware remove performance structs as they are not in the firmware module Signed-off-by: Ed Czeck --- v2: reword commit message v3: include queue stop during device stop --- drivers/net/ark/ark_ethdev.c | 38 ++---------- drivers/net/ark/ark_ethdev_rx.c | 38 +----------- drivers/net/ark/ark_ethdev_rx.h | 1 - drivers/net/ark/ark_udm.c | 103 +++----------------------------- drivers/net/ark/ark_udm.h | 73 +++++----------------- 5 files changed, 31 insertions(+), 222 deletions(-) diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index 07d1d2178d..2abc35283d 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -512,13 +512,6 @@ ark_config_device(struct rte_eth_dev *dev) if (ark_ddm_verify(ark->ddm.v)) return -1; - /* UDM */ - if (ark_udm_reset(ark->udm.v)) { - ARK_PMD_LOG(ERR, "Unable to stop and reset UDM\n"); - return -1; - } - /* Keep in reset until the MPU are cleared */ - /* MPU reset */ mpu = ark->mpurx.v; num_q = ark_api_num_queues(mpu); @@ -577,9 +570,6 @@ eth_ark_dev_start(struct rte_eth_dev *dev) int i; /* RX Side */ - /* start UDM */ - ark_udm_start(ark->udm.v); - for (i = 0; i < dev->data->nb_rx_queues; i++) eth_ark_rx_start_queue(dev, i); @@ -627,7 +617,6 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) uint16_t i; int status; struct ark_adapter *ark = dev->data->dev_private; - struct ark_mpu_t *mpu; if (ark->started == 0) return 0; @@ -648,6 +637,10 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) dev->rx_pkt_burst = rte_eth_pkt_burst_dummy; dev->tx_pkt_burst = rte_eth_pkt_burst_dummy; + /* Stop RX Side */ + for (i = 0; i < dev->data->nb_rx_queues; i++) + eth_ark_rx_stop_queue(dev, i); + /* STOP TX Side */ for (i = 0; i < dev->data->nb_tx_queues; i++) { status = eth_ark_tx_queue_stop(dev, i); @@ -660,27 +653,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) } } - /* STOP RX Side */ - /* Stop UDM multiple tries attempted */ - for (i = 0; i < 10; i++) { - status = ark_udm_stop(ark->udm.v, 1); - if (status == 0) - break; - } - if (status || i != 0) { - ARK_PMD_LOG(ERR, "UDM stop anomaly. status %d iter: %u. (%s)\n", - status, i, __func__); - ark_udm_dump(ark->udm.v, "Stop anomaly"); - - mpu = ark->mpurx.v; - for (i = 0; i < ark->rx_queues; i++) { - ark_mpu_dump(mpu, "UDM Stop anomaly", i); - mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); - } - } - ark_udm_dump_stats(ark->udm.v, "Post stop"); - ark_udm_dump_perf(ark->udm.v, "Post stop"); for (i = 0; i < dev->data->nb_rx_queues; i++) eth_ark_rx_dump_queue(dev, i, __func__); @@ -708,10 +681,9 @@ eth_ark_dev_close(struct rte_eth_dev *dev) ark->user_data[dev->data->port_id]); eth_ark_dev_stop(dev); - eth_ark_udm_force_close(dev); /* - * TODO This should only be called once for the device during shutdown + * This should only be called once for the device during shutdown */ if (ark->rqpacing) ark_rqp_dump(ark->rqpacing); diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c index 85e34d0bb8..cbc0416bc2 100644 --- a/drivers/net/ark/ark_ethdev_rx.c +++ b/drivers/net/ark/ark_ethdev_rx.c @@ -200,13 +200,10 @@ eth_ark_dev_rx_queue_setup(struct rte_eth_dev *dev, queue->mpu = RTE_PTR_ADD(ark->mpurx.v, qidx * ARK_MPU_QOFFSET); /* Configure UDM per queue */ - ark_udm_stop(queue->udm, 0); ark_udm_configure(queue->udm, RTE_PKTMBUF_HEADROOM, - queue->dataroom, - ARK_RX_WRITE_TIME_NS); - ark_udm_stats_reset(queue->udm); - ark_udm_stop(queue->udm, 0); + queue->dataroom); + ark_udm_queue_stats_reset(queue->udm); /* populate mbuf reserve */ status = eth_ark_rx_seed_mbufs(queue); @@ -589,36 +586,6 @@ eth_rx_queue_stats_reset(void *vqueue) ark_udm_queue_stats_reset(queue->udm); } -void -eth_ark_udm_force_close(struct rte_eth_dev *dev) -{ - struct ark_adapter *ark = dev->data->dev_private; - struct ark_rx_queue *queue; - uint32_t index; - uint16_t i; - - if (!ark_udm_is_flushed(ark->udm.v)) { - /* restart the MPUs */ - ARK_PMD_LOG(NOTICE, "UDM not flushed -- forcing flush\n"); - for (i = 0; i < dev->data->nb_rx_queues; i++) { - queue = (struct ark_rx_queue *)dev->data->rx_queues[i]; - if (queue == 0) - continue; - - ark_mpu_start(queue->mpu); - /* Add some buffers */ - index = ARK_RX_MPU_CHUNK + queue->seed_index; - ark_mpu_set_producer(queue->mpu, index); - } - /* Wait to allow data to pass */ - usleep(100); - - ARK_PMD_LOG(NOTICE, "UDM forced flush attempt, stopped = %d\n", - ark_udm_is_flushed(ark->udm.v)); - } - ark_udm_reset(ark->udm.v); -} - static void ark_ethdev_rx_dump(const char *name, struct ark_rx_queue *queue) { @@ -633,7 +600,6 @@ ark_ethdev_rx_dump(const char *name, struct ark_rx_queue *queue) ark_mpu_dump(queue->mpu, name, queue->phys_qid); ark_mpu_dump_setup(queue->mpu, queue->phys_qid); - ark_udm_dump(queue->udm, name); ark_udm_dump_setup(queue->udm, queue->phys_qid); } diff --git a/drivers/net/ark/ark_ethdev_rx.h b/drivers/net/ark/ark_ethdev_rx.h index f64b3dd137..2e3400fd2f 100644 --- a/drivers/net/ark/ark_ethdev_rx.h +++ b/drivers/net/ark/ark_ethdev_rx.h @@ -27,6 +27,5 @@ void eth_rx_queue_stats_get(void *vqueue, struct rte_eth_stats *stats); void eth_rx_queue_stats_reset(void *vqueue); void eth_ark_rx_dump_queue(struct rte_eth_dev *dev, uint16_t queue_id, const char *msg); -void eth_ark_udm_force_close(struct rte_eth_dev *dev); #endif diff --git a/drivers/net/ark/ark_udm.c b/drivers/net/ark/ark_udm.c index 9ebed89627..81b141ad0b 100644 --- a/drivers/net/ark/ark_udm.c +++ b/drivers/net/ark/ark_udm.c @@ -12,6 +12,8 @@ static_assert(sizeof(struct ark_rx_meta) == 32, "Unexpected struct size ark_rx_m int ark_udm_verify(struct ark_udm_t *udm) { + uint32_t idnum = udm->setup.idnum; + uint32_t vernum = udm->setup.vernum; if (sizeof(struct ark_udm_t) != ARK_UDM_EXPECT_SIZE) { ARK_PMD_LOG(ERR, "ARK: UDM structure looks incorrect %d vs %zd\n", @@ -19,94 +21,30 @@ ark_udm_verify(struct ark_udm_t *udm) return -1; } - if (udm->setup.const0 != ARK_UDM_CONST) { + if (idnum != ARK_UDM_MODID || vernum != ARK_UDM_MODVER) { ARK_PMD_LOG(ERR, - "ARK: UDM module not found as expected 0x%08x\n", - udm->setup.const0); + "ARK: UDM module not found as expected 0x%08x 0x%08x\n", + idnum, vernum); return -1; } return 0; } -int -ark_udm_stop(struct ark_udm_t *udm, const int wait) -{ - int cnt = 0; - - udm->setup.r0 = 0; - udm->cfg.command = 2; - rte_wmb(); - - while (wait && (udm->cfg.stop_flushed & 0x01) == 0) { - if (cnt++ > 1000) - return 1; - - usleep(10); - } - return 0; -} - -int -ark_udm_reset(struct ark_udm_t *udm) -{ - int status; - - status = ark_udm_stop(udm, 1); - if (status != 0) { - ARK_PMD_LOG(NOTICE, "%s stop failed doing forced reset\n", - __func__); - udm->cfg.command = 4; - usleep(10); - udm->cfg.command = 3; - status = ark_udm_stop(udm, 0); - ARK_PMD_LOG(INFO, "%s stop status %d post failure" - " and forced reset\n", - __func__, status); - } else { - udm->cfg.command = 3; - } - - return status; -} - -void -ark_udm_start(struct ark_udm_t *udm) -{ - udm->setup.r0 = 0x100; - udm->cfg.command = 1; -} - -void -ark_udm_stats_reset(struct ark_udm_t *udm) -{ - udm->pcibp.pci_clear = 1; - udm->tlp_ps.tlp_clear = 1; -} - void ark_udm_configure(struct ark_udm_t *udm, uint32_t headroom, - uint32_t dataroom, - uint32_t write_interval_ns) + uint32_t dataroom) { /* headroom and data room are in DWords in the UDM */ udm->cfg.dataroom = dataroom / 4; udm->cfg.headroom = headroom / 4; - - /* 4 NS period ns */ - udm->rt_cfg.write_interval = write_interval_ns / 4; } void ark_udm_write_addr(struct ark_udm_t *udm, rte_iova_t addr) { udm->rt_cfg.hw_prod_addr = addr; -} - -int -ark_udm_is_flushed(struct ark_udm_t *udm) -{ - return (udm->cfg.stop_flushed & 0x01) != 0; + udm->rt_cfg.prod_idx = 0; } uint64_t @@ -131,11 +69,10 @@ void ark_udm_dump_stats(struct ark_udm_t *udm, const char *msg) { ARK_PMD_LOG(INFO, "UDM Stats: %s" - ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 "\n", + ARK_SU64 ARK_SU64 ARK_SU64 ARK_SU64 "\n", msg, "Pkts Received", udm->stats.rx_packet_count, "Pkts Finalized", udm->stats.rx_sent_packets, - "Pkts Dropped", udm->tlp.pkt_drop, "Bytes Count", udm->stats.rx_byte_count, "MBuf Count", udm->stats.rx_mbuf_count); } @@ -155,13 +92,6 @@ ark_udm_dump_queue_stats(struct ark_udm_t *udm, const char *msg, uint16_t qid) "MBuf Count", udm->qstats.q_mbuf_count); } -void -ark_udm_dump(struct ark_udm_t *udm, const char *msg) -{ - ARK_PMD_LOG(DEBUG, "UDM Dump: %s Stopped: %d\n", msg, - udm->cfg.stop_flushed); -} - void ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id) { @@ -172,23 +102,6 @@ ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id) "prod_idx", udm->rt_cfg.prod_idx); } -void -ark_udm_dump_perf(struct ark_udm_t *udm, const char *msg) -{ - struct ark_udm_pcibp_t *bp = &udm->pcibp; - - ARK_PMD_LOG(INFO, "UDM Performance %s" - ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32 ARK_SU32 - "\n", - msg, - "PCI Empty", bp->pci_empty, - "PCI Q1", bp->pci_q1, - "PCI Q2", bp->pci_q2, - "PCI Q3", bp->pci_q3, - "PCI Q4", bp->pci_q4, - "PCI Full", bp->pci_full); -} - void ark_udm_queue_stats_reset(struct ark_udm_t *udm) { diff --git a/drivers/net/ark/ark_udm.h b/drivers/net/ark/ark_udm.h index 1cbcd94a98..f0685c95c7 100644 --- a/drivers/net/ark/ark_udm.h +++ b/drivers/net/ark/ark_udm.h @@ -32,19 +32,25 @@ struct ark_rx_meta { #define ARK_RX_WRITE_TIME_NS 2500 #define ARK_UDM_SETUP 0 -#define ARK_UDM_CONST2 0xbACECACE -#define ARK_UDM_CONST3 0x344d4455 -#define ARK_UDM_CONST ARK_UDM_CONST3 +#define ARK_UDM_MODID 0x4d445500 +#define ARK_UDM_MODVER 0x37313232 + struct ark_udm_setup_t { + union { + char id[4]; + uint32_t idnum; + }; + union { + char ver[4]; + uint32_t vernum; + }; uint32_t r0; - uint32_t r4; - volatile uint32_t cycle_count; uint32_t const0; }; #define ARK_UDM_CFG 0x010 struct ark_udm_cfg_t { - volatile uint32_t stop_flushed; /* RO */ + uint32_t write_interval; /* 4ns cycles */ volatile uint32_t command; uint32_t dataroom; uint32_t headroom; @@ -74,45 +80,11 @@ struct ark_udm_queue_stats_t { uint32_t q_enable; }; -#define ARK_UDM_TLP 0x0070 -struct ark_udm_tlp_t { - volatile uint64_t pkt_drop; /* global */ - volatile uint32_t tlp_q1; - volatile uint32_t tlp_q2; - volatile uint32_t tlp_q3; - volatile uint32_t tlp_q4; - volatile uint32_t tlp_full; -}; - -#define ARK_UDM_PCIBP 0x00a0 -struct ark_udm_pcibp_t { - volatile uint32_t pci_clear; - volatile uint32_t pci_empty; - volatile uint32_t pci_q1; - volatile uint32_t pci_q2; - volatile uint32_t pci_q3; - volatile uint32_t pci_q4; - volatile uint32_t pci_full; -}; - -#define ARK_UDM_TLP_PS 0x00bc -struct ark_udm_tlp_ps_t { - volatile uint32_t tlp_clear; - volatile uint32_t tlp_ps_min; - volatile uint32_t tlp_ps_max; - volatile uint32_t tlp_full_ps_min; - volatile uint32_t tlp_full_ps_max; - volatile uint32_t tlp_dw_ps_min; - volatile uint32_t tlp_dw_ps_max; - volatile uint32_t tlp_pldw_ps_min; - volatile uint32_t tlp_pldw_ps_max; -}; - #define ARK_UDM_RT_CFG 0x00e0 struct ark_udm_rt_cfg_t { rte_iova_t hw_prod_addr; - uint32_t write_interval; /* 4ns cycles */ - volatile uint32_t prod_idx; /* RO */ + uint32_t reserved; + volatile uint32_t prod_idx; /* Updated by HW */ }; /* Consolidated structure */ @@ -123,13 +95,8 @@ struct ark_udm_t { struct ark_udm_cfg_t cfg; struct ark_udm_stats_t stats; struct ark_udm_queue_stats_t qstats; - uint8_t reserved1[(ARK_UDM_TLP - ARK_UDM_PQ) - + uint8_t reserved1[(ARK_UDM_RT_CFG - ARK_UDM_PQ) - sizeof(struct ark_udm_queue_stats_t)]; - struct ark_udm_tlp_t tlp; - uint8_t reserved2[(ARK_UDM_PCIBP - ARK_UDM_TLP) - - sizeof(struct ark_udm_tlp_t)]; - struct ark_udm_pcibp_t pcibp; - struct ark_udm_tlp_ps_t tlp_ps; struct ark_udm_rt_cfg_t rt_cfg; int8_t reserved3[(ARK_UDM_EXPECT_SIZE - ARK_UDM_RT_CFG) - sizeof(struct ark_udm_rt_cfg_t)]; @@ -137,22 +104,14 @@ struct ark_udm_t { int ark_udm_verify(struct ark_udm_t *udm); -int ark_udm_stop(struct ark_udm_t *udm, int wait); -void ark_udm_start(struct ark_udm_t *udm); -int ark_udm_reset(struct ark_udm_t *udm); void ark_udm_configure(struct ark_udm_t *udm, uint32_t headroom, - uint32_t dataroom, - uint32_t write_interval_ns); + uint32_t dataroom); void ark_udm_write_addr(struct ark_udm_t *udm, rte_iova_t addr); -void ark_udm_stats_reset(struct ark_udm_t *udm); void ark_udm_dump_stats(struct ark_udm_t *udm, const char *msg); void ark_udm_dump_queue_stats(struct ark_udm_t *udm, const char *msg, uint16_t qid); -void ark_udm_dump(struct ark_udm_t *udm, const char *msg); -void ark_udm_dump_perf(struct ark_udm_t *udm, const char *msg); void ark_udm_dump_setup(struct ark_udm_t *udm, uint16_t q_id); -int ark_udm_is_flushed(struct ark_udm_t *udm); /* Per queue data */ uint64_t ark_udm_dropped(struct ark_udm_t *udm); From patchwork Tue Jun 7 15:49:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112482 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 5D0EBA054D; Tue, 7 Jun 2022 17:49:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 67D5042905; Tue, 7 Jun 2022 17:49:41 +0200 (CEST) Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by mails.dpdk.org (Postfix) with ESMTP id BA31B427F6 for ; Tue, 7 Jun 2022 17:49:39 +0200 (CEST) Received: by mail-qk1-f175.google.com with SMTP id d128so5658156qkg.8 for ; Tue, 07 Jun 2022 08:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/aJTnDZAY4+IPBAwQbrCOBzdOumcpw82eW4HTnwLw+4=; b=xq6nftaxmPjnjYUlwzFbLx+pkDqsmcCJtVAw1brU+5d0a4eC5tS7DXoXyRNhlg4KGj YcyILEEmdgyxqajUcS2Gpy7C30+GLeXFCG1eHX1Ine7puJe3E8CKOH6gSmacUh0oQCn2 eg/j7qm1BFysMYw2vA+IBoDs/XzyGlTqrUcNs34VpAaE7NiZQQf9s9Zwf9epKikK4E9I 1tShyJvt27AioSobb+PvGIrLkshDYy8i43EJucE2u0xdAM5Q3lT2XmCN8SphBGuXIFVF +Vs/GbqH4pbSKZnfPe8V/V7zQajnRLrHgQ1UJ+4nWmHES69uE8aVbiwiybm2844pN5a9 2TCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/aJTnDZAY4+IPBAwQbrCOBzdOumcpw82eW4HTnwLw+4=; b=jnud8fta463bMQtEnU6/gUscAkLWxtyMhNUlr2vkH/slEPghecJWSI11f7FTwSmBhY VpLJ337njggRnrWhNJ/8kEgeWdhaXL6Cgn8rf+qUyDGU6ASXnfEfh7Int89mIz55nuh/ goFtN95BZ3oOvyYLS2n0XmDLdHwUeXyIr8ARMlZQ6cvtDPkpcEeNK5V7ypIXl9DSKpPL nrxW6EDA0SrqFozVYxtYx5dC+qaDeLQXGlKTi4hVrtgXglcNe82PN72Yz9T7NOcxyHfM 6Dehd1LJkpjCdbPvidztRUgmXN84WWrmkhzGCrrfNgVfEW5HtGFRwR6oJ9+FJEgchH96 AmBQ== X-Gm-Message-State: AOAM5304BahUHsmtJQWosQ8mDigqIUkICNJNTEeC4H0+KbqJElUDcZsx qaINKLNKqlF9WjhRqiTjftOsTSDFTkBSrQ== X-Google-Smtp-Source: ABdhPJx0OUxeUeaSmt4W2QC8vu8SBaGQoVDPAcmqPOlol3GWOgdZZfvXcHyGrNQyNLJXgQaLbP27wQ== X-Received: by 2002:a05:620a:d94:b0:6a6:6c9c:c7ec with SMTP id q20-20020a05620a0d9400b006a66c9cc7ecmr20052298qkl.221.1654616978884; Tue, 07 Jun 2022 08:49:38 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:38 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 5/7] net/ark: report additional errors from firmware Date: Tue, 7 Jun 2022 11:49:15 -0400 Message-Id: <20220607154917.1871118-5-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org detect and report completion errors from firmware Signed-off-by: Ed Czeck --- drivers/net/ark/ark_rqp.c | 6 ++++-- drivers/net/ark/ark_rqp.h | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/ark/ark_rqp.c b/drivers/net/ark/ark_rqp.c index ef9ccd0706..efb9730fe6 100644 --- a/drivers/net/ark/ark_rqp.c +++ b/drivers/net/ark/ark_rqp.c @@ -22,14 +22,16 @@ ark_rqp_stats_reset(struct ark_rqpace_t *rqp) void ark_rqp_dump(struct ark_rqpace_t *rqp) { - if (rqp->err_count_other != 0) + if (rqp->err_count_other || rqp->cmpl_errors) ARK_PMD_LOG(ERR, "RQP Errors noted: ctrl: %d cplh_hmax %d cpld_max %d" ARK_SU32 + ARK_SU32 ARK_SU32 "\n", rqp->ctrl, rqp->cplh_max, rqp->cpld_max, "Error Count", rqp->err_cnt, - "Error General", rqp->err_count_other); + "Error General", rqp->err_count_other, + "Cmpl Errors", rqp->cmpl_errors); ARK_PMD_LOG(INFO, "RQP Dump: ctrl: %d cplh_hmax %d cpld_max %d" ARK_SU32 diff --git a/drivers/net/ark/ark_rqp.h b/drivers/net/ark/ark_rqp.h index 6c8046062b..d09f242e1e 100644 --- a/drivers/net/ark/ark_rqp.h +++ b/drivers/net/ark/ark_rqp.h @@ -48,7 +48,8 @@ struct ark_rqpace_t { volatile uint32_t cpld_pending_max; volatile uint32_t err_count_other; char eval[4]; - volatile int lasped; + volatile int32_t lasped; + volatile uint32_t cmpl_errors; }; void ark_rqp_dump(struct ark_rqpace_t *rqp); From patchwork Tue Jun 7 15:49:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112483 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 8A76DA054D; Tue, 7 Jun 2022 17:50:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4945942B6C; Tue, 7 Jun 2022 17:49:43 +0200 (CEST) Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by mails.dpdk.org (Postfix) with ESMTP id 6887342B6C for ; Tue, 7 Jun 2022 17:49:41 +0200 (CEST) Received: by mail-qk1-f169.google.com with SMTP id 68so5056961qkk.9 for ; Tue, 07 Jun 2022 08:49:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TBgG1dJD4611go4z7JGbaIhW7UFGsNJFA9O+AT9VJxI=; b=yHJCgueH8mhjq8w6s6+gOx9yfwlssRhOgKgg4rGZHhTEHVw2DFQwE4U5yzOjo3hAzD pdF3zpUZYPl7x5SN5sJ3zsusm9cQSv3iP/sFUslXipp+/84cEat1OdRJ5pExY4DQNnzf GUQyVAiB1XmdmjqNLAR9Bwvy9lPoaI1A2MnCoK7GoOqv93BS+rAYziyy33+hqCStzwcu VcFpxdKL24N8ZTK66NNIrzhIm33N7OU5l6VWU+e4CJqiSPQ7n0oXFvMfgg817LQhPk8P syMm/ZII+T1tgRo4crn0czV02HJEEww9HUWS4u59ClCBlEsuCPdtl32a+d5R+CjVz2/h wqMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TBgG1dJD4611go4z7JGbaIhW7UFGsNJFA9O+AT9VJxI=; b=0XnjekXMVd0g6O/P8ZLYFj3mUsasSWBz0finZ0/TM0t0sThfRy/51vrtC7wqfLEFlX yDVBZlWndr8e7cror9pkWZEJwG0yVkmHxeoArpZRYBZpazDEO+noV/zXm5mOVMLSd4Ua F/3I5noAnWbARtSCF8ftkqfUAhiczHuWxj5olueZa//ZPc9ZYQXrcuv6V1A55iVFVj3+ uur8j7wJx5OKGnDO/rCdTtcLu50A1ufWODKO/bEd/IxrmcuLUWcvchN6+YqLKvcNlTnP LuDf6ww0CLQvEuCLRDZj1ZzM8kLFxOAKk5U2aeOX5Gc0tMpbiGv/+BagmWqjPCPN4Vux aZ6A== X-Gm-Message-State: AOAM532KDl8YjjvIEtBETBzFw6coHleb4llSrOt8Dy9fEgf7pof/lRfQ bl6WtrVHd7X3LHvTc1jgDPvFG5pBD7+jNg== X-Google-Smtp-Source: ABdhPJzXig+4zsVJhK8Zd+4gpiuuC5hPkx0pE830wi7ei0zEEqKtL4h9hpmdbGMRGK4ffnBFjeCDsQ== X-Received: by 2002:a37:9a06:0:b0:6a6:839f:c34d with SMTP id c6-20020a379a06000000b006a6839fc34dmr17922148qke.154.1654616980690; Tue, 07 Jun 2022 08:49:40 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:40 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 6/7] net/ark: add new devices to support list Date: Tue, 7 Jun 2022 11:49:16 -0400 Message-Id: <20220607154917.1871118-6-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org update device list is doc Signed-off-by: Ed Czeck --- v3: clarification in doc for LTS support --- doc/guides/nics/ark.rst | 7 +++++-- drivers/net/ark/ark_ethdev.c | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/ark.rst b/doc/guides/nics/ark.rst index 29c0a07d60..44488f0ce8 100644 --- a/doc/guides/nics/ark.rst +++ b/doc/guides/nics/ark.rst @@ -297,6 +297,9 @@ ARK PMD supports the following Arkville RTL PCIe instances including: * ``1d6c:1017`` - AR-ARK-FX1 [Arkville 64B Multi-Homed Primary Endpoint] * ``1d6c:1018`` - AR-ARK-FX1 [Arkville 64B Multi-Homed Secondary Endpoint] * ``1d6c:1019`` - AR-ARK-FX1 [Arkville 64B Multi-Homed Tertiary Endpoint] +* ``1d6c:101a`` - AR-ARK-SRIOV-FX0 [Arkville 32B Primary Physical Function] +* ``1d6c:101b`` - AR-ARK-SRIOV-FX1 [Arkville 64B Primary Physical Function] +* ``1d6c:101c`` - AR-ARK-SRIOV-VF [Arkville Virtual Function] * ``1d6c:101e`` - AR-ARKA-FX1 [Arkville 64B DPDK Data Mover for Agilex R-Tile] * ``1d6c:101f`` - AR-TK242 [2x100GbE Packet Capture Device] @@ -307,7 +310,8 @@ Arkville's firmware and its PMD have version dependencies which must be stepped together at certain releases. PMD code ensures the versions are compatible. The following lists shows where version compatible steps have occurred. If other combinations are required, please contact Atomic Rules -support. +support. LTS versions of DPDK remain compatible with the corresponding +Arkville version. * DPDK 22.07 requires Arkville 22.07. * DPDK 22.03 requires Arkville 22.03. @@ -337,7 +341,6 @@ Unsupported Features Features that may be part of, or become part of, the Arkville RTL IP that are not currently supported or exposed by the ARK PMD include: -* PCIe SR-IOV Virtual Functions (VFs) * Arkville's Packet Generator Control and Status * Arkville's Packet Director Control and Status * Arkville's Packet Checker Control and Status diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index 2abc35283d..377631e66e 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -94,6 +94,9 @@ static const struct rte_pci_id pci_id_ark_map[] = { {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x1017)}, {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x1018)}, {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x1019)}, + {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x101a)}, + {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x101b)}, + {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x101c)}, {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x101e)}, {RTE_PCI_DEVICE(AR_VENDOR_ID, 0x101f)}, {.vendor_id = 0, /* sentinel */ }, @@ -127,6 +130,9 @@ ark_device_caps[] = { SET_DEV_CAPS(0x1017, true), SET_DEV_CAPS(0x1018, true), SET_DEV_CAPS(0x1019, true), + SET_DEV_CAPS(0x101a, true), + SET_DEV_CAPS(0x101b, true), + SET_DEV_CAPS(0x101c, false), SET_DEV_CAPS(0x101e, false), SET_DEV_CAPS(0x101f, false), {.device_id = 0,} From patchwork Tue Jun 7 15:49:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112484 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 546CFA054D; Tue, 7 Jun 2022 17:50:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3B6F44282A; Tue, 7 Jun 2022 17:49:46 +0200 (CEST) Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) by mails.dpdk.org (Postfix) with ESMTP id 2343641153 for ; Tue, 7 Jun 2022 17:49:43 +0200 (CEST) Received: by mail-qk1-f176.google.com with SMTP id n197so6440563qke.1 for ; Tue, 07 Jun 2022 08:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5mwpz7O+AH+JWA+TdOThhylx8qHeN2AS1FhOvmiGgFQ=; b=rx7KQae6yZjIhsSN0kXcmgwi4zIJm36PgdkA+/gPCKNfdL+D55DIWjyJmL4ZdWZ10Y iHBzQoiOprkzi9DTbmyvQe00pB4BZnCwC8TcqrrCqzsMhyb28UTduFQ8Dc9iouWXC6eT V/xxOXzT+lE0sz1m+fGgxKUcjoArnCH84FfHBZ2Cwm0Z3UUujvn2Zy6zmv+onrpIjBXN mSV+SNZwckFqyftWcVMAamlQUz61Oircsln5YKjVcSRr+Pjs97QY0p0U73xNy1U2KUS/ 81ESyGQO+4BlI8os43A6cNVtUTJmbDtK8uYdpMHwpUvjvKbqEWbxrxLPWeHBs4mD/eJ8 AlWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5mwpz7O+AH+JWA+TdOThhylx8qHeN2AS1FhOvmiGgFQ=; b=OIq1j73ZTyAIs2PTILIsWlHOAnUGuEB185Ww/+j8ICNvDJTnHz4usReBZjg+myou25 dyIyUvw8otodQM918g8nRnOsU3HLFxjlW1nzb4jj/wKMOU8/uCnArETr+jvYhg8hqGqP Ffjm9RUgDxu4p8S4UNAitTTuQLwWDU/9YntrLsKsLJK1L1uPgY+Kt/ni88OP1ELMdHeb RqIZNrSy4htFd5CK3txQOdPywqfek92ecUNRrMQhxiN6fm/F4PeSCaWeveOxK7N1g9po imV9jJg+4GUjH3EWttcyya9lWK1x/wXgCyCzMu9rodx1ZsZackV5xXzLizAsYaqSpzbm fcag== X-Gm-Message-State: AOAM532Tocx6UhJYmz5Ha8kCovaLgvNGp5oDvyqCBr6mwdneVxkaqXQc 9xUqIVqTJh1Mf7fX7YTKWh4Hnt3afDKqZA== X-Google-Smtp-Source: ABdhPJzQ2ZyD8qn+V022erpPBoXta2Ng7GFnlLdTJx/yMx7Sua3JEFQ0KuIXE7B4H1CxG0n/VW3oQQ== X-Received: by 2002:a37:42d3:0:b0:69c:830d:6e51 with SMTP id p202-20020a3742d3000000b0069c830d6e51mr20413543qka.302.1654616982369; Tue, 07 Jun 2022 08:49:42 -0700 (PDT) Received: from z390.czeck.local (pool-173-48-102-189.bstnma.fios.verizon.net. [173.48.102.189]) by smtp.gmail.com with ESMTPSA id e185-20020a3769c2000000b006a5d4f32e5dsm14030266qkc.128.2022.06.07.08.49.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 08:49:41 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Shepard Siegel , John Miller Subject: [PATCH v3 7/7] net/ark: add PMD support for devices as virtual functions Date: Tue, 7 Jun 2022 11:49:17 -0400 Message-Id: <20220607154917.1871118-7-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607154917.1871118-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607154917.1871118-1-ed.czeck@atomicrules.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add capabilities field isvf to dev struct Disable configuration calls as required by vf Signed-off-by: Ed Czeck --- v2: feature Arkville vf support in release notes v3: feature new PCI device ids in release notes --- doc/guides/rel_notes/release_22_07.rst | 5 ++ drivers/net/ark/ark_ethdev.c | 83 +++++++++++++++----------- drivers/net/ark/ark_global.h | 1 + 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index e49cacecef..4b90293f14 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -104,6 +104,11 @@ New Features * ``RTE_EVENT_QUEUE_ATTR_WEIGHT`` * ``RTE_EVENT_QUEUE_ATTR_AFFINITY`` +* **Updated Atomic Rules' Arkville PMD.** + + Added support for Atomic Rules PCI device IDs ``0x101a, 0x101b, 0x101c``. + + Added PMD support for virtual functions and vfio_pci driver. Removed Items ------------- diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index 377631e66e..e8e4092be6 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -113,28 +113,29 @@ static const struct rte_pci_id pci_id_ark_map[] = { */ struct ark_caps { bool rqpacing; + bool isvf; }; struct ark_dev_caps { uint32_t device_id; struct ark_caps caps; }; -#define SET_DEV_CAPS(id, rqp) \ - {id, {.rqpacing = rqp} } +#define SET_DEV_CAPS(id, rqp, vf) \ + {id, {.rqpacing = rqp, .isvf = vf} } static const struct ark_dev_caps ark_device_caps[] = { - SET_DEV_CAPS(0x100d, true), - SET_DEV_CAPS(0x100e, true), - SET_DEV_CAPS(0x100f, true), - SET_DEV_CAPS(0x1010, false), - SET_DEV_CAPS(0x1017, true), - SET_DEV_CAPS(0x1018, true), - SET_DEV_CAPS(0x1019, true), - SET_DEV_CAPS(0x101a, true), - SET_DEV_CAPS(0x101b, true), - SET_DEV_CAPS(0x101c, false), - SET_DEV_CAPS(0x101e, false), - SET_DEV_CAPS(0x101f, false), + SET_DEV_CAPS(0x100d, true, false), + SET_DEV_CAPS(0x100e, true, false), + SET_DEV_CAPS(0x100f, true, false), + SET_DEV_CAPS(0x1010, false, false), + SET_DEV_CAPS(0x1017, true, false), + SET_DEV_CAPS(0x1018, true, false), + SET_DEV_CAPS(0x1019, true, false), + SET_DEV_CAPS(0x101a, true, false), + SET_DEV_CAPS(0x101b, true, false), + SET_DEV_CAPS(0x101c, true, true), + SET_DEV_CAPS(0x101e, false, false), + SET_DEV_CAPS(0x101f, false, false), {.device_id = 0,} }; @@ -317,6 +318,7 @@ eth_ark_dev_init(struct rte_eth_dev *dev) while (ark_device_caps[p].device_id != 0) { if (pci_dev->id.device_id == ark_device_caps[p].device_id) { rqpacing = ark_device_caps[p].caps.rqpacing; + ark->isvf = ark_device_caps[p].caps.isvf; break; } p++; @@ -498,20 +500,21 @@ ark_config_device(struct rte_eth_dev *dev) * Make sure that the packet director, generator and checker are in a * known state */ - ark->start_pg = 0; - ark->pg_running = 0; - ark->pg = ark_pktgen_init(ark->pktgen.v, 0, 1); - if (ark->pg == NULL) - return -1; - ark_pktgen_reset(ark->pg); - ark->pc = ark_pktchkr_init(ark->pktchkr.v, 0, 1); - if (ark->pc == NULL) - return -1; - ark_pktchkr_stop(ark->pc); - ark->pd = ark_pktdir_init(ark->pktdir.v); - if (ark->pd == NULL) - return -1; - + if (!ark->isvf) { + ark->start_pg = 0; + ark->pg_running = 0; + ark->pg = ark_pktgen_init(ark->pktgen.v, 0, 1); + if (ark->pg == NULL) + return -1; + ark_pktgen_reset(ark->pg); + ark->pc = ark_pktchkr_init(ark->pktchkr.v, 0, 1); + if (ark->pc == NULL) + return -1; + ark_pktchkr_stop(ark->pc); + ark->pd = ark_pktdir_init(ark->pktdir.v); + if (ark->pd == NULL) + return -1; + } /* Verify HW */ if (ark_udm_verify(ark->udm.v)) return -1; @@ -533,7 +536,7 @@ ark_config_device(struct rte_eth_dev *dev) mpu = RTE_PTR_ADD(mpu, ARK_MPU_QOFFSET); } - if (ark->rqpacing) + if (!ark->isvf && ark->rqpacing) ark_rqp_stats_reset(ark->rqpacing); return 0; @@ -551,8 +554,10 @@ eth_ark_dev_uninit(struct rte_eth_dev *dev) ark->user_ext.dev_uninit(dev, ark->user_data[dev->data->port_id]); - ark_pktgen_uninit(ark->pg); - ark_pktchkr_uninit(ark->pc); + if (!ark->isvf) { + ark_pktgen_uninit(ark->pg); + ark_pktchkr_uninit(ark->pc); + } return 0; } @@ -588,10 +593,10 @@ eth_ark_dev_start(struct rte_eth_dev *dev) dev->rx_pkt_burst = ð_ark_recv_pkts; dev->tx_pkt_burst = ð_ark_xmit_pkts; - if (ark->start_pg) + if (!ark->isvf && ark->start_pg) ark_pktchkr_run(ark->pc); - if (ark->start_pg && !ark->pg_running) { + if (!ark->isvf && ark->start_pg && !ark->pg_running) { pthread_t thread; /* Delay packet generatpr start allow the hardware to be ready @@ -635,7 +640,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) ark->user_data[dev->data->port_id]); /* Stop the packet generator */ - if (ark->start_pg && ark->pg_running) { + if (!ark->isvf && ark->start_pg && ark->pg_running) { ark_pktgen_pause(ark->pg); ark->pg_running = 0; } @@ -665,7 +670,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) eth_ark_rx_dump_queue(dev, i, __func__); /* Stop the packet checker if it is running */ - if (ark->start_pg) { + if (!ark->isvf && ark->start_pg) { ark_pktchkr_dump_stats(ark->pc); ark_pktchkr_stop(ark->pc); } @@ -694,6 +699,10 @@ eth_ark_dev_close(struct rte_eth_dev *dev) if (ark->rqpacing) ark_rqp_dump(ark->rqpacing); + /* return to power-on state */ + if (ark->pd) + ark_pktdir_setup(ark->pd, ARK_PKT_DIR_INIT_VAL); + for (i = 0; i < dev->data->nb_tx_queues; i++) { eth_ark_tx_queue_release(dev->data->tx_queues[i]); dev->data->tx_queues[i] = 0; @@ -978,6 +987,10 @@ eth_ark_check_args(struct ark_adapter *ark, const char *params) goto free_kvlist; } + if (ark->isvf) { + ret = 0; + goto free_kvlist; + } ARK_PMD_LOG(INFO, "packet director set to 0x%x\n", ark->pkt_dir_v); /* Setup the packet director */ ark_pktdir_setup(ark->pd, ark->pkt_dir_v); diff --git a/drivers/net/ark/ark_global.h b/drivers/net/ark/ark_global.h index 3c3a712bc8..748db590c1 100644 --- a/drivers/net/ark/ark_global.h +++ b/drivers/net/ark/ark_global.h @@ -113,6 +113,7 @@ struct ark_adapter { ark_pkt_dir_t pd; int num_ports; + bool isvf; /* Packet generator/checker args */ char pkt_gen_args[ARK_MAX_ARG_LEN];