From: Heiner Kallweit <hkallwe...@gmail.com> Date: Sat, 23 Mar 2019 19:41:32 +0100
> This patches fixes few issues in mv88e6390x_port_set_cmode(). > > 1. When entering the function the old cmode may be 0, in this case > mv88e6390x_serdes_get_lane() returns -ENODEV. As result we bail > out and have no chance to set a new mode. Therefore deal properly > with -ENODEV. > > 2. Once we have disabled power and irq, let's set the cached cmode to 0. > This reflects the actual status and is cleaner if we bail out with an > error in the following function calls. > > 3. The cached cmode is used by mv88e6390x_serdes_get_lane(), > mv88e6390_serdes_power_lane() and mv88e6390_serdes_irq_enable(). > Currently we set the cached mode to the new one at the very end of > the function only, means until then we use the old one what may be > wrong. > > 4. When calling mv88e6390_serdes_irq_enable() we use the lane value > belonging to the old cmode. Get the lane belonging to the new cmode > before calling this function. > > It's hard to provide a good "Fixes" tag because quite a few smaller > changes have been done to the code in question recently. > > Fixes: d235c48b40d3 ("net: dsa: mv88e6xxx: power serdes on/off for 10G > interfaces on 6390X") > Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com> Once again, Andrew, Florian, Vivien, et al., please review.