From patchwork Fri Oct 31 01:17:07 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trent Piepho X-Patchwork-Id: 6642 X-Patchwork-Delegate: jgarzik@pobox.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id BFDBDDDEE0 for ; Fri, 31 Oct 2008 12:17:59 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753285AbYJaBRz (ORCPT ); Thu, 30 Oct 2008 21:17:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753098AbYJaBRw (ORCPT ); Thu, 30 Oct 2008 21:17:52 -0400 Received: from az33egw02.freescale.net ([192.88.158.103]:48247 "EHLO az33egw02.freescale.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753017AbYJaBRv (ORCPT ); Thu, 30 Oct 2008 21:17:51 -0400 Received: from az33smr01.freescale.net (az33smr01.freescale.net [10.64.34.199]) by az33egw02.freescale.net (8.12.11/az33egw02) with ESMTP id m9V1HjM5018156; Thu, 30 Oct 2008 18:17:46 -0700 (MST) Received: from localhost.localdomain (vpn-10-213-160-62.am.freescale.net [10.213.160.62]) by az33smr01.freescale.net (8.13.1/8.13.0) with ESMTP id m9V1HhRs013908; Thu, 30 Oct 2008 20:17:44 -0500 (CDT) From: Trent Piepho To: netdev@vger.kernel.org Cc: linuxppc-dev@ozlabs.org, Nate Case , Trent Piepho Subject: [PATCH 2/2] gianfar: Don't reset TBI<->SerDes link if it's already up Date: Thu, 30 Oct 2008 18:17:07 -0700 Message-Id: <1225415827-8167-2-git-send-email-tpiepho@freescale.com> X-Mailer: git-send-email 1.5.4.1 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The link may be up already via the chip's reset strapping, or though action of U-Boot, or from the last time the interface was brought up. Resetting the link causes it to go down for several seconds. This can significantly increase the time from power-on to DHCP completion and a device being accessible to the network. Signed-off-by: Trent Piepho Acked-by: Andy Fleming --- drivers/net/gianfar.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 249541a..83a5cb6 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c @@ -591,6 +591,14 @@ static void gfar_configure_serdes(struct net_device *dev) if (bus) mutex_lock(&bus->mdio_lock); + /* If the link is already up, we must already be ok, and don't need to + * configure and reset the TBI<->SerDes link. Maybe U-Boot configured + * everything for us? Resetting it takes the link down and requires + * several seconds for it to come back. + */ + if (gfar_local_mdio_read(regs, tbipa, MII_BMSR) & BMSR_LSTATUS) + goto done; + /* Single clk mode, mii mode off(for serdes communication) */ gfar_local_mdio_write(regs, tbipa, MII_TBICON, TBICON_CLK_SELECT); @@ -601,6 +609,7 @@ static void gfar_configure_serdes(struct net_device *dev) gfar_local_mdio_write(regs, tbipa, MII_BMCR, BMCR_ANENABLE | BMCR_ANRESTART | BMCR_FULLDPLX | BMCR_SPEED1000); + done: if (bus) mutex_unlock(&bus->mdio_lock); }