mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-25 05:25:27 +00:00
realtek: fix kernel panic in DSA driver for 5.10
dsa_to_port function in 5.10 returns dsa_port from the port list in dsa_switch_tree, but the tree is built when the switch is registered by dsa_register_switch and it's null in rtl83xx_mdio_probe. So, we need to use dsa_to_port after the registration of the switch. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
This commit is contained in:
parent
99a658cb71
commit
2e676c05dc
@ -302,8 +302,6 @@ static int __init rtl83xx_mdio_probe(struct rtl838x_switch_priv *priv)
|
||||
if (of_property_read_u32(dn, "reg", &pn))
|
||||
continue;
|
||||
|
||||
priv->ports[pn].dp = dsa_to_port(priv->ds, pn);
|
||||
|
||||
// Check for the integrated SerDes of the RTL8380M first
|
||||
if (of_property_read_bool(dn, "phy-is-integrated")
|
||||
&& priv->id == 0x8380 && pn >= 24) {
|
||||
@ -627,6 +625,14 @@ static int __init rtl83xx_sw_probe(struct platform_device *pdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
* dsa_to_port returns dsa_port from the port list in
|
||||
* dsa_switch_tree, the tree is built when the switch
|
||||
* is registered by dsa_register_switch
|
||||
*/
|
||||
for (i = 0; i <= priv->cpu_port; i++)
|
||||
priv->ports[i].dp = dsa_to_port(priv->ds, i);
|
||||
|
||||
/* Enable link and media change interrupts. Are the SERDES masks needed? */
|
||||
sw_w32_mask(0, 3, priv->r->isr_glb_src);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user