> >> - phy_write(phy_dev, COPPER_CONTROL_REG, val); > >> + err = phy_resume(phy_dev); > > > > Maybe this was discussed with an earlier version of these patches. Why > > are using phy_resume() and phy_suspend()? > When self_test is invoked with ETH_TEST_FL_OFFLINE option, hns mac driver > call dev_close to set net dev to offline state if net dev is online. > Doing the actual phy loolback test require phy is power up, So phy_resume > and phy_suspend are used.
O.K, so you at least need some comments, because this is not obvious. >From your description, it sounds like you can call phy_resume() on a device which is not suspended. In general, suspend is expected to store away state which will be lost when powering down a device. Resume writes that state back into the device after it is powered up. So resuming a device which was never suspended could write bad state into it. Also, what about if WOL has been set before closing the device? Andrew