mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 09:12:39 +00:00
196f3d586f
5.4.102 backported a lot of stuff that our WireGuard backport already did, in addition to other patches we had, so those patches were removed from that part of the series. In the process other patches were refreshed or reworked to account for upstream changes. This commit involved `update_kernel.sh -v -u 5.4`. Cc: John Audia <graysky@archlinux.us> Cc: David Bauer <mail@david-bauer.net> Cc: Petr Štetiar <ynezz@true.cz> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
68 lines
2.5 KiB
Diff
68 lines
2.5 KiB
Diff
From 44efc78d0e464ce70b45b165c005f8bedc17952e Mon Sep 17 00:00:00 2001
|
|
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Date: Wed, 29 Jan 2020 12:50:53 +0100
|
|
Subject: [PATCH] net: mvneta: fix XDP support if sw bm is used as fallback
|
|
|
|
In order to fix XDP support if sw buffer management is used as fallback
|
|
for hw bm devices, define MVNETA_SKB_HEADROOM as maximum between
|
|
XDP_PACKET_HEADROOM and NET_SKB_PAD and let the hw aligns the IP header
|
|
to 4-byte boundary.
|
|
Fix rx_offset_correction initialization if mvneta_bm_port_init fails in
|
|
mvneta_resume routine
|
|
|
|
Fixes: 0db51da7a8e9 ("net: mvneta: add basic XDP support")
|
|
Tested-by: Sven Auhagen <sven.auhagen@voleatech.de>
|
|
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ethernet/marvell/mvneta.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
@@ -326,8 +326,7 @@
|
|
ETH_HLEN + ETH_FCS_LEN, \
|
|
cache_line_size())
|
|
|
|
-#define MVNETA_SKB_HEADROOM (max(XDP_PACKET_HEADROOM, NET_SKB_PAD) + \
|
|
- NET_IP_ALIGN)
|
|
+#define MVNETA_SKB_HEADROOM max(XDP_PACKET_HEADROOM, NET_SKB_PAD)
|
|
#define MVNETA_SKB_PAD (SKB_DATA_ALIGN(sizeof(struct skb_shared_info) + \
|
|
MVNETA_SKB_HEADROOM))
|
|
#define MVNETA_SKB_SIZE(len) (SKB_DATA_ALIGN(len) + MVNETA_SKB_PAD)
|
|
@@ -1174,6 +1173,7 @@ bm_mtu_err:
|
|
mvneta_bm_pool_destroy(pp->bm_priv, pp->pool_short, 1 << pp->id);
|
|
|
|
pp->bm_priv = NULL;
|
|
+ pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
|
|
mvreg_write(pp, MVNETA_ACC_MODE, MVNETA_ACC_MODE_EXT1);
|
|
netdev_info(pp->dev, "fail to update MTU, fall back to software BM\n");
|
|
}
|
|
@@ -4991,7 +4991,6 @@ static int mvneta_probe(struct platform_
|
|
SET_NETDEV_DEV(dev, &pdev->dev);
|
|
|
|
pp->id = global_port_id++;
|
|
- pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
|
|
|
|
/* Obtain access to BM resources if enabled and already initialized */
|
|
bm_node = of_parse_phandle(dn, "buffer-manager", 0);
|
|
@@ -5016,6 +5015,10 @@ static int mvneta_probe(struct platform_
|
|
}
|
|
of_node_put(bm_node);
|
|
|
|
+ /* sw buffer management */
|
|
+ if (!pp->bm_priv)
|
|
+ pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
|
|
+
|
|
err = mvneta_init(&pdev->dev, pp);
|
|
if (err < 0)
|
|
goto err_netdev;
|
|
@@ -5173,6 +5176,7 @@ static int mvneta_resume(struct device *
|
|
err = mvneta_bm_port_init(pdev, pp);
|
|
if (err < 0) {
|
|
dev_info(&pdev->dev, "use SW buffer management\n");
|
|
+ pp->rx_offset_correction = MVNETA_SKB_HEADROOM;
|
|
pp->bm_priv = NULL;
|
|
}
|
|
}
|