Hi.

Do you also disable the WOL event when resuming?

Regards,

Nigel

On Mon, 2005-01-31 at 14:47, Scott Feldman wrote:
> On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> > I experience the same problems as reported by Michael Gernoth when 
> > sending a WOL-packet to computer with a e100 NIC which is already 
> > powered on.
> 
> I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
> PME wakeup during probe.  PME shouldn't be enabled while the system is
> up.  I suspect the assertion of PME while the system is up is what's
> causing problems.  This patch moves PME wakeup enabling to either
> suspend or shutdown.
> 
> David, would you give this patch a try?  Make sure the system still
> wakes from a magic packet if suspended or shut down, and doesn't cause
> kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
> someone can look into 2.4 to see if there is something similar going on
> there.
> 
> -scott
> 
> --- linux-2.6.11-rc2/drivers/net/e100.c.orig  2005-01-30 19:13:56.850497376 
> -0800
> +++ linux-2.6.11-rc2/drivers/net/e100.c       2005-01-30 19:26:41.154305536 
> -0800
> @@ -1868,7 +1868,6 @@ static int e100_set_wol(struct net_devic
>       else
>               nic->flags &= ~wol_magic;
>  
> -     pci_enable_wake(nic->pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
>       e100_exec_cb(nic, NULL, e100_configure);
>  
>       return 0;
> @@ -2262,8 +2261,6 @@ static int __devinit e100_probe(struct p
>          (nic->eeprom[eeprom_id] & eeprom_id_wol))
>               nic->flags |= wol_magic;
>  
> -     pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> -
>       strcpy(netdev->name, "eth%d");
>       if((err = register_netdev(netdev))) {
>               DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
> @@ -2344,6 +2341,15 @@ static int e100_resume(struct pci_dev *p
>  }
>  #endif
>  
> +static void e100_shutdown(struct device *dev)
> +{
> +     struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
> +     struct net_device *netdev = pci_get_drvdata(pdev);
> +     struct nic *nic = netdev_priv(netdev);
> +
> +     pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> +}
> +
>  static struct pci_driver e100_driver = {
>       .name =         DRV_NAME,
>       .id_table =     e100_id_table,
> @@ -2353,6 +2359,9 @@ static struct pci_driver e100_driver = {
>       .suspend =      e100_suspend,
>       .resume =       e100_resume,
>  #endif
> +     .driver = {
> +             .shutdown = e100_shutdown,
> +     }
>  };
>  
>  static int __init e100_init_module(void)
> 
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-- 
Nigel Cunningham
Software Engineer, Canberra, Australia
http://www.cyclades.com

Ph: +61 (2) 6292 8028      Mob: +61 (417) 100 574

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to