--- linux-2.6.16.29-xen/drivers/net/via-rhine.c.orig 2006-12-11 10:26:46.941426072 +0100 +++ linux-2.6.16.29-xen/drivers/net/via-rhine.c 2006-12-11 10:33:57.360728327 +0100 @@ -143,6 +143,7 @@ static int debug = 1; /* 1 normal messages, 0 quiet .. 7 verbose. */ static int max_interrupt_work = 20; +static int skip_powerstate_setting = 0; /* Set the copy breakpoint for the copy-only-tiny-frames scheme. Setting to > 1518 effectively disables this feature. */ @@ -217,9 +218,11 @@ MODULE_DESCRIPTION("VIA Rhine PCI Fast Ethernet driver"); MODULE_LICENSE("GPL"); +module_param(skip_powerstate_setting, int, 0); module_param(max_interrupt_work, int, 0); module_param(debug, int, 0); module_param(rx_copybreak, int, 0); +MODULE_PARM_DESC(skip_powerstate_setting, "VIA Rhine does not send the card to powerstate D3 (sleep) if set to 1"); MODULE_PARM_DESC(max_interrupt_work, "VIA Rhine maximum events handled per interrupt"); MODULE_PARM_DESC(debug, "VIA Rhine debug level (0-7)"); MODULE_PARM_DESC(rx_copybreak, "VIA Rhine copy breakpoint for copy-only-tiny-frames"); @@ -1971,7 +1974,8 @@ } /* Hit power state D3 (sleep) */ - iowrite8(ioread8(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW); + if (!skip_powerstate_setting) + iowrite8(ioread8(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW); /* TODO: Check use of pci_enable_wake() */