|
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 |
|