tags 402447 patch thanks I believe the problem really is bad logic in pci_set_power_state(), making it fail if the device doesn't support PM and a driver 1) saves power_state, 2) wakes up and does something, and 3) then reset to the saved state.
I've reported this upstream along with a patch for pci.c The attached patch works around the problem in the 3c59x.c driver. Bjørn
--- linux-source-2.6.18/drivers/net/3c59x.c.orig 2006-09-20 05:42:06.000000000 +0200 +++ linux-source-2.6.18/drivers/net/3c59x.c 2007-05-05 00:08:01.000000000 +0200 @@ -2899,7 +2899,7 @@ unsigned long flags; int state = 0; - if(VORTEX_PCI(vp)) + if(VORTEX_PCI(vp) && pci_find_capability(VORTEX_PCI(vp), PCI_CAP_ID_PM)) state = VORTEX_PCI(vp)->current_state; /* The kernel core really should have pci_get_power_state() */