On Mon, 2009-08-17 at 20:30 +0200, Rafael J. Wysocki wrote: > On Monday 17 August 2009, Maxim Levitsky wrote: > > On Sun, 2009-08-16 at 06:42 +0300, Maxim Levitsky wrote: > > > Hi, > > > > > > I have recently put back the davicom dm9009 ethernet card into my > > > computer. > > > > > > Some long time ago, I have written its suspend/resume routines. > > > Now I see that few things have changed, like I need to enable wake in > > > sysfs or better patch the code to do so, some nice helpers like > > > pci_prepare_to_sleep have arrived, etc. > > > > > > > > > I narrowed the strange issue down to following situation: > > > > > > I reload dmfe.ko (and networkmanager is disabled) > > > I don't ifup the device, thus pretty much no hardware initialization > > > takes place (but this appears not to matter anyway) > > > > > > I then suspend the system, and WOL doesn't work (I have patched the > > > driver to enable WOL automaticly) > > > > > > I then, suspend again. WOL works, and continues to work as long as I > > > don't reload the driver. If I do, same situation repeats. > > > > > > Also, after a boot, WOL works, so a reload cycle triggers that issue. > > > > > > And most importantly, if I don't do a > > > > > > pci_set_power_state(pci_dev, pci_choose_state (pci_dev, state)); > > > > > > in .suspend, then WOL always works. > > > > > > and I have even tried to set state manually to PCI_D3hot or PCI_D3cold, > > > > > > I also tried to use pci_save_state > > > > > > > > > I also have 2 copies of this card, and both have this issue. > > > I also tried 2 pci slots. > > > > > > Kernel is vanilla 2.6.31-rc5 > > I need a dmesg output containing at least one suspend-resume cycle > (preferably two cycles, the first one where WoL worked and another one > where it didn't). I am really sorry for late reply. I attach the dmesg. dmesg1 - after a boot, and dmfe reload dmesg2 - after first s2ram cycle (wol didn't work) dmesg3 - after second s2ram cycle (wol did work) dmesg4 - after third s2ram cycle (wol did work), this is just in case. Also I attach changes I did to the driver to make it enable wol by default. Best regards, Maxim Levitsky
Attachment:
dmesg.tar.bz2
Description: application/bzip-compressed-tar
DMFE: enable WOL by default From: Maxim Levitsky <maximlevitsky@xxxxxxxxx> --- drivers/net/tulip/dmfe.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c index e26a412..8a54a5b 100644 --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c @@ -444,7 +444,8 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev, db->chip_id = ent->driver_data; db->ioaddr = pci_resource_start(pdev, 0); db->chip_revision = pdev->revision; - db->wol_mode = 0; + db->wol_mode = WAKE_MAGIC; + device_set_wakeup_enable(&pdev->dev, 1); db->pdev = pdev;
_______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm