[v2,7/9] net/dpaa2: configure buffer layout
Checks
Commit Message
From: Jun Yang <jun.yang@nxp.com>
Make header room big enough for IPSec with TX dynamic confirm enabled.
Ingress minimum header room:
64(size of parser result) + 8(address of SEC context) * 2.
Egress minimum header room:
88(FAEAD offset) + 8(FAEAD size) + 8(address of SEC context) * 2 +
114(expansion).
Signed-off-by: Jun Yang <jun.yang@nxp.com>
---
drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 10 ++++++++++
drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 4 +---
drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 18 ++++++++++++++++--
drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 6 ++++++
drivers/net/dpaa2/dpaa2_ethdev.h | 6 +++++-
5 files changed, 38 insertions(+), 6 deletions(-)
@@ -84,6 +84,16 @@
#define DPAA2_INVALID_FLOW_ID 0xffff
#define DPAA2_INVALID_CGID 0xff
+#define SEC_FLC_DHR_OUTBOUND (-114)
+#define SEC_FLC_DHR_INBOUND 0
+
+/** Consider aligning with 8 bytes to multiply point size with 2.*/
+#define DPAA2_SEC_SIMPLE_FD_OB_MIN \
+ ((-SEC_FLC_DHR_OUTBOUND) + sizeof(void *) * 2)
+
+#define DPAA2_SEC_SIMPLE_FD_IB_MIN \
+ ((-SEC_FLC_DHR_INBOUND) + sizeof(void *) * 2)
+
struct dpaa2_queue;
struct eqresp_metadata {
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016,2020-2023 NXP
+ * Copyright 2016,2020-2024 NXP
*
*/
@@ -20,8 +20,6 @@ extern uint8_t cryptodev_driver_id;
#define FLE_POOL_BUF_SIZE 256
#define FLE_POOL_CACHE_SIZE 512
#define FLE_SG_MEM_SIZE(num) (FLE_POOL_BUF_SIZE + ((num) * 32))
-#define SEC_FLC_DHR_OUTBOUND -114
-#define SEC_FLC_DHR_INBOUND 0
#define MAX_QUEUES 64
#define MAX_DESC_SIZE 64
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2021 NXP
+ * Copyright 2016-2021,2023-2024 NXP
*
*/
@@ -492,7 +492,21 @@ dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv,
*/
/* ... rx buffer layout ... */
- tot_size = RTE_PKTMBUF_HEADROOM;
+ if (priv->flags & DPAA2_TX_DYNAMIC_CONF_ENABLE) {
+ int out_min_hdr_room, in_min_hdr_room;
+ /** Additional headroom layout for IPSec with TX configure
+ * dynamic enabled.
+ */
+ in_min_hdr_room = DPAA2_RX_MIN_FD_OFFSET +
+ DPAA2_SEC_SIMPLE_FD_IB_MIN;
+ out_min_hdr_room = DPAA2_DYN_TX_MIN_FD_OFFSET +
+ DPAA2_SEC_SIMPLE_FD_OB_MIN;
+ tot_size = RTE_MAX(in_min_hdr_room, out_min_hdr_room);
+ if (tot_size < RTE_PKTMBUF_HEADROOM)
+ tot_size = RTE_PKTMBUF_HEADROOM;
+ } else {
+ tot_size = RTE_PKTMBUF_HEADROOM;
+ }
tot_size = RTE_ALIGN_CEIL(tot_size, DPAA2_PACKET_LAYOUT_ALIGN);
memset(&layout, 0, sizeof(struct dpni_buffer_layout));
@@ -253,6 +253,9 @@ struct dpaa2_annot_hdr {
#define PARSE_ERROR_CODE(var) ((uint64_t)(var) & 0xFF00000000000000)
#define SOFT_PARSING_CONTEXT(var) ((uint64_t)(var) & 0x00FFFFFFFFFFFFFF)
+#define DPAA2_RX_MIN_FD_OFFSET \
+ (DPAA2_FD_PTA_SIZE + sizeof(struct dpaa2_annot_hdr))
+
/*FAEAD offset in anmotation area*/
#define DPAA2_FD_HW_ANNOT_FAEAD_OFFSET 0x58
@@ -261,6 +264,9 @@ struct dpaa2_faead {
uint32_t ctrl;
};
+#define DPAA2_DYN_TX_MIN_FD_OFFSET \
+ (DPAA2_FD_HW_ANNOT_FAEAD_OFFSET + sizeof(struct dpaa2_faead))
+
/*FAEAD bits */
/*A2 OMB contains valid data*/
#define DPAA2_ANNOT_FAEAD_A2V 0x20000000
@@ -70,8 +70,12 @@
/* Disable RX tail drop, default is enable */
#define DPAA2_RX_TAILDROP_OFF 0x04
/* Tx confirmation enabled */
-#define DPAA2_TX_CONF_ENABLE 0x06
+#define DPAA2_TX_CONF_ENABLE 0x08
+/* Tx dynamic confirmation enabled,
+ * only valid with Tx confirmation enabled.
+ */
+#define DPAA2_TX_DYNAMIC_CONF_ENABLE 0x10
/* DPDMUX index for DPMAC */
#define DPAA2_DPDMUX_DPMAC_IDX 0