+ if (netdev->phydev) {
+ ret = phy_ethtool_set_wol(netdev->phydev, wol);
+ if (ret != -EOPNOTSUPP && ret != 0)
+ return ret;
I'm not sure this condition is correct.
If there is an error, and the error is not EOPNOTSUPP, you want to
report that error. However, if the PHY can support the WoL
configuration, it will return 0, and this function should exit, WoL in
the MAC is not needed. And doing WoL in the PHY consumes less power
since you can suspend the MAC.
So i think it should simply be:
+ if (ret != -EOPNOTSUPP)
+ return ret;