netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Mohr <andi@lisas.de>
To: andim2@users.sf.net
Cc: Roger Luethi <rl@hellgate.ch>,
	netdev@vger.kernel.org, Francois Romieu <romieu@fr.zoreil.com>
Subject: [PATCH RFC 01/15] via-rhine: YARB: fix broken resume of ifdown case (NetworkManager).
Date: Mon, 31 Dec 2012 16:25:35 +0100	[thread overview]
Message-ID: <1356967549-5056-2-git-send-email-andi@lisas.de> (raw)
In-Reply-To: <1356967549-5056-1-git-send-email-andi@lisas.de>

From: Andreas Mohr <andim2@users.sf.net>

Well, it's probably not a *breakage* this time after all
(handling probably was never fully correct before).

resume() in the case of an ifdown iface
(as e.g. usually done by NetworkManager)
did not restore the card to proper full post-probe() card state
(see resume()s !netif_running() check),
thereby causing the subsequent iface open() as done by NM to fail,
since that one requires full post-probe() card state
(e.g. PHY available) yet the PHY was not available
(at least in the case of full-shutdown S2R).

Some related NetworkManager links are
  https://bugs.mageia.org/show_bug.cgi?id=7498
  http://crunchbang.org/forums/viewtopic.php?id=15169
  https://bugzilla.redhat.com/show_bug.cgi?id=477964
  https://bugzilla.redhat.com/show_bug.cgi?id=549089

Suspend/resume behaviour verified with both NM running and not running,
and with both mem (S2R) and standby.
Tested on Neoware CA10 (VIA C3), will also test on EPoX 8K5A2+.

Signed-off-by: Andreas Mohr <andim2@users.sf.net>
---
 drivers/net/ethernet/via/via-rhine.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 7992b3e..5facb0b 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -2324,13 +2324,20 @@ static int rhine_resume(struct device *device)
 	struct net_device *dev = pci_get_drvdata(pdev);
 	struct rhine_private *rp = netdev_priv(dev);
 
-	if (!netif_running(dev))
-		return 0;
-
 #ifdef USE_MMIO
 	enable_mmio(rp->pioaddr, rp->quirks);
 #endif
+	/*
+	 * FIXME: some power calls here are being done
+	 * internally in netdev setup parts below, too -
+	 * should be corrected eventually.
+	 */
 	rhine_power_init(dev);
+	rhine_hw_init(dev, rp->pioaddr);
+
+	if (!netif_running(dev))
+		return 0;
+
 	free_tbufs(dev);
 	free_rbufs(dev);
 	alloc_tbufs(dev);
-- 
1.7.2.5

  reply	other threads:[~2012-12-31 15:34 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-31 15:25 [PATCH RFC 00/15] via-rhine: fix resume, cleanup, eth ops (regs) Andreas Mohr
2012-12-31 15:25 ` Andreas Mohr [this message]
2012-12-31 15:25 ` [PATCH RFC 02/15] via-rhine: some suspend/resume cleanup Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 03/15] via-rhine: small rhine_wait_bit() improvement Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 04/15] via-rhine: handle compile warnings (use PCI_VDEVICE macro) Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 05/15] via-rhine: Spelling/phrases cleanup Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 06/15] via-rhine: The Great Renaming Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 07/15] via-rhine: MMIO: move register verify into helper function Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 08/15] via-rhine: MMIO: move support decision (compile-time-only to runtime) Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 09/15] via-rhine: mark some variables as __read_mostly Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 10/15] via-rhine: WOL: remove duplication into a helper Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 11/15] via-rhine: WOL: separate WOL configuration (and its logging) Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 12/15] via-rhine: implement get_regs() ethtool ops Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 13/15] via-rhine: misc. cleanup Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 14/15] via-rhine: The Great Deduplication Andreas Mohr
2012-12-31 15:25 ` [PATCH RFC 15/15] via-rhine: add helper (reduce type-unsafe void * assignments) Andreas Mohr
2012-12-31 22:21   ` David Miller

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=1356967549-5056-2-git-send-email-andi@lisas.de \
    --to=andi@lisas.de \
    --cc=andim2@users.sf.net \
    --cc=netdev@vger.kernel.org \
    --cc=rl@hellgate.ch \
    --cc=romieu@fr.zoreil.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).