[PATCH] common/cnxk: handle increased count eot width for cn20k
Nawal Kishor
nkishor at marvell.com
Fri Oct 30 06:37:50 CET 2026
The COUNT_EOT field of NPA_LF_AURA_BATCH_FREE0 is 1 bit wide on CN10K
and 2 bits wide on CN20K. Extend roc_npa_aura_batch_free() and
roc_npa_aura_batch_free_burst() to write the 2-bit field.
Bit 33 is reserved on CN10K and is ignored by the hardware, so the same
value can be used on both models.
Signed-off-by: Nawal Kishor <nkishor at marvell.com>
---
drivers/common/cnxk/roc_npa.h | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/drivers/common/cnxk/roc_npa.h b/drivers/common/cnxk/roc_npa.h
index df68e13ec6..a31f908955 100644
--- a/drivers/common/cnxk/roc_npa.h
+++ b/drivers/common/cnxk/roc_npa.h
@@ -509,14 +509,20 @@ roc_npa_aura_batch_free(uint64_t aura_handle, uint64_t const *buf,
/*
* NPA_LF_AURA_BATCH_FREE0
*
- * 63 63 62 33 32 32 31 20 19 0
+ * 63 63 62 34 33 32 31 20 19 0
* -----------------------------------------
* | FABS | Rsvd | COUNT_EOT | Rsvd | AURA |
* -----------------------------------------
*/
free0 = roc_npa_aura_handle_to_aura(aura_handle);
- free0 |= ((uint64_t)!!fabs << 63);
- free0 |= ((uint64_t)(num & 0x1) << 32);
+ free0 |= ((uint64_t) !!fabs << 63);
+
+ /*
+ * COUNT_EOT field is 1-bit wide in cn10k and is 2-bit wide in
+ * cn20k. However we can consider it as 2-bit wide for all cases
+ * as the upper bit is going to get ignored in cn10k.
+ */
+ free0 |= ((uint64_t)(num & 0x3) << 32);
/* tar_addr[4:6] is LMTST size-1 in units of 128b */
tar_addr = addr | ((num >> 1) << 4);
@@ -546,14 +552,19 @@ roc_npa_aura_batch_free_burst(uint64_t aura_handle, uint64_t const *buf,
NPA_LF_AURA_BATCH_FREE0;
tar_addr = addr | (0x7 << 4);
- /* 63 63 62 33 32 32 31 20 19 0
+ /* 63 63 62 34 33 32 31 20 19 0
* -----------------------------------------
* | FABS | Rsvd | COUNT_EOT | Rsvd | AURA |
* -----------------------------------------
*/
free0 = roc_npa_aura_handle_to_aura(aura_handle);
- free0 |= ((uint64_t)!!fabs << 63);
- free0 |= (0x1UL << 32);
+ free0 |= ((uint64_t) !!fabs << 63);
+ /*
+ * COUNT_EOT field is 1-bit wide in cn10k and is 2-bit wide in
+ * cn20k. However we can consider it as 2-bit wide for all cases
+ * as the upper bit is going to get ignored in cn10k.
+ */
+ free0 |= (0x3UL << 32);
/* Fill the lmt lines */
lmt_data = (uint64_t *)lmt_addr;
--
2.48.1
More information about the dev
mailing list