Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.78 Removed upstreamed: generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch[1] generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch[2] airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch[3] airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch[4] airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch[5] airoha/patches-6.12/128-v7.1-net-airoha-Remove-airoha_dev_stop-in-airoha_remove.patch[6] Manually rebased: airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch All patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=bbdf6d378e1ddbeadc04c57b182aadefcc3aa917 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=241cd64cf2e32b28ead151b1795cd8fef2b6e482 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a04ac7bc97afe313e10ae4c73797c668dee47c5c 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a9ed47c3663219e20406d566f02809de05373a42 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=4cba4373abac7ba27fdb33057a29b92efa8fd15d 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=652ec118d8dc1b088e685d5562995b6665463771 Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/22607 [Fix 048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
From 8d428b0009134f7bc9779d5cb966944cf4790221 Mon Sep 17 00:00:00 2001
|
|
From: Phil Elwell <phil@raspberrypi.org>
|
|
Date: Fri, 9 Aug 2019 08:51:43 +0100
|
|
Subject: [PATCH] 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 <phil@raspberrypi.org>
|
|
---
|
|
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
|
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
|
@@ -67,6 +67,9 @@
|
|
|
|
/* Forward declarations */
|
|
static void bcmgenet_set_rx_mode(struct net_device *dev);
|
|
+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)
|
|
{
|
|
@@ -2486,6 +2489,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;
|
|
+ }
|
|
+
|
|
/* issue soft reset and disable MAC while updating its registers */
|
|
spin_lock_bh(&priv->reg_lock);
|
|
bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);
|