[LEDE-DEV] [PATCH] ag71xx: Reorder ring structs for lower cache trashing.

Rosen Penev rosenp at gmail.com
Tue Jan 30 08:14:06 PST 2018


Based on Qualcomm's upstream code. Reordered a bit different.

iperf3 speed goes from ~279mbps to ~320mbps.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 .../files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h      | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
index a712812..d181240 100644
--- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
+++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
@@ -106,13 +106,16 @@ struct ag71xx_buf {
 };
 
 struct ag71xx_ring {
-	struct ag71xx_buf	*buf;
-	u8			*descs_cpu;
-	dma_addr_t		descs_dma;
-	u16			desc_split;
-	u16			order;
+	/* "Hot" fields in the data path. */
 	unsigned int		curr;
 	unsigned int		dirty;
+
+	/* "Cold" fields - not used in the data path. */
+	struct ag71xx_buf	*buf;
+	u16			order;
+	u16			desc_split;
+	dma_addr_t		descs_dma;
+	u8			*descs_cpu;
 };
 
 struct ag71xx_mdio {
-- 
2.7.4




More information about the Lede-dev mailing list