diff options
Diffstat (limited to 'drivers/net/dsa/qca8k.c')
-rw-r--r-- | drivers/net/dsa/qca8k.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 232e8cc96f6d..16f15c93a102 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c | |||
@@ -2,7 +2,7 @@ | |||
2 | /* | 2 | /* |
3 | * Copyright (C) 2009 Felix Fietkau <nbd@nbd.name> | 3 | * Copyright (C) 2009 Felix Fietkau <nbd@nbd.name> |
4 | * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org> | 4 | * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org> |
5 | * Copyright (c) 2015, The Linux Foundation. All rights reserved. | 5 | * Copyright (c) 2015, 2019, The Linux Foundation. All rights reserved. |
6 | * Copyright (c) 2016 John Crispin <john@phrozen.org> | 6 | * Copyright (c) 2016 John Crispin <john@phrozen.org> |
7 | */ | 7 | */ |
8 | 8 | ||
@@ -583,8 +583,11 @@ qca8k_setup_mdio_bus(struct qca8k_priv *priv) | |||
583 | 583 | ||
584 | for_each_available_child_of_node(ports, port) { | 584 | for_each_available_child_of_node(ports, port) { |
585 | err = of_property_read_u32(port, "reg", ®); | 585 | err = of_property_read_u32(port, "reg", ®); |
586 | if (err) | 586 | if (err) { |
587 | of_node_put(port); | ||
588 | of_node_put(ports); | ||
587 | return err; | 589 | return err; |
590 | } | ||
588 | 591 | ||
589 | if (!dsa_is_user_port(priv->ds, reg)) | 592 | if (!dsa_is_user_port(priv->ds, reg)) |
590 | continue; | 593 | continue; |
@@ -595,6 +598,7 @@ qca8k_setup_mdio_bus(struct qca8k_priv *priv) | |||
595 | internal_mdio_mask |= BIT(reg); | 598 | internal_mdio_mask |= BIT(reg); |
596 | } | 599 | } |
597 | 600 | ||
601 | of_node_put(ports); | ||
598 | if (!external_mdio_mask && !internal_mdio_mask) { | 602 | if (!external_mdio_mask && !internal_mdio_mask) { |
599 | dev_err(priv->dev, "no PHYs are defined.\n"); | 603 | dev_err(priv->dev, "no PHYs are defined.\n"); |
600 | return -EINVAL; | 604 | return -EINVAL; |
@@ -935,6 +939,8 @@ qca8k_port_enable(struct dsa_switch *ds, int port, | |||
935 | qca8k_port_set_status(priv, port, 1); | 939 | qca8k_port_set_status(priv, port, 1); |
936 | priv->port_sts[port].enabled = 1; | 940 | priv->port_sts[port].enabled = 1; |
937 | 941 | ||
942 | phy_support_asym_pause(phy); | ||
943 | |||
938 | return 0; | 944 | return 0; |
939 | } | 945 | } |
940 | 946 | ||