From: Martin Knoblauch <Martin.Knoblauch@TeraPort.de>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: [PATCH] eepro100.c - Add option to disable power saving in 2.4.7-ac7
Date: Mon, 06 Aug 2001 17:48:04 +0200 [thread overview]
Message-ID: <3B6EBC34.9578EA4E@TeraPort.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 701 bytes --]
Hi,
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.
The patch adds the option "power_save" to eepro100. If "1" (default),
power save handling is done as normal. If "0", no power saving is done.
This is to workaround some flaky eepro100 adapters that do not survive
D0->D2-D0 transitions.
Martin
--
------------------------------------------------------------------
Martin Knoblauch | email: Martin.Knoblauch@TeraPort.de
TeraPort GmbH | Phone: +49-89-510857-309
C+ITS | Fax: +49-89-510857-111
http://www.teraport.de | Mobile: +49-170-4904759
[-- Attachment #2: eepro100-power_save.txt --]
[-- Type: text/plain, Size: 3246 bytes --]
--- linux-2.4.7-ac7/drivers/net/eepro100.c-orig-ac7 Mon Aug 6 10:36:54 2001
+++ linux-2.4.7-ac7/drivers/net/eepro100.c Mon Aug 6 17:32:38 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 option */
+static int power_save = 1;
/* 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(power_save, "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(power_save, "Disable/Enable power saving (0,1). Default 1.");
#define RUN_AT(x) (jiffies + (x))
@@ -778,7 +782,11 @@
udelay(10);
/* Put chip into power state D2 until we open() it. */
- pci_set_power_state(pdev, 2);
+ if ((power_save < 0) || (power_save > 1))
+ power_save = 1;
+ printk(KERN_INFO " power_save = %d.\n",power_save);
+ if (power_save)
+ pci_set_power_state(pdev, 2);
pci_set_drvdata (pdev, dev);
@@ -902,7 +910,8 @@
MOD_INC_USE_COUNT;
- pci_set_power_state(sp->pdev, 0);
+ if (power_save)
+ pci_set_power_state(sp->pdev, 0);
/* Set up the Tx queue early.. */
sp->cur_tx = 0;
@@ -1833,7 +1842,8 @@
if (speedo_debug > 0)
printk(KERN_DEBUG "%s: %d multicast blocks dropped.\n", dev->name, i);
- pci_set_power_state(sp->pdev, 2);
+ if (power_save)
+ pci_set_power_state(sp->pdev, 2);
MOD_DEC_USE_COUNT;
@@ -1902,12 +1912,14 @@
They are currently serialized only with MDIO access from the
timer routine. 2000/05/09 SAW */
saved_acpi = sp->pdev->current_state;
- pci_set_power_state(sp->pdev, 0);
+ if (power_save)
+ pci_set_power_state(sp->pdev, 0);
t = del_timer_sync(&sp->timer);
data->val_out = mdio_read(ioaddr, data->phy_id & 0x1f, data->reg_num & 0x1f);
if (t)
add_timer(&sp->timer); /* may be set to the past --SAW */
- pci_set_power_state(sp->pdev, saved_acpi);
+ if (power_save)
+ pci_set_power_state(sp->pdev, saved_acpi);
return 0;
case SIOCSMIIREG: /* Write MII PHY register. */
@@ -1915,12 +1927,14 @@
if (!capable(CAP_NET_ADMIN))
return -EPERM;
saved_acpi = sp->pdev->current_state;
- pci_set_power_state(sp->pdev, 0);
+ if (power_save)
+ pci_set_power_state(sp->pdev, 0);
t = del_timer_sync(&sp->timer);
mdio_write(ioaddr, data->phy_id, data->reg_num, data->val_in);
if (t)
add_timer(&sp->timer); /* may be set to the past --SAW */
- pci_set_power_state(sp->pdev, saved_acpi);
+ if (power_save)
+ pci_set_power_state(sp->pdev, saved_acpi);
return 0;
default:
return -EOPNOTSUPP;
next reply other threads:[~2001-08-06 15:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-06 15:48 Martin Knoblauch [this message]
2001-08-06 16:10 ` eepro100.c - Add option to disable power saving in 2.4.7-ac7 Andrey Savochkin
2001-08-06 16:49 ` [PATCH] " Kai Germaschewski
2001-08-07 10:35 ` [PATCH] eepro100.c - Add option to disable power saving in2.4.7-ac7 Martin Knoblauch
2001-08-07 20:55 ` [PATCH] eepro100.c - Add option to disable power saving in 2.4.7-ac7 Admin Mailing Lists
2001-08-08 7:26 ` [PATCH] eepro100.c - Add option to disable power saving in2.4.7-ac7 Martin Knoblauch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3B6EBC34.9578EA4E@TeraPort.de \
--to=martin.knoblauch@teraport.de \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=kai@tp1.ruhr-uni-bochum.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.