From: Ed Czeck <ed.czeck@atomicrules.com>
To: dev@dpdk.org
Cc: ferruh.yigit@xilinx.com, ktraynor@redhat.com, bluca@debian.org,
Shepard Siegel <shepard.siegel@atomicrules.com>,
John Miller <john.miller@atomicrules.com>
Subject: [PATCH v2 2/7] net/ark: update MPU functions for firmware update
Date: Thu, 19 May 2022 17:36:37 -0400 [thread overview]
Message-ID: <20220519213642.2647946-2-ed.czeck@atomicrules.com> (raw)
In-Reply-To: <20220519213642.2647946-1-ed.czeck@atomicrules.com>
new firmware version for MPU (Mbuf Prefetch Unit)
remove device-level global operations
remove ark_mpu_reset_stats function
Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
---
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
--
2.25.1
next prev parent reply other threads:[~2022-05-19 21:37 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-02 21:22 [PATCH 1/4] net/ark: update mpu code to match current hardware version Ed Czeck
2022-05-02 21:22 ` [PATCH 2/4] net/ark: update ddm " Ed Czeck
2022-05-02 21:22 ` [PATCH 3/4] net/ark: update udm " Ed Czeck
2022-05-02 21:22 ` [PATCH 4/4] net/ark: add new devices to support list Ed Czeck
2022-05-05 15:37 ` [PATCH v1 1/5] net/ark: update mpu code to match current hardware version Ed Czeck
2022-05-05 15:37 ` [PATCH v1 2/5] net/ark: update ddm " Ed Czeck
2022-05-05 15:37 ` [PATCH v1 3/5] net/ark: update udm " Ed Czeck
2022-05-05 15:37 ` [PATCH v1 4/5] net/ark: add new devices to support list Ed Czeck
2022-05-05 15:37 ` [PATCH v1 5/5] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-05-06 21:27 ` [PATCH v1 1/5] net/ark: update mpu code to match current hardware version Ed Czeck
2022-05-06 21:27 ` [PATCH v1 2/5] net/ark: update ddm " Ed Czeck
2022-05-06 21:27 ` [PATCH v1 3/5] net/ark: update udm " Ed Czeck
2022-05-06 21:27 ` [PATCH v1 4/5] net/ark: add new devices to support list Ed Czeck
2022-05-06 21:27 ` [PATCH v1 5/5] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-05-18 12:56 ` Ferruh Yigit
2022-05-18 12:54 ` [PATCH v1 1/5] net/ark: update mpu code to match current hardware version Ferruh Yigit
2022-05-19 10:13 ` Kevin Traynor
2022-05-19 21:36 ` [PATCH v2 1/7] devtools: add Atomic Rules acronyms for commit checks Ed Czeck
2022-05-19 21:36 ` Ed Czeck [this message]
2022-05-19 21:36 ` [PATCH v2 3/7] net/ark: update DDM functions for firmware update Ed Czeck
2022-05-19 21:36 ` [PATCH v2 4/7] net/ark: update UDM " Ed Czeck
2022-05-19 21:36 ` [PATCH v2 5/7] net/ark: report additional errors from firmware Ed Czeck
2022-05-19 21:36 ` [PATCH v2 6/7] net/ark: add new devices to support list Ed Czeck
2022-05-20 8:14 ` Andrew Rybchenko
2022-05-19 21:36 ` [PATCH v2 7/7] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-05-20 14:15 ` [PATCH v2 1/7] devtools: add Atomic Rules acronyms for commit checks Ed Czeck
2022-05-20 14:15 ` [PATCH v2 2/7] net/ark: update MPU functions for firmware update Ed Czeck
2022-05-23 14:39 ` Ferruh Yigit
2022-05-20 14:15 ` [PATCH v2 3/7] net/ark: update DDM " Ed Czeck
2022-05-20 14:15 ` [PATCH v2 4/7] net/ark: update UDM " Ed Czeck
2022-05-20 14:15 ` [PATCH v2 5/7] net/ark: report additional errors from firmware Ed Czeck
2022-05-20 14:15 ` [PATCH v2 6/7] net/ark: add new devices to support list Ed Czeck
2022-05-20 14:15 ` [PATCH v2 7/7] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-05-23 14:38 ` Ferruh Yigit
2022-06-07 15:49 ` [PATCH v3 1/7] devtools: add Atomic Rules acronyms for commit checks Ed Czeck
2022-06-07 15:49 ` [PATCH v3 2/7] net/ark: update MPU functions for firmware update Ed Czeck
2022-06-07 15:49 ` [PATCH v3 3/7] net/ark: update DDM " Ed Czeck
2022-06-07 15:49 ` [PATCH v3 4/7] net/ark: update UDM " Ed Czeck
2022-06-07 15:49 ` [PATCH v3 5/7] net/ark: report additional errors from firmware Ed Czeck
2022-06-07 15:49 ` [PATCH v3 6/7] net/ark: add new devices to support list Ed Czeck
2022-06-07 15:49 ` [PATCH v3 7/7] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-06-07 21:31 ` [PATCH v4 1/7] devtools: add Atomic Rules acronyms for commit checks Ed Czeck
2022-06-07 21:31 ` [PATCH v4 2/7] net/ark: update MPU functions for firmware update Ed Czeck
2022-06-07 21:31 ` [PATCH v4 3/7] net/ark: update DDM " Ed Czeck
2022-06-07 21:31 ` [PATCH v4 4/7] net/ark: update UDM " Ed Czeck
2022-06-07 21:31 ` [PATCH v4 5/7] net/ark: report additional errors from firmware Ed Czeck
2022-06-07 21:31 ` [PATCH v4 6/7] net/ark: add new devices to support list Ed Czeck
2022-06-07 21:31 ` [PATCH v4 7/7] net/ark: add PMD support for devices as virtual functions Ed Czeck
2022-06-08 8:41 ` [PATCH v4 1/7] devtools: add Atomic Rules acronyms for commit checks Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220519213642.2647946-2-ed.czeck@atomicrules.com \
--to=ed.czeck@atomicrules.com \
--cc=bluca@debian.org \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@xilinx.com \
--cc=john.miller@atomicrules.com \
--cc=ktraynor@redhat.com \
--cc=shepard.siegel@atomicrules.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).