aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch')
-rw-r--r--target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch b/target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch
new file mode 100644
index 0000000000..e075796e41
--- /dev/null
+++ b/target/linux/mvebu/patches-5.10/007-net-mvneta-move-header-prefetch-in-mvneta_swbm_rx_fr.patch
@@ -0,0 +1,43 @@
+From fa383f6b77a2ed788266fa8fbfb659aa284d2f58 Mon Sep 17 00:00:00 2001
+From: Lorenzo Bianconi <lorenzo@kernel.org>
+Date: Sat, 19 Oct 2019 10:13:25 +0200
+Subject: [PATCH 5/7] net: mvneta: move header prefetch in mvneta_swbm_rx_frame
+
+Move data buffer prefetch in mvneta_swbm_rx_frame after
+dma_sync_single_range_for_cpu
+
+Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
+Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
+Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/ethernet/marvell/mvneta.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/ethernet/marvell/mvneta.c
++++ b/drivers/net/ethernet/marvell/mvneta.c
+@@ -2038,6 +2038,9 @@ mvneta_swbm_rx_frame(struct mvneta_port
+ rx_desc->buf_phys_addr,
+ len, dma_dir);
+
++ /* Prefetch header */
++ prefetch(data);
++
+ xdp->data_hard_start = data;
+ xdp->data = data + MVNETA_SKB_HEADROOM + MVNETA_MH_SIZE;
+ xdp->data_end = xdp->data + data_len;
+@@ -2135,14 +2138,10 @@ static int mvneta_rx_swbm(struct napi_st
+ while (rx_proc < budget && rx_proc < rx_todo) {
+ struct mvneta_rx_desc *rx_desc = mvneta_rxq_next_desc_get(rxq);
+ u32 rx_status, index;
+- unsigned char *data;
+ struct page *page;
+
+ index = rx_desc - rxq->descs;
+ page = (struct page *)rxq->buf_virt_addr[index];
+- data = page_address(page);
+- /* Prefetch header */
+- prefetch(data);
+
+ rx_status = rx_desc->status;
+ rx_proc++;