Denis Kirjanov 1c0546
From acef159a0cb2a978d62b641e2366a33ad1d5afef Mon Sep 17 00:00:00 2001
Denis Kirjanov 1c0546
From: Camelia Groza <camelia.groza@nxp.com>
Denis Kirjanov 1c0546
Date: Mon, 2 Nov 2020 20:34:35 +0200
Denis Kirjanov 1c0546
Subject: [PATCH] dpaa_eth: update the buffer layout for non-A050385 erratum
Denis Kirjanov 1c0546
 scenarios
Denis Kirjanov 1c0546
Git-commit: acef159a0cb2a978d62b641e2366a33ad1d5afef
Denis Kirjanov 1c0546
Patch-mainline: v5.10-rc2
Denis Kirjanov 1c0546
References: git-fixes
Denis Kirjanov 1c0546
Denis Kirjanov 1c0546
Impose a larger RX private data area only when the A050385 erratum is
Denis Kirjanov 1c0546
present on the hardware. A smaller buffer size is sufficient in all
Denis Kirjanov 1c0546
other scenarios. This enables a wider range of linear Jumbo frame
Denis Kirjanov 1c0546
sizes in non-erratum scenarios, instead of turning to multi
Denis Kirjanov 1c0546
buffer Scatter/Gather frames. The maximum linear frame size is
Denis Kirjanov 1c0546
increased by 128 bytes for non-erratum arm64 platforms.
Denis Kirjanov 1c0546
Denis Kirjanov 1c0546
Cleanup the hardware annotations header defines in the process.
Denis Kirjanov 1c0546
Denis Kirjanov 1c0546
Fixes: 3c68b8fffb48 ("dpaa_eth: FMan erratum A050385 workaround")
Denis Kirjanov 1c0546
Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
Denis Kirjanov 1c0546
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Denis Kirjanov 1c0546
Acked-by: Denis Kirjanov <denis.kirjanov@suse.com>
Denis Kirjanov 1c0546
---
Denis Kirjanov 1c0546
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 16 ++++++++++------
Denis Kirjanov 1c0546
 1 file changed, 10 insertions(+), 6 deletions(-)
Denis Kirjanov 1c0546
Denis Kirjanov 1c0546
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
Denis Kirjanov 1c0546
index 06cc863f4dd6..3eaa5f21aab0 100644
Denis Kirjanov 1c0546
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
Denis Kirjanov 1c0546
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
Denis Kirjanov 1c0546
@@ -174,12 +174,17 @@ MODULE_PARM_DESC(tx_timeout, "The Tx timeout in ms");
Denis Kirjanov 1c0546
 #define DPAA_PARSE_RESULTS_SIZE sizeof(struct fman_prs_result)
Denis Kirjanov 1c0546
 #define DPAA_TIME_STAMP_SIZE 8
Denis Kirjanov 1c0546
 #define DPAA_HASH_RESULTS_SIZE 8
Denis Kirjanov 1c0546
+#define DPAA_HWA_SIZE (DPAA_PARSE_RESULTS_SIZE + DPAA_TIME_STAMP_SIZE \
Denis Kirjanov 1c0546
+		       + DPAA_HASH_RESULTS_SIZE)
Denis Kirjanov 1c0546
+#define DPAA_RX_PRIV_DATA_DEFAULT_SIZE (DPAA_TX_PRIV_DATA_SIZE + \
Denis Kirjanov 1c0546
+					dpaa_rx_extra_headroom)
Denis Kirjanov 1c0546
 #ifdef CONFIG_DPAA_ERRATUM_A050385
Denis Kirjanov 1c0546
-#define DPAA_RX_PRIV_DATA_SIZE (DPAA_A050385_ALIGN - (DPAA_PARSE_RESULTS_SIZE\
Denis Kirjanov 1c0546
-	 + DPAA_TIME_STAMP_SIZE + DPAA_HASH_RESULTS_SIZE))
Denis Kirjanov 1c0546
+#define DPAA_RX_PRIV_DATA_A050385_SIZE (DPAA_A050385_ALIGN - DPAA_HWA_SIZE)
Denis Kirjanov 1c0546
+#define DPAA_RX_PRIV_DATA_SIZE (fman_has_errata_a050385() ? \
Denis Kirjanov 1c0546
+				DPAA_RX_PRIV_DATA_A050385_SIZE : \
Denis Kirjanov 1c0546
+				DPAA_RX_PRIV_DATA_DEFAULT_SIZE)
Denis Kirjanov 1c0546
 #else
Denis Kirjanov 1c0546
-#define DPAA_RX_PRIV_DATA_SIZE	(u16)(DPAA_TX_PRIV_DATA_SIZE + \
Denis Kirjanov 1c0546
-					dpaa_rx_extra_headroom)
Denis Kirjanov 1c0546
+#define DPAA_RX_PRIV_DATA_SIZE DPAA_RX_PRIV_DATA_DEFAULT_SIZE
Denis Kirjanov 1c0546
 #endif
Denis Kirjanov 1c0546
 
Denis Kirjanov 1c0546
 #define DPAA_ETH_PCD_RXQ_NUM	128
Denis Kirjanov 1c0546
@@ -2827,8 +2827,7 @@ static inline u16 dpaa_get_headroom(stru
Denis Kirjanov 1c0546
 	 *
Denis Kirjanov 1c0546
 	 * Also make sure the headroom is a multiple of data_align bytes
Denis Kirjanov 1c0546
 	 */
Denis Kirjanov 1c0546
-	headroom = (u16)(bl->priv_data_size + DPAA_PARSE_RESULTS_SIZE +
Denis Kirjanov 1c0546
-		DPAA_TIME_STAMP_SIZE + DPAA_HASH_RESULTS_SIZE);
Denis Kirjanov 1c0546
+	headroom = (u16)(bl->priv_data_size + DPAA_HWA_SIZE);
Denis Kirjanov 1c0546
 
Denis Kirjanov 1c0546
 	return DPAA_FD_DATA_ALIGNMENT ? ALIGN(headroom,
Denis Kirjanov 1c0546
 					      DPAA_FD_DATA_ALIGNMENT) :
Denis Kirjanov 1c0546
-- 
Denis Kirjanov 1c0546
2.16.4
Denis Kirjanov 1c0546