mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 17:01:14 +00:00
da98603597
This PR is a blend of several kernel bumps authored by ldir taken from his staging tree w/ some further adjustments made by me and update_kernel.sh Summary: Deleted upstreamed patches: generic: 742-v5.5-net-sfp-add-support-for-module-quirks.patch 743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch bcm63xx: 022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch 024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch mediatek: 0402-net-ethernet-mtk_eth_soc-Always-call-mtk_gmac0_rgmii.patch Deleted patches applied differently upstream: generic: 641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch Manually merged patches: generic: 395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch bcm27xx: 950-0132-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch layerscape: 701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch Build system: x86_64 Build-tested: ath79/generic, bcm27xx/bcm2708, bcm27xx/bcm2711, imx6, mvebu/cortexa9, sunxi/a53 Run-tested: Netgear R7800 (ipq806x) No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> Tested-By: Lucian Cristian <Lucian.cristian@gmail.com> [mvebu] Tested-By: Curtis Deptuck <curtdept@me.com> [x86/64] [do not remove 395-v5.8-net-sch_cake-Take-advantage-... patch, adjust and refresh patches, adjust commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Tested-By: John Audia <graysky@archlinux.us> [ipq806x]
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");
|
|
}
|
|
@@ -4984,7 +4984,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);
|
|
@@ -5009,6 +5008,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;
|
|
@@ -5166,6 +5169,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;
|
|
}
|
|
}
|