diff mbox series

[net] net: dsa: qca8k: Fix port enable for CPU port

Message ID 20190925004707.1799-1-andrew@lunn.ch
State Accepted
Delegated to: David Miller
Headers show
Series [net] net: dsa: qca8k: Fix port enable for CPU port | expand

Commit Message

Andrew Lunn Sept. 25, 2019, 12:47 a.m. UTC
The CPU port does not have a PHY connected to it. So calling
phy_support_asym_pause() results in an Opps. As with other DSA
drivers, add a guard that the port is a user port.

Reported-by: Michal Vokáč <michal.vokac@ysoft.com>
Fixes: 0394a63acfe2 ("net: dsa: enable and disable all ports")
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/dsa/qca8k.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Michal Vokáč Sept. 25, 2019, 7:06 a.m. UTC | #1
On 25. 09. 19 2:47, Andrew Lunn wrote:
> The CPU port does not have a PHY connected to it. So calling
> phy_support_asym_pause() results in an Opps. As with other DSA
> drivers, add a guard that the port is a user port.
> 
> Reported-by: Michal Vokáč <michal.vokac@ysoft.com>

Thank you for the prompt fix Andrew!

Tested-by: Michal Vokáč <michal.vokac@ysoft.com>

> Fixes: 0394a63acfe2 ("net: dsa: enable and disable all ports")
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> ---
>   drivers/net/dsa/qca8k.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
> index 16f15c93a102..684aa51684db 100644
> --- a/drivers/net/dsa/qca8k.c
> +++ b/drivers/net/dsa/qca8k.c
> @@ -936,6 +936,9 @@ qca8k_port_enable(struct dsa_switch *ds, int port,
>   {
>   	struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv;
>   
> +	if (!dsa_is_user_port(ds, port))
> +		return 0;
> +
>   	qca8k_port_set_status(priv, port, 1);
>   	priv->port_sts[port].enabled = 1;
>   
>
David Miller Sept. 27, 2019, 8:32 a.m. UTC | #2
From: Andrew Lunn <andrew@lunn.ch>
Date: Wed, 25 Sep 2019 02:47:07 +0200

> The CPU port does not have a PHY connected to it. So calling
> phy_support_asym_pause() results in an Opps. As with other DSA
> drivers, add a guard that the port is a user port.
> 
> Reported-by: Michal Vokáč <michal.vokac@ysoft.com>
> Fixes: 0394a63acfe2 ("net: dsa: enable and disable all ports")
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>

Applied.
diff mbox series

Patch

diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
index 16f15c93a102..684aa51684db 100644
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
@@ -936,6 +936,9 @@  qca8k_port_enable(struct dsa_switch *ds, int port,
 {
 	struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv;
 
+	if (!dsa_is_user_port(ds, port))
+		return 0;
+
 	qca8k_port_set_status(priv, port, 1);
 	priv->port_sts[port].enabled = 1;