Patch "net: phy: bcm63xx: Utilize correct config_intr function" has been added to the 4.9-stable tree
This is a note to let you know that I've just added the patch titled
net: phy: bcm63xx: Utilize correct config_intr function
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-phy-bcm63xx-utilize-correct-config_intr-function.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Feb 1 08:50:24 CET 2017
From: Daniel Gonzalez Cabanelas <[email protected]>
Date: Tue, 17 Jan 2017 16:26:55 -0800
Subject: net: phy: bcm63xx: Utilize correct config_intr function
From: Daniel Gonzalez Cabanelas <[email protected]>
[ Upstream commit cd33b3e0da43522ff8e8f2b2b71d3d08298512b0 ]
Commit a1cba5613edf ("net: phy: Add Broadcom phy library for common interfaces") make the BCM63xx PHY driver utilize bcm_phy_config_intr() which would appear to do the right thing, except that it does not write to the MII_BCM63XX_IR register but to MII_BCM54XX_ECR which is different.
This would be causing invalid link parameters and events from being generated by the PHY interrupt.
--- drivers/net/phy/bcm63xx.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
drivers/net/phy/bcm63xx.c +19 -2
@@ -21,6 +21,23 @@ MODULE_DESCRIPTION("Broadcom 63xx internMODULE_AUTHOR ("Maxime Bizon <[email protected]>" );MODULE_LICENSE ("GPL" ); +static int bcm63xx_config_intr (struct phy_device *phydev) +{ +int reg, err; + + reg =phy_read (phydev,MII_BCM63XX_IR ); +if (reg <0 ) +return reg; + +if (phydev->interrupts ==PHY_INTERRUPT_ENABLED ) + reg &= ~MII_BCM63XX_IR_GMASK ; +else + reg |=MII_BCM63XX_IR_GMASK ; + + err =phy_write (phydev,MII_BCM63XX_IR , reg); +return err; +} +static int bcm63xx_config_init (struct phy_device *phydev) {int reg, err;
@@ -55,7 +72,7 @@ static struct phy_driver bcm63xx_driver[ .config_aneg = genphy_config_aneg, .read_status = genphy_read_status, .ack_interrupt = bcm_phy_ack_intr, - .config_intr = bcm_phy_config_intr, + .config_intr = bcm63xx_config_intr, }, {/* same phy as above, with just a different OUI */ .phy_id = 0x002bdc00,
@@ -67,7 +84,7 @@ static struct phy_driver bcm63xx_driver[ .config_aneg = genphy_config_aneg, .read_status = genphy_read_status, .ack_interrupt = bcm_phy_ack_intr, - .config_intr = bcm_phy_config_intr, + .config_intr = bcm63xx_config_intr, } };module_phy_driver (bcm63xx_driver);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/net-phy-bcm63xx-utilize-correct-config_intr-function.patch