X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/7a158c5f4037cf77126bf0e8d03310934da14c10..c8b7636f71869976864e09ba2647bc8576c56540:/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c index 7995f34a4..28e1a8505 100644 --- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c +++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c @@ -448,7 +448,7 @@ static int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, return -ENOSPC; } -static int rtl8366_enable_vlan(struct rtl8366_smi *smi, int enable) +int rtl8366_enable_vlan(struct rtl8366_smi *smi, int enable) { int err; @@ -465,6 +465,7 @@ static int rtl8366_enable_vlan(struct rtl8366_smi *smi, int enable) return err; } +EXPORT_SYMBOL_GPL(rtl8366_enable_vlan); static int rtl8366_enable_vlan4k(struct rtl8366_smi *smi, int enable) { @@ -486,6 +487,21 @@ static int rtl8366_enable_vlan4k(struct rtl8366_smi *smi, int enable) return 0; } +int rtl8366_enable_all_ports(struct rtl8366_smi *smi, int enable) +{ + int port; + int err; + + for (port = 0; port < smi->num_ports; port++) { + err = smi->ops->enable_port(smi, port, enable); + if (err) + return err; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtl8366_enable_all_ports); + int rtl8366_reset_vlan(struct rtl8366_smi *smi) { struct rtl8366_vlan_mc vlanmc; @@ -1186,9 +1202,13 @@ int rtl8366_smi_init(struct rtl8366_smi *smi) if (err) { dev_err(smi->parent, "VLAN initialization failed, err=%d\n", err); - goto err_disable_hw; + goto err_free_sck; } + err = rtl8366_enable_all_ports(smi, 1); + if (err) + goto err_free_sck; + err = rtl8366_smi_mii_init(smi); if (err) goto err_free_sck;