Zl匘'/{^ϥ"GCjHj7Nd|'tM]Zd}n
8[Bq5/LjU'fĴ95t@e%l$?O('3-ϱ)oّ3U[T`ͪQۑ`+=K%QwLbl]nM*`wWZQKѵ̍Jl}tc!4Mk5,D/	ՔuNT_o^EN,~҇]Ɛ#Ce;*8%4-6g$f6`ԃ9$`E^5X]3g4ĸ=ټ]x\!$~~+C	lPXN?Df&lXȵ	1јtɩ*<<u/C߄ZI<PR'ɤ4a[<{0!Cdmb"NkݍU16?UoUފj[TGc-L#FpYLQ`hiȬPMaI/M@&h""4j m>BCu5C/WZ1A1Zw"{#g't& cSP)IOuqq5b*s7wn!pui(,5eJdv~g]w)<f*'qJgH_	yğ^%6t$$䑁W ɺ$KFf?&S,FH<ZWJywMhs+mJiܺ]332׏UPgQ,S2Y=*/^Qf-'k+B3$=e1W$>O+lJWsA1&Ual0z''ӟ!F~n<Φy*uB#:ٵZp}$8G"j}EeDRM#z% h\Ȕ[fBMXTTf4TOstUj1IdNUuY&o>ΛuYTAaCL~Q:	ΏLJEv|@[IEH@OuՒQpʌH`c wEЄYLKEICxʟLJ6JwKBgmoke~ȥ޷p,枤?rHZ
rAZҲnZ9>QI(d+a:2mwhWD ~;e\G{f
(PSubwY>p`vG:3#+VwK ABQv;'>X<86@7o|JcT(4B]$=:bT&͊*g/GGN5Ǽt_Q55M;^7`ԫbp	Z8݀U+*& /_WӛQre2{AR\A+_)lex, "i");
 MODULE_PARM(full_duplex, "1-" __MODULE_STRING(8) "i");
 MODULE_PARM(hw_checksums, "1-" __MODULE_STRING(8) "i");
 MODULE_PARM(flow_ctrl, "1-" __MODULE_STRING(8) "i");
+MODULE_PARM(global_enable_wol, "i");
+MODULE_PARM(enable_wol, "1-" __MODULE_STRING(8) "i");
 MODULE_PARM(rx_copybreak, "i");
 MODULE_PARM(max_interrupt_work, "i");
 MODULE_PARM(compaq_ioaddr, "i");
@@ -304,6 +306,8 @@ MODULE_PARM_DESC(full_duplex, "3c59x ful
 MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if options is unset");
 MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)");
 MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)");
+MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)");
+MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if options is unset");
 MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames");
 MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt");
 MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)");
@@ -813,6 +817,7 @@ struct vortex_private {
 		flow_ctrl:1,					/* Use 802.3x flow control (PAUSE only) */
 		partner_flow_ctrl:1,			/* Partner supports flow control */
 		has_nway:1,
+		enable_wol:1,					/* Wake-on-LAN is enabled */
 		pm_state_valid:1,				/* power_state[] has sane contents */
 		open:1,
 		medialock:1,
@@ -909,8 +914,10 @@ static int options[MAX_UNITS] = { -1, -1
 static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int hw_checksums[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int flow_ctrl[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
+static int enable_wol[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int global_options = -1;
 static int global_full_duplex = -1;
+static int global_enable_wol = -1;
 
 /* #define dev_alloc_skb dev_alloc_skb_debug */
 
@@ -1142,6 +1149,8 @@ static int __devinit vortex_probe1(struc
 			vortex_debug = 7;
 		if (option & 0x4000)
 			vortex_debug = 2;
+		if (option & 0x0400)
+			vp->enable_wol = 1;
 	}
 
 	print_info = (vortex_debug > 1);
@@ -1229,12 +1238,16 @@ static int __devinit vortex_probe1(struc
 
 	if (global_full_duplex > 0)
 		vp->full_duplex = 1;
+	if (global_enable_wol > 0)
+		vp->enable_wol = 1;
 
 	if (card_idx < MAX_UNITS) {
 		if (full_duplex[card_idx] > 0)
 			vp->full_duplex = 1;
 		if (flow_ctrl[card_idx] > 0)
 			vp->flow_ctrl = 1;
+		if (enable_wol[card_idx] > 0)
+			vp->enable_wol = 1;
 	}
 
 	vp->force_fd = vp->full_duplex;
@@ -1465,7 +1478,7 @@ static int __devinit vortex_probe1(struc
 #ifdef CONFIG_NET_POLL_CONTROLLER
 	dev->poll_controller = poll_vortex; 
 #endif
-	if (pdev) {
+	if (pdev && vp->enable_wol) {
 		vp->pm_state_valid = 1;
  		pci_save_state(VORTEX_PCI(vp), vp->power_state);
  		acpi_set_WOL(dev);
@@ -1522,7 +1535,7 @@ vortex_up(struct net_device *dev)
 	unsigned int config;
 	int i;
 
-	if (VORTEX_PCI(vp)) {
+	if (VORTEX_PCI(vp) && vp->enable_wol) {
 		pci_set_power_state(VORTEX_PCI(vp), 0);	/* Go active */
 		pci_restore_state(VORTEX_PCI(vp), vp->power_state);
 	}
@@ -2671,7 +2684,7 @@ vortex_down(struct net_device *dev)
 	if (vp->full_bus_master_tx)
 		outl(0, ioaddr + DownListPtr);
 
-	if (VORTEX_PCI(vp)) {
+	if (VORTEX_PCI(vp) && vp->enable_wol) {
 		pci_save_state(VORTEX_PCI(vp), vp->power_state);
 		acpi_set_WOL(dev);
 	}
@@ -3048,7 +3061,7 @@ static void __devexit vortex_remove_one 
 	/* Should really use issue_and_wait() here */
 	outw(TotalReset|0x14, dev->base_addr + EL3_CMD);
 
-	if (VORTEX_PCI(vp)) {
+	if (VORTEX_PCI(vp) && vp->enable_wol) {
 		pci_set_power_state(VORTEX_PCI(vp), 0);	/* Go active */
 		if (vp->pm_state_valid)
 			pci_restore_state(VORTEX_PCI(vp), vp->power_state);

_
