From: Heiner Kallweit <hkallwe...@gmail.com> Date: Thu, 28 Feb 2019 07:39:15 +0100
> When debugging another issue I faced an interrupt storm in this > driver (88E6390, port 9 in SGMII mode), consisting of alternating > link-up / link-down interrupts. Analysis showed that the driver > wanted to set a cmode that was set already. But so far > mv88e6390x_port_set_cmode() doesn't check this and powers down > SERDES, what causes the link to break, and eventually results in > the described interrupt storm. > > Fix this by checking whether the cmode actually changes. We want > that the very first call to mv88e6390x_port_set_cmode() always > configures the registers, therefore initialize port.cmode with > a value that is different from any supported cmode value. > We have to take care that we only init the ports cmode once > chip->info->num_ports is set. > > v2: > - add small helper and init the number of actual ports only > > Fixes: 364e9d7776a3 ("net: dsa: mv88e6xxx: Power on/off SERDES on cmode > change") > Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com> Applied, and queued up for -stable. Thanks.