From patchwork Tue Jun 7 21:31:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112500 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 586FFA0548; Tue, 7 Jun 2022 23:31:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 09A1F40689; Tue, 7 Jun 2022 23:31:58 +0200 (CEST) Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by mails.dpdk.org (Postfix) with ESMTP id 20A144021D for ; Tue, 7 Jun 2022 23:31:56 +0200 (CEST) Received: by mail-qv1-f52.google.com with SMTP id s10so10091354qvt.8 for ; Tue, 07 Jun 2022 14:31:56 -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=YrECpg30ZEXAAZYCFw0YoSCCqbdX9jCD+zQunVneuPs=; b=Qk9R11nuHMR0FwZM0y8Qs0VjHNjwDtMZLq1sl10A+KKmIWceRXe0l4FrRQiDPofeSC E7GGVX7NlHb29LnJJRnqWwLzAkj/LLhTROsuZ55ELzQejtzLN8dCAqcYix9RCAXqhK41 DosXOwloe9pCPFqqoszlhPImB9FBLTv/7N2GHXCBhnzdwV1zoOjFZPxclyJYvL42pECO evgiaZQ9PHaUjk8SqTBMwe/5h6g3qY/MqUlM01uk02eaJCUmRMS3D8F+GYafFZRoxNst qEJT9ECJbKzECUi4bcrnb8lcTaB0LWys1x4yWUAgAgeBf5ANBczSPlVAYkV8HqAMG9Hv N+tg== 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=YrECpg30ZEXAAZYCFw0YoSCCqbdX9jCD+zQunVneuPs=; b=0grJPTv7xdmB/gWcJn0XGVeJYNJAM4Jz/N2I2eIvDw0THtdwQxuatrPuG2jB/kzpHx YWv96w7uAvJsqkSLzpEkLYPtOVbkAvm6dQRps6eV/J9Mz6Fz+I/Ejhycsfc9P2k5Rg8x R081YGsr8GnUDUnegHuTrehEgxsYFIGZ5k+Feach8ENG5ZjNWlA7DBMCAdiHLSmD6OkZ DxVUz9f/lK/Q/3yRoM4AYUmaMh9kE8jYcO/hszoQxgYm57dQVFt5Y4Y+c2l0dZ0/jgrJ oBlYAPcwE+VpHjdgdrAah1arLKjb/6nsTvU38npZdIcoMjT1DEmCpH/0DzyfUmvnOM3s Ybzw== X-Gm-Message-State: AOAM531UvKPO47vbHa9OIoRwTldO4lkydsQjfRem2xc8wzCo8BjwAA0w L7ZOQM7diXHf6jfebLUnY5uawCwmvVaDog== X-Google-Smtp-Source: ABdhPJw42RjHODC+wPxKCGhG15Q8xo7dbKYJOJx0CoE1u6SZXi2mk1J4PmCy96xj0dX5KcqTcgwCPg== X-Received: by 2002:a05:6214:d48:b0:464:5048:c14f with SMTP id 8-20020a0562140d4800b004645048c14fmr23764771qvr.125.1654637515145; Tue, 07 Jun 2022 14:31:55 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.31.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:31:54 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org, Thomas Monjalon Subject: [PATCH v4 1/7] devtools: add Atomic Rules acronyms for commit checks Date: Tue, 7 Jun 2022 17:31:43 -0400 Message-Id: <20220607213149.1980193-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 Acked-by: Ferruh Yigit --- devtools/words-case.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devtools/words-case.txt b/devtools/words-case.txt index 2f1753bdc8..53e029a958 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 @@ -91,6 +93,7 @@ TPID TSO TTL Tx +UDM UDP ULP vDPA From patchwork Tue Jun 7 21:31:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112501 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 3006BA0548; Tue, 7 Jun 2022 23:32:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D9C9F42685; Tue, 7 Jun 2022 23:32:00 +0200 (CEST) Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) by mails.dpdk.org (Postfix) with ESMTP id 642FB41614 for ; Tue, 7 Jun 2022 23:31:59 +0200 (CEST) Received: by mail-qv1-f43.google.com with SMTP id u8so13241461qvj.2 for ; Tue, 07 Jun 2022 14:31:59 -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=qvTUaqwqtjeRBlvgqVDFNGm6RKYwUEmvu/7/Y4Gcb0g=; b=Cz+qEQfFLthzdiuBKIMfd8MGHp8Hh7Px+1h6cyln8MCdIM9dlHRFRUXBOSE+YTPO7l RLubpfPEeKU51w82v139EAhlyKhUnQk3nmpYDfH1AyxuLGssi1+fQ9qVvhjFmdCMk1m+ +SkM11o+xPTWFoGt2dVcJk0UbcOxMvMd7Pmhipb/upKlvB2N3LHJ0GcFmKDzWnnO+dGW 4AwB5/skMIHWRuBIoVnMOnpvBl03AS4TCYOFcd5XD6fmqx4d0aZ2060diRz0tmwdh7UN EnQI1JrjMYfSM1jv13MGYM4SzZS5V+8NwZRYjktIC1PGPfS7yAGEhP1omH58+tpewYrV aDzw== 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=qvTUaqwqtjeRBlvgqVDFNGm6RKYwUEmvu/7/Y4Gcb0g=; b=zqV+z7m3NErwAFdrK2Z3/KbnthaaRvuQXEjdKULHwov8pLTwEeb9scBncpzD92rez6 2Dvus1NQHkyywgA2NT802Ab1x4hRfApSMNg/1cHsOa7TJuKCN6XB8ssEG9mz68kyOe3+ OwZTbDiii03Ta0BAfwt+eu+q4U8hXhSsuBtbPaecRQMl9oSb0AkLHi5dQNj3lbeJ2rzo hj+e6xWMZU2z+5OL5jm/HqdWM6AtgRVdLaUwAPKtNvYz/Du1joSYGN6zQMANHDZnoeps Z9I53Kk25kIY1e/AApzlj7E09xyi6bCf6d1ETcGqwhqP+8fQgjHwvjg2ziKSgmeJsOzD iVGg== X-Gm-Message-State: AOAM530rPwuxH3Jub6UruelACEUWVjj/bi9bu1EgN4z32sAVQS6IOZmI DQagMCi4PZCdNmKqcuNYkffiHTi82A/EKQ== X-Google-Smtp-Source: ABdhPJzfSmeWvtqnA1q8mHHM+5d6j7g3Z8W6y+NvhfEcaL3OXZuftawHThvlw3qMuRvozXM2kkmkuA== X-Received: by 2002:a05:6214:234f:b0:467:cb08:ae57 with SMTP id hu15-20020a056214234f00b00467cb08ae57mr22194272qvb.36.1654637517424; Tue, 07 Jun 2022 14:31:57 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.31.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:31:56 -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 v4 2/7] net/ark: update MPU functions for firmware update Date: Tue, 7 Jun 2022 17:31:44 -0400 Message-Id: <20220607213149.1980193-2-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 v4: - clarify version compatibility note - firmware change requirement added to release notes --- doc/guides/nics/ark.rst | 19 +++++++++++++++++ doc/guides/rel_notes/release_22_07.rst | 3 +++ 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 ++------------------------ 6 files changed, 28 insertions(+), 50 deletions(-) diff --git a/doc/guides/nics/ark.rst b/doc/guides/nics/ark.rst index 60b61e08e8..d8acb36d74 100644 --- a/doc/guides/nics/ark.rst +++ b/doc/guides/nics/ark.rst @@ -300,6 +300,25 @@ 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 releases 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 between DPDK releases and the corresponding +Arkville releases. Intermediate releases not listed below remain +compatible, e.g., DPDK releases 21.05, 21.08, and 21.11 are all compatible +with Arkville releases 21.05, 21.08 and 21.11. LTS versions of DPDK remain +compatible with the corresponding Arkville version. 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/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index d46f773df0..aca946cea6 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -170,6 +170,9 @@ New Features This is a fall-back implementation for platforms that don't support vector operations. +* **Updated Atomic Rules' Arkville PMD.** + + A firmware version update to Arkville 22.07 is required. Removed Items ------------- 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 21:31:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112502 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 82A5EA0548; Tue, 7 Jun 2022 23:32:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 02F60427EC; Tue, 7 Jun 2022 23:32:04 +0200 (CEST) Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by mails.dpdk.org (Postfix) with ESMTP id 75D95427EC for ; Tue, 7 Jun 2022 23:32:01 +0200 (CEST) Received: by mail-qk1-f171.google.com with SMTP id x65so14223005qke.2 for ; Tue, 07 Jun 2022 14:32:01 -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=L+XSvH1yhtJA4+j2yBGCOXYHqz/ePbjPlWrDCaj13xX5PicLQfOgYmMc094hAE1grr iYhf4LEVYZsQwUeOmLz7FVsQwVz5FqR2py6opTXwhQ3ZnRsq4XOniEO57Z4QQ3NuwcKR BkYCMTgCvHSBUYsUCdUZ94BXY0md6134I1L6Qi3aBL++MZK53soNw8QY54ugcV1QiIcu UY2KOEoMkiE6cUNq0l1gr2J3ZHU3RjwhC6wO+VtCiYfp9gHRtFIfjXiasdGPLUFbBx4k zvSFSLWYOZAR0sSJC+oEa6UkOnD6HTGhysL3qm7Z2wDwppaIcBjOXsbvPTGNPX4U62cz WFNg== 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=ELtN00Z3Zn9k9UtCjGnzKRReP4HBV7NofZ/1xIK/4JiTB72uzRYtW7zTt6+b59T2Fw RdQLcAedPGsA7FqFzDoX175jGtvwOy8n2mvrN/isLQHpw5gzikOTv/N61V9o39Uq27OX pjNYye96D6hIGFYITTmPIErj77F0TtUPtpE77TdvahIb1aPYeGXVVs9lFwhtMqYjeqC6 9NHfgc7wrGghZGkj/uvKDvltkGdsNho7jlTnWU1IhjAt8H2sw5e+cR4BJXeKqEOZOPcX lGaYBINAJJB0DFrvoSi9MAFbqBEpMYX/WkJNsELqPmjRWLl5Zq/AEhwcRVbRzbyyZZMm qUXA== X-Gm-Message-State: AOAM5312hbEs22j0GF1DXkK0Da7CMCk8mRP92zKxiEChnF3WVN+K2YoK TYoshMucF020gl1zPyKyANRaUBjKIpWK3A== X-Google-Smtp-Source: ABdhPJwlikESNlF0lmwWVYp0Fv3aYDJA+NnYeJhVQiW33r8CUmW7U/7cSF3l/TXKuCTLWy8CkAA4yQ== X-Received: by 2002:a05:620a:2a14:b0:6a7:327:14c4 with SMTP id o20-20020a05620a2a1400b006a7032714c4mr51815qkp.3.1654637520440; Tue, 07 Jun 2022 14:32:00 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.31.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:31:59 -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 v4 3/7] net/ark: update DDM functions for firmware update Date: Tue, 7 Jun 2022 17:31:45 -0400 Message-Id: <20220607213149.1980193-3-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 21:31:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112503 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 7FC03A0548; Tue, 7 Jun 2022 23:32:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E623D42802; Tue, 7 Jun 2022 23:32:04 +0200 (CEST) Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by mails.dpdk.org (Postfix) with ESMTP id ED066427EC for ; Tue, 7 Jun 2022 23:32:02 +0200 (CEST) Received: by mail-qk1-f171.google.com with SMTP id x65so14223005qke.2 for ; Tue, 07 Jun 2022 14:32:02 -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=J+KbUfbmGcgh60Sx0hDgWT3734RZqg+r94OoNyfZ03vK2ZTWewHlSa3YWzBgRnVS9B jLoO1m7SGELEHuUaFe498YC3aXN7IG1RXVSXNVgkPph3XLNoAFzV247GboVd7aSyhPWR biKXBdLm1bz27hNhClsJP0OgVdzUCti6KO7guAMaw9gmqv/ZWnt/2QAT2k9D6qsd5XCV tCXZpVFOa8fPpzmMWNEiibi7uKxABXvFanwSAwNNyCAAbyqx4MsFLbkikVMrZPZBa+0O K/uvOyYV12g46270BKLWM0El2RSokWtSznjOxTqTyhP+fCwJ0OEUdzfI1pqEdCtS/JjM EZyQ== 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=7y9IWgjAltB9KeyRXVNPxMTMTxEUxwNVA9HZqph9Bi1QFa/p/nCAqbd6sztA7683ls KcwU3aonP3ND8jLn7Cz1rAwiahbWTXrBY6QzKvXpMQdd89UQmsjH45Ohynm0SuFdIAld iR36DD4NftjES2WoSdrMAMSQJdDFBxbJFvDpyt5vLDhlep0XTnhcpxSkpEkC8DtbVRMw YjyTD0eGlImRsPQ1GTCOgTLWt+kp1h3GmXlwS5CZ5g5j8bRDbIrynXwhL0kll//m7UMQ XP/+/WRNILy1qmHFYCdAGJ5WJt4VqKPQ8wE/VIzuKq9IdkZ+Xac40tScbXWHhNeJCAAL FhQQ== X-Gm-Message-State: AOAM533T4T6QpZ7WQnHrLE7QVMq9cNc+Ltei7JeWv3NXPuBe9zLDyFly h/TSP0ELyhXCem+sU3q+bGQ4y8pPahcV9g== X-Google-Smtp-Source: ABdhPJxP3pvG/TCGi/RyWztfC3LbKe76itNubjSoghbucGy0xQRh8x77d/SIyAiJwjsHbUZJ5PiMPA== X-Received: by 2002:a05:620a:2552:b0:67b:32e2:2400 with SMTP id s18-20020a05620a255200b0067b32e22400mr19923324qko.768.1654637522128; Tue, 07 Jun 2022 14:32:02 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:32:01 -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 v4 4/7] net/ark: update UDM functions for firmware update Date: Tue, 7 Jun 2022 17:31:46 -0400 Message-Id: <20220607213149.1980193-4-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 21:31:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112504 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 A369AA0548; Tue, 7 Jun 2022 23:32:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F34242847; Tue, 7 Jun 2022 23:32:06 +0200 (CEST) Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by mails.dpdk.org (Postfix) with ESMTP id 9F2404281B for ; Tue, 7 Jun 2022 23:32:05 +0200 (CEST) Received: by mail-qv1-f45.google.com with SMTP id i19so13219318qvu.13 for ; Tue, 07 Jun 2022 14:32:05 -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=hia7QID9T9XiER9VoxXAkV2OtUtxG3TWDidFXFty+AS10qvWmNJskKrhTKN6fx05ez cOGjArkHBj6ao8jPTA1wNC61tsPcU4J2+9CM3u0RYzz2E5UlyKaquUn/jRjLtx9yiuGC bwN6CO2GdeUrFzb6YyA0Ns6UEojnrXqeB+pJd5DHC36OP10kLvrHWDrIZ5ekJ1HGtcdX /d4qMTiz2Lv1IcjGTHztF1kuJNwgaZyNEBPv1HflIYG9Fm9AStx95C02faq2SXXUZUeA YimYhVlFOIHdGU6o/wA7iYW8DIN1WYrPU/p52LpczpOQwvTxFabX1fMd80OYaMJMeJst DeSw== 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=hvUADdyiyeQf9h5hDMHKPzO+WzdEb0sXVarP0TwCoB520eZ9b9qmrYJ40rrOKyGlLC bRpGFj8if92Zg0tO7r7SQcUx+MRT5Dv+b4/SqHwJCS6E5kU/+J0axoxGeZAKoNTVbERu CAPsMpIEcatg7zHXfDN1Sq6gZmlnQSivapPFyWccPrJ3iDkLkZOxmmgaJUjJwsTLuJMi bp0w3cI5mqcEVj2wJP+W+7Ic6LE3gK97/RnJYdhXrk5rc0dRcy23y1DGcJYb0cItn7jP lOcbKi7pUnSfdxy4NUrUPVLkXJUmqZ5cR4CHQj1lIUF4WUbQ8b5BPl3g/DVXntTbrzZ0 lJzg== X-Gm-Message-State: AOAM532sz9mDgO08L5R6b7Qpm/fwCEsDjMLgUst6hy5K52lPB1ftYOsB 00yX5bsIqR9oYa+a215V5KInY6YUapZWNQ== X-Google-Smtp-Source: ABdhPJw3ohndThZqawwAJ1Im5p2Xol4NMG8ibu+m7NKORZdJtDo32pPuXbrC1VEToDF4OBgQThcIzQ== X-Received: by 2002:a05:6214:1150:b0:464:4bd3:e931 with SMTP id b16-20020a056214115000b004644bd3e931mr23480527qvt.32.1654637523771; Tue, 07 Jun 2022 14:32:03 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.32.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:32:03 -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 v4 5/7] net/ark: report additional errors from firmware Date: Tue, 7 Jun 2022 17:31:47 -0400 Message-Id: <20220607213149.1980193-5-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 21:31:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112505 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 CFF5BA0548; Tue, 7 Jun 2022 23:32:31 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4A2CF4281C; Tue, 7 Jun 2022 23:32:09 +0200 (CEST) Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by mails.dpdk.org (Postfix) with ESMTP id 5038942B6C for ; Tue, 7 Jun 2022 23:32:06 +0200 (CEST) Received: by mail-qt1-f179.google.com with SMTP id f13so158141qtb.5 for ; Tue, 07 Jun 2022 14:32:06 -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=Bf3z7a+taGjKMT7oIi4kO/Ac2DFDiYXoJp3LQ2cZXKk=; b=0hiU4pv4mp3TWyEeFLcD1BZlRipdRdCblfe/7rx//KHI43daTfgHNoHUmm5lnc5Cq1 dmMdG0ZxHJ8e0Vx9hkgpuVrCZrr1bkUEf4M/if6J/NPdoC3HVN+bEMz1v47pvqKE7tJ1 mxw3P1Mrm71iUKD4W/02yB8sb8DNwgik1qLrqoV6cnCWnEYjnFs3bEj6peG3/CH/zDct JPvyEPHczO/dKJri672NOg9fQDuNWpPplybp3Xu+hZ4vHNd/j+pYTKFzT5VKQ+veB2A+ FFAXu8/UM4Yqf27Ir6G+dibcEvML9tdVaF4/VNmh8PXuPw9gBSds6z9hxVzgtFIc5bDy ll5A== 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=Bf3z7a+taGjKMT7oIi4kO/Ac2DFDiYXoJp3LQ2cZXKk=; b=M2z4ugvYxybu25dm58bUpsfCPr0HbUtDEQnWygu1CTEvoVORqGzHuOFsp8eCI+HkL0 D0inoDpqzDT1YuSUBkxQpv+qYH62GgfHlnkF4D+LdPll73F5m6nyoA3lqbrltk8p3FaB 07kCdH402Bnkwq+pkCA4XrYzRxFb468XJPDkiE4LSi24l8/0TxzEv5u9HNzA8gM6AIQB KXKAPQV2CcCwekLkPK6BywxAJHClrOPKTpeg+R0+TGY69UIHjuQwHAiBazfZuVeYc8Gy K2cDliFkAYwANHcUjP9EIdCPNKzJlmVu3//zio+YTjRQjFm8kMqRiZvobW4lNRZJTGt4 nwlw== X-Gm-Message-State: AOAM530FSfoeHZgL3SAKdK7/ibkpMPm/u2wbPTMGjreAPwDtpaR1RDPh X9rDdbmtPVgeFjv4m8sqmcYrFOVFkGqPtQ== X-Google-Smtp-Source: ABdhPJy5f8yD9BC5p+9o4ucZVhwRHXgQ3ut/cPvuk6d3y/eXGFhHh6JG1qfbqt65c3qLCMJUvda7YQ== X-Received: by 2002:ac8:5a12:0:b0:304:f7a3:eea with SMTP id n18-20020ac85a12000000b00304f7a30eeamr4758413qta.332.1654637525399; Tue, 07 Jun 2022 14:32:05 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.32.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:32:04 -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 v4 6/7] net/ark: add new devices to support list Date: Tue, 7 Jun 2022 17:31:48 -0400 Message-Id: <20220607213149.1980193-6-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 v4: mention nee devices in release notes --- doc/guides/nics/ark.rst | 4 +++- doc/guides/rel_notes/release_22_07.rst | 2 ++ drivers/net/ark/ark_ethdev.c | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/guides/nics/ark.rst b/doc/guides/nics/ark.rst index d8acb36d74..591e41799c 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] @@ -341,7 +344,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/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index aca946cea6..191539cb72 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -174,6 +174,8 @@ New Features A firmware version update to Arkville 22.07 is required. + Added support for Atomic Rules PCI device IDs ``0x101a, 0x101b, 0x101c``. + Removed Items ------------- 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 21:31:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 112506 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 C9E93A0548; Tue, 7 Jun 2022 23:32:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 324D942B73; Tue, 7 Jun 2022 23:32:10 +0200 (CEST) Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) by mails.dpdk.org (Postfix) with ESMTP id DB08F427F9 for ; Tue, 7 Jun 2022 23:32:07 +0200 (CEST) Received: by mail-qv1-f49.google.com with SMTP id a9so13232937qvt.6 for ; Tue, 07 Jun 2022 14:32:07 -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=0TN11NY3TDP3GoRe5OBcvuey0uXrtxeKozw4p7CFtTE=; b=3J7rKU1uY7dD2jnz8hyaCc50vAwnS/YQK/5GWSeiXbCQYHjTPnlkH9ab3YaRLg/18p tyBGEHIM4irMzejCTBhR5x1wk8zTsAKkRZMflXZMeXQVoVZCalnSkuVhXw2xIURsg7Vo IUGgiCm1Uy8quZqASOZwP/BbGBL47hbBqImTek7+SG4hI5wMuiDGvvLubVbmx1xCTSQM kuqzNSB27jVDAOgdlhzHHjF63g7we/6r7TsDotT2QuFpWuhxxQBgBJ5iLmkcImw3YyS7 scenK2YKrh1ch2Pza3qavRDEA2A1O3uTSO/lUwH4PvUNKT39gJAItVSS0NPK1/v2FGOb y64g== 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=0TN11NY3TDP3GoRe5OBcvuey0uXrtxeKozw4p7CFtTE=; b=jPvIkgRTtjvhUpCdMDncyhj6ZsPk8VL3J9JJ9VYT31HWQFFDMz3+zPW7c5tUIJ+eQg 0kuDSzOcOiZjrPcJLquo66HqAJK1wxtPwtbFQt+/zYaGNl9nOKpSdc3DReWR11fbFM3H GjrBSecwqNiQdhQ0Gm52n2i3lcX9jaaYN3TenioLrZTjdj+3fMPijoSD/O5IKxz9LEoC i8JdsBX39TcGX9F+kZNXm89WiAMMUVBLwtf7/wmoLesW1T3rMu72/kWqE5nKNkgThbVE Ku7/rbfioDK0/EiS2Kl77mbloyRt87ZqFk3V/dLsdXvury3O8DEXmvuZmOf6PDH1zyw1 lGVg== X-Gm-Message-State: AOAM5328fE74+CvkcOgNnQtAFhaMw7HJJN1drw+MFn5V8HbRilaqZC7d mZ9wHXfsYP0b/vXjVl/EX8gVq6IvDQxojw== X-Google-Smtp-Source: ABdhPJwa4P9fsMDgkYCMMekrV/wI2+ykHG10CBEFL0FUcl6eEr72MrDtZ2du9kQJhz2TcVW5jqRRMQ== X-Received: by 2002:a05:6214:411e:b0:467:daa4:62bf with SMTP id kc30-20020a056214411e00b00467daa462bfmr19965020qvb.80.1654637526960; Tue, 07 Jun 2022 14:32:06 -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 x6-20020ae9f806000000b006a6cdc79229sm3774711qkh.55.2022.06.07.14.32.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 14:32:06 -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 v4 7/7] net/ark: add PMD support for devices as virtual functions Date: Tue, 7 Jun 2022 17:31:49 -0400 Message-Id: <20220607213149.1980193-7-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220607213149.1980193-1-ed.czeck@atomicrules.com> References: <20220502212232.1283-1-ed.czeck@atomicrules.com> <20220607213149.1980193-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 v4: split release note --- doc/guides/rel_notes/release_22_07.rst | 2 + drivers/net/ark/ark_ethdev.c | 83 +++++++++++++++----------- drivers/net/ark/ark_global.h | 1 + 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index 191539cb72..3a6df7bed9 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -176,6 +176,8 @@ New Features 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];