net: bcmgenet: properly disable password matching
bcmgenet_set_wol() correctly sets MPD_PW_EN when a password is specified to match magic packets against, however, when we switch from a password-matching to a matching without password we would leave this bit turned on, and GENET would only match magic packets with passwords. This can be reproduced using the following sequence: ethtool -s eth0 wol g ethtool -s eth0 wol s sopass 00:11:22:33:44:55 ethtool -s eth0 wol g The simple fix is to clear the MPD_PWD_EN bit when WAKE_MAGICSECURE is not set. Fixes: c51de7f3976b ("net: bcmgenet: add Wake-on-LAN support code") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b0ab0afaeb
commit
386668a61f
@ -73,15 +73,17 @@ int bcmgenet_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|||||||
if (wol->wolopts & ~(WAKE_MAGIC | WAKE_MAGICSECURE))
|
if (wol->wolopts & ~(WAKE_MAGIC | WAKE_MAGICSECURE))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
reg = bcmgenet_umac_readl(priv, UMAC_MPD_CTRL);
|
||||||
if (wol->wolopts & WAKE_MAGICSECURE) {
|
if (wol->wolopts & WAKE_MAGICSECURE) {
|
||||||
bcmgenet_umac_writel(priv, get_unaligned_be16(&wol->sopass[0]),
|
bcmgenet_umac_writel(priv, get_unaligned_be16(&wol->sopass[0]),
|
||||||
UMAC_MPD_PW_MS);
|
UMAC_MPD_PW_MS);
|
||||||
bcmgenet_umac_writel(priv, get_unaligned_be32(&wol->sopass[2]),
|
bcmgenet_umac_writel(priv, get_unaligned_be32(&wol->sopass[2]),
|
||||||
UMAC_MPD_PW_LS);
|
UMAC_MPD_PW_LS);
|
||||||
reg = bcmgenet_umac_readl(priv, UMAC_MPD_CTRL);
|
|
||||||
reg |= MPD_PW_EN;
|
reg |= MPD_PW_EN;
|
||||||
bcmgenet_umac_writel(priv, reg, UMAC_MPD_CTRL);
|
} else {
|
||||||
|
reg &= ~MPD_PW_EN;
|
||||||
}
|
}
|
||||||
|
bcmgenet_umac_writel(priv, reg, UMAC_MPD_CTRL);
|
||||||
|
|
||||||
/* Flag the device and relevant IRQ as wakeup capable */
|
/* Flag the device and relevant IRQ as wakeup capable */
|
||||||
if (wol->wolopts) {
|
if (wol->wolopts) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user