ethtool: ioctl: account for sopass diff in set_wol
sopass won't be set if wolopt doesn't change. This means the following
will fail to set the correct sopass.
ethtool -s eth0 wol s sopass 11:22:33:44:55:66
ethtool -s eth0 wol s sopass 22:44:55:66:77:88
Make sure we call into the driver layer set_wol if sopass is different.
Fixes: 55b24334c0
("ethtool: ioctl: improve error checking for set_wol")
Signed-off-by: Justin Chen <justin.chen@broadcom.com>
Link: https://lore.kernel.org/r/1686605822-34544-1-git-send-email-justin.chen@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
e5d4a21b3a
commit
2bddad9ec6
|
@ -1452,7 +1452,8 @@ static int ethtool_set_wol(struct net_device *dev, char __user *useraddr)
|
||||||
if (wol.wolopts & ~cur_wol.supported)
|
if (wol.wolopts & ~cur_wol.supported)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (wol.wolopts == cur_wol.wolopts)
|
if (wol.wolopts == cur_wol.wolopts &&
|
||||||
|
!memcmp(wol.sopass, cur_wol.sopass, sizeof(wol.sopass)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = dev->ethtool_ops->set_wol(dev, &wol);
|
ret = dev->ethtool_ops->set_wol(dev, &wol);
|
||||||
|
|
Loading…
Reference in New Issue