>  after realizing that my first attempt for this patch was to
> enthusiastic, I have no a somewhat stripped down version. Compiles
> against 2.4.7-ac7.
I have an even smaller version. You can select the D state for sleeping as 
a parameter, 0 should fix Martin's flaky hardware, 2 is the default - 
current behavior.
--Kai
--- linux-2.4.7-ac2/drivers/net/eepro100.c	Sat Jul 28 10:24:55 2001
+++ linux-2.4.7-ac2.work/drivers/net/eepro100.c	Mon Aug  6 18:49:11 2001
@@ -60,6 +60,8 @@
 static int full_duplex[] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int options[] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int debug = -1;			/* The debug level */
+/* power save D state when device is not open */
+static unsigned int sleep_state = 2;
 
 /* A few values that may be tweaked. */
 /* The ring sizes should be a power of two for efficiency. */
@@ -125,6 +127,7 @@
 MODULE_PARM(rx_copybreak, "i");
 MODULE_PARM(max_interrupt_work, "i");
 MODULE_PARM(multicast_filter_limit, "i");
+MODULE_PARM(sleep_state, "i");
 MODULE_PARM_DESC(debug, "eepro100 debug level (0-6)");
 MODULE_PARM_DESC(options, "eepro100: Bits 0-3: tranceiver type, bit 4: full duplex, bit 5: 100Mbps");
 MODULE_PARM_DESC(full_duplex, "eepro100 full duplex setting(s) (1)");
@@ -136,6 +139,7 @@
 MODULE_PARM_DESC(rx_copybreak, "eepro100 copy breakpoint for copy-only-tiny-frames");
 MODULE_PARM_DESC(max_interrupt_work, "eepro100 maximum events handled per interrupt");
 MODULE_PARM_DESC(multicast_filter_limit, "eepro100 maximum number of filtered multicast addresses");
+MODULE_PARM_DESC(sleep_state, "eepro100 power save D state (default 2)");
 
 #define RUN_AT(x) (jiffies + (x))
 
@@ -777,8 +781,10 @@
 	inl(ioaddr + SCBPort);
 	udelay(10);
 
-	/* Put chip into power state D2 until we open() it. */
-	pci_set_power_state(pdev, 2);
+	if (sleep_state > 2)
+		sleep_state = 2;
+	/* Put chip into power saving state until we open() it. */
+	pci_set_power_state(pdev, sleep_state);
 
 	pci_set_drvdata (pdev, dev);
 
@@ -1833,7 +1839,7 @@
 	if (speedo_debug > 0)
 		printk(KERN_DEBUG "%s: %d multicast blocks dropped.\n", dev->name, i);
 
-	pci_set_power_state(sp->pdev, 2);
+	pci_set_power_state(sp->pdev, sleep_state);
 
 	MOD_DEC_USE_COUNT;
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/