mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-05 02:29:28 +00:00
kernel: bump 5.10 to 5.10.117
Removed upstreamed: backport-5.10/890-v5.19-net-sfp-Add-tx-fault-workaround-for-Huawei-MA5671A-SFP-ON.patch All patches automatically rebased. Build system: x86_64 Build-tested: ipq806x/R7800 Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
c9929fabcb
commit
01a6a5c731
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-5.10 = .116
|
LINUX_VERSION-5.10 = .117
|
||||||
LINUX_KERNEL_HASH-5.10.116 = 806692ba7436f9cfbc32709fe20097dbde4ae5e2f4ae582f39b1d91ce5d20b49
|
LINUX_KERNEL_HASH-5.10.117 = 703ef7112cdf889950dd864ba482d04bd87d83d3df3a98ab8d4ba8a7ab1ddcc7
|
||||||
|
@ -68,8 +68,8 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
offset = CORE_STS_OVERRIDE_IMP;
|
offset = CORE_STS_OVERRIDE_IMP;
|
||||||
else
|
else
|
||||||
offset = CORE_STS_OVERRIDE_IMP2;
|
offset = CORE_STS_OVERRIDE_IMP2;
|
||||||
@@ -711,7 +712,8 @@ static void bcm_sf2_sw_mac_link_down(str
|
@@ -714,7 +715,8 @@ static void bcm_sf2_sw_mac_link_down(str
|
||||||
u32 reg, offset;
|
return;
|
||||||
|
|
||||||
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
||||||
- if (priv->type == BCM7445_DEVICE_ID)
|
- if (priv->type == BCM7445_DEVICE_ID)
|
||||||
@ -78,7 +78,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
||||||
else
|
else
|
||||||
offset = CORE_STS_OVERRIDE_GMIIP2_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP2_PORT(port);
|
||||||
@@ -738,7 +740,8 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -741,7 +743,8 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
bcm_sf2_sw_mac_link_set(ds, port, interface, true);
|
bcm_sf2_sw_mac_link_set(ds, port, interface, true);
|
||||||
|
|
||||||
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
||||||
@ -88,7 +88,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
||||||
else
|
else
|
||||||
offset = CORE_STS_OVERRIDE_GMIIP2_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP2_PORT(port);
|
||||||
@@ -1131,6 +1134,30 @@ struct bcm_sf2_of_data {
|
@@ -1134,6 +1137,30 @@ struct bcm_sf2_of_data {
|
||||||
unsigned int num_cfp_rules;
|
unsigned int num_cfp_rules;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
/* Register offsets for the SWITCH_REG_* block */
|
/* Register offsets for the SWITCH_REG_* block */
|
||||||
static const u16 bcm_sf2_7445_reg_offsets[] = {
|
static const u16 bcm_sf2_7445_reg_offsets[] = {
|
||||||
[REG_SWITCH_CNTRL] = 0x00,
|
[REG_SWITCH_CNTRL] = 0x00,
|
||||||
@@ -1179,6 +1206,9 @@ static const struct bcm_sf2_of_data bcm_
|
@@ -1182,6 +1209,9 @@ static const struct bcm_sf2_of_data bcm_
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id bcm_sf2_of_match[] = {
|
static const struct of_device_id bcm_sf2_of_match[] = {
|
||||||
|
@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static void bcm_sf2_intr_disable(struct bcm_sf2_priv *priv)
|
static void bcm_sf2_intr_disable(struct bcm_sf2_priv *priv)
|
||||||
{
|
{
|
||||||
intrl2_0_mask_set(priv, 0xffffffff);
|
intrl2_0_mask_set(priv, 0xffffffff);
|
||||||
@@ -872,6 +910,8 @@ static int bcm_sf2_sw_resume(struct dsa_
|
@@ -875,6 +913,8 @@ static int bcm_sf2_sw_resume(struct dsa_
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
ret = bcm_sf2_cfp_resume(ds);
|
ret = bcm_sf2_cfp_resume(ds);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1143,6 +1183,7 @@ struct bcm_sf2_of_data {
|
@@ -1146,6 +1186,7 @@ struct bcm_sf2_of_data {
|
||||||
const u16 *reg_offsets;
|
const u16 *reg_offsets;
|
||||||
unsigned int core_reg_align;
|
unsigned int core_reg_align;
|
||||||
unsigned int num_cfp_rules;
|
unsigned int num_cfp_rules;
|
||||||
@ -99,7 +99,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const u16 bcm_sf2_4908_reg_offsets[] = {
|
static const u16 bcm_sf2_4908_reg_offsets[] = {
|
||||||
@@ -1167,6 +1208,7 @@ static const struct bcm_sf2_of_data bcm_
|
@@ -1170,6 +1211,7 @@ static const struct bcm_sf2_of_data bcm_
|
||||||
.core_reg_align = 0,
|
.core_reg_align = 0,
|
||||||
.reg_offsets = bcm_sf2_4908_reg_offsets,
|
.reg_offsets = bcm_sf2_4908_reg_offsets,
|
||||||
.num_cfp_rules = 0, /* FIXME */
|
.num_cfp_rules = 0, /* FIXME */
|
||||||
@ -107,7 +107,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Register offsets for the SWITCH_REG_* block */
|
/* Register offsets for the SWITCH_REG_* block */
|
||||||
@@ -1277,6 +1319,7 @@ static int bcm_sf2_sw_probe(struct platf
|
@@ -1280,6 +1322,7 @@ static int bcm_sf2_sw_probe(struct platf
|
||||||
priv->reg_offsets = data->reg_offsets;
|
priv->reg_offsets = data->reg_offsets;
|
||||||
priv->core_reg_align = data->core_reg_align;
|
priv->core_reg_align = data->core_reg_align;
|
||||||
priv->num_cfp_rules = data->num_cfp_rules;
|
priv->num_cfp_rules = data->num_cfp_rules;
|
||||||
@ -115,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
priv->rcdev = devm_reset_control_get_optional_exclusive(&pdev->dev,
|
priv->rcdev = devm_reset_control_get_optional_exclusive(&pdev->dev,
|
||||||
"switch");
|
"switch");
|
||||||
@@ -1350,6 +1393,8 @@ static int bcm_sf2_sw_probe(struct platf
|
@@ -1353,6 +1396,8 @@ static int bcm_sf2_sw_probe(struct platf
|
||||||
goto out_clk_mdiv;
|
goto out_clk_mdiv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/bcm_sf2.c
|
--- a/drivers/net/dsa/bcm_sf2.c
|
||||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||||
@@ -1207,7 +1207,7 @@ static const struct bcm_sf2_of_data bcm_
|
@@ -1210,7 +1210,7 @@ static const struct bcm_sf2_of_data bcm_
|
||||||
.type = BCM4908_DEVICE_ID,
|
.type = BCM4908_DEVICE_ID,
|
||||||
.core_reg_align = 0,
|
.core_reg_align = 0,
|
||||||
.reg_offsets = bcm_sf2_4908_reg_offsets,
|
.reg_offsets = bcm_sf2_4908_reg_offsets,
|
||||||
|
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void bcm_sf2_sw_mac_link_down(struct dsa_switch *ds, int port,
|
static void bcm_sf2_sw_mac_link_down(struct dsa_switch *ds, int port,
|
||||||
@@ -784,11 +815,15 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -787,11 +818,15 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
{
|
{
|
||||||
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
||||||
struct ethtool_eee *p = &priv->dev->ports[port].eee;
|
struct ethtool_eee *p = &priv->dev->ports[port].eee;
|
||||||
@ -130,7 +130,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (priv->type == BCM4908_DEVICE_ID ||
|
if (priv->type == BCM4908_DEVICE_ID ||
|
||||||
priv->type == BCM7445_DEVICE_ID)
|
priv->type == BCM7445_DEVICE_ID)
|
||||||
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
||||||
@@ -799,7 +834,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -802,7 +837,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
interface == PHY_INTERFACE_MODE_RGMII_TXID ||
|
interface == PHY_INTERFACE_MODE_RGMII_TXID ||
|
||||||
interface == PHY_INTERFACE_MODE_MII ||
|
interface == PHY_INTERFACE_MODE_MII ||
|
||||||
interface == PHY_INTERFACE_MODE_REVMII) {
|
interface == PHY_INTERFACE_MODE_REVMII) {
|
||||||
@ -139,7 +139,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
reg &= ~(RX_PAUSE_EN | TX_PAUSE_EN);
|
reg &= ~(RX_PAUSE_EN | TX_PAUSE_EN);
|
||||||
|
|
||||||
if (tx_pause)
|
if (tx_pause)
|
||||||
@@ -807,7 +842,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -810,7 +845,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
if (rx_pause)
|
if (rx_pause)
|
||||||
reg |= RX_PAUSE_EN;
|
reg |= RX_PAUSE_EN;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
switch (port) {
|
switch (port) {
|
||||||
@@ -1230,9 +1235,7 @@ static const u16 bcm_sf2_4908_reg_offset
|
@@ -1233,9 +1238,7 @@ static const u16 bcm_sf2_4908_reg_offset
|
||||||
[REG_PHY_REVISION] = 0x14,
|
[REG_PHY_REVISION] = 0x14,
|
||||||
[REG_SPHY_CNTRL] = 0x24,
|
[REG_SPHY_CNTRL] = 0x24,
|
||||||
[REG_CROSSBAR] = 0xc8,
|
[REG_CROSSBAR] = 0xc8,
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/bcm_sf2.c
|
--- a/drivers/net/dsa/bcm_sf2.c
|
||||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||||
@@ -824,11 +824,9 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -827,11 +827,9 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
bcm_sf2_sw_mac_link_set(ds, port, interface, true);
|
bcm_sf2_sw_mac_link_set(ds, port, interface, true);
|
||||||
|
|
||||||
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
if (port != core_readl(priv, CORE_IMP0_PRT_ID)) {
|
||||||
@ -36,7 +36,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
if (priv->type == BCM4908_DEVICE_ID ||
|
if (priv->type == BCM4908_DEVICE_ID ||
|
||||||
priv->type == BCM7445_DEVICE_ID)
|
priv->type == BCM7445_DEVICE_ID)
|
||||||
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
|
||||||
@@ -839,6 +837,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
@@ -842,6 +840,7 @@ static void bcm_sf2_sw_mac_link_up(struc
|
||||||
interface == PHY_INTERFACE_MODE_RGMII_TXID ||
|
interface == PHY_INTERFACE_MODE_RGMII_TXID ||
|
||||||
interface == PHY_INTERFACE_MODE_MII ||
|
interface == PHY_INTERFACE_MODE_MII ||
|
||||||
interface == PHY_INTERFACE_MODE_REVMII) {
|
interface == PHY_INTERFACE_MODE_REVMII) {
|
||||||
|
@ -82,7 +82,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1235,9 +1272,14 @@ static const u16 bcm_sf2_4908_reg_offset
|
@@ -1238,9 +1275,14 @@ static const u16 bcm_sf2_4908_reg_offset
|
||||||
[REG_SPHY_CNTRL] = 0x24,
|
[REG_SPHY_CNTRL] = 0x24,
|
||||||
[REG_CROSSBAR] = 0xc8,
|
[REG_CROSSBAR] = 0xc8,
|
||||||
[REG_RGMII_11_CNTRL] = 0x014c,
|
[REG_RGMII_11_CNTRL] = 0x014c,
|
||||||
|
@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/bcm_sf2.c
|
--- a/drivers/net/dsa/bcm_sf2.c
|
||||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||||
@@ -1532,10 +1532,14 @@ static int bcm_sf2_sw_probe(struct platf
|
@@ -1535,10 +1535,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||||
rev = reg_readl(priv, REG_PHY_REVISION);
|
rev = reg_readl(priv, REG_PHY_REVISION);
|
||||||
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
|
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/bcm_sf2.c
|
--- a/drivers/net/dsa/bcm_sf2.c
|
||||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||||
@@ -1546,6 +1546,12 @@ static int bcm_sf2_sw_probe(struct platf
|
@@ -1549,6 +1549,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||||
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
|
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
|
||||||
priv->irq0, priv->irq1);
|
priv->irq0, priv->irq1);
|
||||||
|
|
||||||
|
@ -24,8 +24,6 @@ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
|||||||
tools/bpf/resolve_btfids/Makefile | 6 ++++--
|
tools/bpf/resolve_btfids/Makefile | 6 ++++--
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/tools/bpf/resolve_btfids/Makefile b/tools/bpf/resolve_btfids/Makefile
|
|
||||||
index af9f9d3534c9..e727058bfe15 100644
|
|
||||||
--- a/tools/bpf/resolve_btfids/Makefile
|
--- a/tools/bpf/resolve_btfids/Makefile
|
||||||
+++ b/tools/bpf/resolve_btfids/Makefile
|
+++ b/tools/bpf/resolve_btfids/Makefile
|
||||||
@@ -23,6 +23,8 @@ CC = $(HOSTCC)
|
@@ -23,6 +23,8 @@ CC = $(HOSTCC)
|
||||||
@ -37,7 +35,7 @@ index af9f9d3534c9..e727058bfe15 100644
|
|||||||
|
|
||||||
OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
|
OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
|
||||||
|
|
||||||
@@ -45,9 +47,9 @@ $(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd
|
@@ -45,9 +47,9 @@ $(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/l
|
||||||
$(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
|
$(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
|
||||||
|
|
||||||
$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/libbpf
|
$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/libbpf
|
||||||
@ -49,6 +47,3 @@ index af9f9d3534c9..e727058bfe15 100644
|
|||||||
-I$(srctree)/tools/include \
|
-I$(srctree)/tools/include \
|
||||||
-I$(srctree)/tools/include/uapi \
|
-I$(srctree)/tools/include/uapi \
|
||||||
-I$(LIBBPF_SRC) \
|
-I$(LIBBPF_SRC) \
|
||||||
--
|
|
||||||
2.35.1
|
|
||||||
|
|
||||||
|
@ -1641,7 +1641,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
lp->coalesce_count_tx = XAXIDMA_DFT_TX_THRESHOLD;
|
lp->coalesce_count_tx = XAXIDMA_DFT_TX_THRESHOLD;
|
||||||
--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
|
--- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
|
||||||
+++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
|
+++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
|
||||||
@@ -1122,7 +1122,6 @@ static int xemaclite_of_probe(struct pla
|
@@ -1107,7 +1107,6 @@ static int xemaclite_of_probe(struct pla
|
||||||
struct net_device *ndev = NULL;
|
struct net_device *ndev = NULL;
|
||||||
struct net_local *lp = NULL;
|
struct net_local *lp = NULL;
|
||||||
struct device *dev = &ofdev->dev;
|
struct device *dev = &ofdev->dev;
|
||||||
@ -1649,7 +1649,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
@@ -1164,12 +1163,9 @@ static int xemaclite_of_probe(struct pla
|
@@ -1149,12 +1148,9 @@ static int xemaclite_of_probe(struct pla
|
||||||
lp->next_rx_buf_to_use = 0x0;
|
lp->next_rx_buf_to_use = 0x0;
|
||||||
lp->tx_ping_pong = get_bool(ofdev, "xlnx,tx-ping-pong");
|
lp->tx_ping_pong = get_bool(ofdev, "xlnx,tx-ping-pong");
|
||||||
lp->rx_ping_pong = get_bool(ofdev, "xlnx,rx-ping-pong");
|
lp->rx_ping_pong = get_bool(ofdev, "xlnx,rx-ping-pong");
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
From f81d97cb646ab8b90fb181d66fccaf9589990de6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Matthew Hagan <mnhagan88@gmail.com>
|
|
||||||
Date: Sat, 30 Apr 2022 11:00:49 +0100
|
|
||||||
Subject: [PATCH v2] net: sfp: Add tx-fault workaround for Huawei MA5671A SFP
|
|
||||||
ONT
|
|
||||||
|
|
||||||
As noted elsewhere, various GPON SFP modules exhibit non-standard
|
|
||||||
TX-fault behaviour. In the tested case, the Huawei MA5671A, when used
|
|
||||||
in combination with a Marvell mv88e6085 switch, was found to
|
|
||||||
persistently assert TX-fault, resulting in the module being disabled.
|
|
||||||
|
|
||||||
This patch adds a quirk to ignore the SFP_F_TX_FAULT state, allowing the
|
|
||||||
module to function.
|
|
||||||
|
|
||||||
Change from v1: removal of erroneous return statment (Andrew Lunn)
|
|
||||||
|
|
||||||
Signed-off-by: Matthew Hagan <mnhagan88@gmail.com>
|
|
||||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
||||||
---
|
|
||||||
drivers/net/phy/sfp.c | 12 +++++++++++-
|
|
||||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
|
||||||
+++ b/drivers/net/phy/sfp.c
|
|
||||||
@@ -249,6 +249,7 @@ struct sfp {
|
|
||||||
struct sfp_eeprom_id id;
|
|
||||||
unsigned int module_power_mW;
|
|
||||||
unsigned int module_t_start_up;
|
|
||||||
+ bool tx_fault_ignore;
|
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_HWMON)
|
|
||||||
struct sfp_diag diag;
|
|
||||||
@@ -1893,6 +1894,12 @@ static int sfp_sm_mod_probe(struct sfp *
|
|
||||||
else
|
|
||||||
sfp->module_t_start_up = T_START_UP;
|
|
||||||
|
|
||||||
+ if (!memcmp(id.base.vendor_name, "HUAWEI ", 16) &&
|
|
||||||
+ !memcmp(id.base.vendor_pn, "MA5671A ", 16))
|
|
||||||
+ sfp->tx_fault_ignore = true;
|
|
||||||
+ else
|
|
||||||
+ sfp->tx_fault_ignore = false;
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2320,7 +2327,10 @@ static void sfp_check_state(struct sfp *
|
|
||||||
mutex_lock(&sfp->st_mutex);
|
|
||||||
state = sfp_get_state(sfp);
|
|
||||||
changed = state ^ sfp->state;
|
|
||||||
- changed &= SFP_F_PRESENT | SFP_F_LOS | SFP_F_TX_FAULT;
|
|
||||||
+ if (sfp->tx_fault_ignore)
|
|
||||||
+ changed &= SFP_F_PRESENT | SFP_F_LOS;
|
|
||||||
+ else
|
|
||||||
+ changed &= SFP_F_PRESENT | SFP_F_LOS | SFP_F_TX_FAULT;
|
|
||||||
|
|
||||||
for (i = 0; i < GPIO_MAX; i++)
|
|
||||||
if (changed & BIT(i))
|
|
@ -33,7 +33,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
|||||||
phy_led_trigger_change_speed(phydev);
|
phy_led_trigger_change_speed(phydev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -567,7 +567,7 @@ int phy_start_cable_test(struct phy_devi
|
@@ -572,7 +572,7 @@ int phy_start_cable_test(struct phy_devi
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Mark the carrier down until the test is complete */
|
/* Mark the carrier down until the test is complete */
|
||||||
@ -42,7 +42,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
|||||||
|
|
||||||
netif_testing_on(dev);
|
netif_testing_on(dev);
|
||||||
err = phydev->drv->cable_test_start(phydev);
|
err = phydev->drv->cable_test_start(phydev);
|
||||||
@@ -638,7 +638,7 @@ int phy_start_cable_test_tdr(struct phy_
|
@@ -643,7 +643,7 @@ int phy_start_cable_test_tdr(struct phy_
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Mark the carrier down until the test is complete */
|
/* Mark the carrier down until the test is complete */
|
||||||
@ -51,7 +51,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
|||||||
|
|
||||||
netif_testing_on(dev);
|
netif_testing_on(dev);
|
||||||
err = phydev->drv->cable_test_tdr_start(phydev, config);
|
err = phydev->drv->cable_test_tdr_start(phydev, config);
|
||||||
@@ -709,7 +709,7 @@ static int phy_check_link_status(struct
|
@@ -714,7 +714,7 @@ static int phy_check_link_status(struct
|
||||||
phy_link_up(phydev);
|
phy_link_up(phydev);
|
||||||
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
||||||
phydev->state = PHY_NOLINK;
|
phydev->state = PHY_NOLINK;
|
||||||
@ -60,7 +60,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1191,7 +1191,7 @@ void phy_state_machine(struct work_struc
|
@@ -1226,7 +1226,7 @@ void phy_state_machine(struct work_struc
|
||||||
case PHY_HALTED:
|
case PHY_HALTED:
|
||||||
if (phydev->link) {
|
if (phydev->link) {
|
||||||
phydev->link = 0;
|
phydev->link = 0;
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/phy.c
|
--- a/drivers/net/phy/phy.c
|
||||||
+++ b/drivers/net/phy/phy.c
|
+++ b/drivers/net/phy/phy.c
|
||||||
@@ -709,7 +709,10 @@ static int phy_check_link_status(struct
|
@@ -714,7 +714,10 @@ static int phy_check_link_status(struct
|
||||||
phy_link_up(phydev);
|
phy_link_up(phydev);
|
||||||
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
||||||
phydev->state = PHY_NOLINK;
|
phydev->state = PHY_NOLINK;
|
||||||
@ -23,7 +23,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1191,7 +1194,10 @@ void phy_state_machine(struct work_struc
|
@@ -1226,7 +1229,10 @@ void phy_state_machine(struct work_struc
|
||||||
case PHY_HALTED:
|
case PHY_HALTED:
|
||||||
if (phydev->link) {
|
if (phydev->link) {
|
||||||
phydev->link = 0;
|
phydev->link = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user