On 5/20/2022 3:15 PM, Ed Czeck wrote:
> 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.
This means dpdk21.08 & dpdk21.11 supports "Arkville 21.05", right?
And what exactly "Arkville 22.07" represents, I assume it is a package
distributed by Arkville. Is the "Arkville 22.07" information enough, or
is there any benefit to document required FW versions?
Also can you please update release notes that device FW(s) needs to be
updated to "Arkville 22.07".
@@ -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
---------------------------
@@ -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);
}
@@ -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);
}
@@ -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
@@ -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