Commit 8aaed873 authored by Doug Berger's avatar Doug Berger Committed by Greg Kroah-Hartman

net: bcmgenet: reserved phy revisions must be checked first


[ Upstream commit eca4bad7 ]

The reserved gphy_rev value of 0x01ff must be tested before the old
or new scheme for GPHY major versioning are tested, otherwise it will
be treated as 0xff00 according to the old scheme.

Fixes: b04a2f5b ("net: bcmgenet: add support for new GENET PHY revision scheme")
Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c25da696
...@@ -3326,6 +3326,12 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv) ...@@ -3326,6 +3326,12 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv)
*/ */
gphy_rev = reg & 0xffff; gphy_rev = reg & 0xffff;
/* This is reserved so should require special treatment */
if (gphy_rev == 0 || gphy_rev == 0x01ff) {
pr_warn("Invalid GPHY revision detected: 0x%04x\n", gphy_rev);
return;
}
/* This is the good old scheme, just GPHY major, no minor nor patch */ /* This is the good old scheme, just GPHY major, no minor nor patch */
if ((gphy_rev & 0xf0) != 0) if ((gphy_rev & 0xf0) != 0)
priv->gphy_rev = gphy_rev << 8; priv->gphy_rev = gphy_rev << 8;
...@@ -3334,12 +3340,6 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv) ...@@ -3334,12 +3340,6 @@ static void bcmgenet_set_hw_params(struct bcmgenet_priv *priv)
else if ((gphy_rev & 0xff00) != 0) else if ((gphy_rev & 0xff00) != 0)
priv->gphy_rev = gphy_rev; priv->gphy_rev = gphy_rev;
/* This is reserved so should require special treatment */
else if (gphy_rev == 0 || gphy_rev == 0x01ff) {
pr_warn("Invalid GPHY revision detected: 0x%04x\n", gphy_rev);
return;
}
#ifdef CONFIG_PHYS_ADDR_T_64BIT #ifdef CONFIG_PHYS_ADDR_T_64BIT
if (!(params->flags & GENET_HAS_40BITS)) if (!(params->flags & GENET_HAS_40BITS))
pr_warn("GENET does not support 40-bits PA\n"); pr_warn("GENET does not support 40-bits PA\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment