summaryrefslogtreecommitdiffstats
path: root/drivers/net/sis900.c
diff options
context:
space:
mode:
authorDaniele Venzano <venza@brownhat.org>2006-02-25 17:01:09 -0500
committerJeff Garzik <jeff@garzik.org>2006-02-25 17:01:09 -0500
commit7bef4b397874eee4484457040e8a1013361d7758 (patch)
tree9a13e891ade50d32806ad303b80526bef9b9df3f /drivers/net/sis900.c
parenta0124d780d06db711e8a92135d774940588a27da (diff)
downloadlinux-7bef4b397874eee4484457040e8a1013361d7758.tar.gz
linux-7bef4b397874eee4484457040e8a1013361d7758.tar.bz2
linux-7bef4b397874eee4484457040e8a1013361d7758.zip
Fix Wake on LAN support in sis900
Fix two bugs in the WoL implementation of sis900. The first causes hangs on some system on driver load, the second causes troubles when disabling WoL support. Both fixes are one liner and really simple. Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Daniele Venzano <venza@brownhat.org>
Diffstat (limited to 'drivers/net/sis900.c')
-rw-r--r--drivers/net/sis900.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index 3d95fa20cd88..7a952fe60be2 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -540,7 +540,7 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
printk("%2.2x.\n", net_dev->dev_addr[i]);
/* Detect Wake on Lan support */
- ret = inl(CFGPMC & PMESP);
+ ret = (inl(net_dev->base_addr + CFGPMC) & PMESP) >> 27;
if (netif_msg_probe(sis_priv) && (ret & PME_D3C) == 0)
printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name);
@@ -2040,7 +2040,7 @@ static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wo
if (wol->wolopts == 0) {
pci_read_config_dword(sis_priv->pci_dev, CFGPMCSR, &cfgpmcsr);
- cfgpmcsr |= ~PME_EN;
+ cfgpmcsr &= ~PME_EN;
pci_write_config_dword(sis_priv->pci_dev, CFGPMCSR, cfgpmcsr);
outl(pmctrl_bits, pmctrl_addr);
if (netif_msg_wol(sis_priv))