From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Content-Transfer-Encoding: 8bit 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 -- 2.25.1