From 662394fb30fdbcc89ec387918714aebee6868a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 4 Sep 2019 19:01:23 +0200 Subject: brcm2708: update to latest patches from RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- ...mgenet-Workaround-2-for-Pi4-Ethernet-fail.patch | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.19/950-0755-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0755-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch') diff --git a/target/linux/brcm2708/patches-4.19/950-0755-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch b/target/linux/brcm2708/patches-4.19/950-0755-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch new file mode 100644 index 0000000000..291f9075d8 --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0755-net-bcmgenet-Workaround-2-for-Pi4-Ethernet-fail.patch @@ -0,0 +1,52 @@ +From 748b1dad9c84e46a2f84368d2cc27731e6fdaa08 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 9 Aug 2019 08:51:43 +0100 +Subject: [PATCH 755/782] net: bcmgenet: Workaround #2 for Pi4 Ethernet fail + +Some combinations of Pi 4Bs and Ethernet switches don't reliably get a +DCHP-assigned IP address, leaving the unit with a self=assigned 169.254 +address. In the failure case, the Pi is left able to receive packets +but not send them, suggesting that the MAC<->PHY link is getting into +a bad state. + +It has been found empirically that skipping a reset step by the genet +driver prevents the failures. No downsides have been discovered yet, +and unlike the forced renegotiation it doesn't increase the time to +get an IP address, so the workaround is enabled by default; add + + genet.skip_umac_reset=n + +to the command line to disable it. + +See: https://github.com/raspberrypi/linux/issues/3108 + +Signed-off-by: Phil Elwell +--- + drivers/net/ethernet/broadcom/genet/bcmgenet.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c ++++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c +@@ -72,6 +72,10 @@ + #define GENET_RDMA_REG_OFF (priv->hw_params->rdma_offset + \ + TOTAL_DESC * DMA_DESC_SIZE) + ++static bool skip_umac_reset = true; ++module_param(skip_umac_reset, bool, 0444); ++MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step"); ++ + static inline void bcmgenet_writel(u32 value, void __iomem *offset) + { + /* MIPS chips strapped for BE will automagically configure the +@@ -1993,6 +1997,11 @@ static void reset_umac(struct bcmgenet_p + bcmgenet_rbuf_ctrl_set(priv, 0); + udelay(10); + ++ if (skip_umac_reset) { ++ pr_warn("Skipping UMAC reset\n"); ++ return; ++ } ++ + /* disable MAC while updating its registers */ + bcmgenet_umac_writel(priv, 0, UMAC_CMD); + -- cgit v1.2.3