From patchwork Fri Apr 9 11:04:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 49821 X-Patchwork-Delegate: davem@davemloft.net 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.180.67]) by ozlabs.org (Postfix) with ESMTP id E77E7B7CF6 for ; Fri, 9 Apr 2010 21:14:21 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752398Ab0DILOP (ORCPT ); Fri, 9 Apr 2010 07:14:15 -0400 Received: from zmc.proxad.net ([212.27.53.206]:34060 "EHLO zmc.proxad.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752247Ab0DILON (ORCPT ); Fri, 9 Apr 2010 07:14:13 -0400 Received: from localhost (localhost [127.0.0.1]) by zmc.proxad.net (Postfix) with ESMTP id 539063418083; Fri, 9 Apr 2010 13:05:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at X-Spam-Flag: NO X-Spam-Score: -1.817 X-Spam-Level: X-Spam-Status: No, score=-1.817 tagged_above=-10 required=2.8 tests=[ALL_TRUSTED=-1.8, AWL=-0.962, BAYES_40=-0.185, DNS_FROM_OPENWHOIS=1.13] autolearn=no Received: from zmc.proxad.net ([127.0.0.1]) by localhost (zmc.proxad.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 68GA2nroEuiQ; Fri, 9 Apr 2010 13:05:55 +0200 (CEST) Received: from flexo.localnet (bobafett.staff.proxad.net [213.228.1.121]) by zmc.proxad.net (Postfix) with ESMTPSA id B010E341807C; Fri, 9 Apr 2010 13:05:54 +0200 (CEST) From: Florian Fainelli Date: Fri, 9 Apr 2010 13:04:52 +0200 Subject: [PATCH 2/2] bcm63xx_enet: do not overwrite ENET_CTL_REG value MIME-Version: 1.0 X-TUID: 8a7e7bd8dd14e9b9 X-UID: 47 X-Length: 2147 Organization: Freebox To: netdev@vger.kernel.org Cc: David Miller , Maxime Bizon Message-Id: <201004091304.52540.ffainelli@freebox.fr> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org bcm_enet_hw_preinit will correctly set values in ENET_CTL_REG for internal or external MII operations, however, bcm_enet_open will blindly overwrite the ENET_CTL_REG register value and thus we will loose any changes to it that were made in bcm_enet_hw_preinit, rendering external MII operations non-working. This would lead to the driver not being able to check for link availability on external PHY setups, and thus we would never get to sending packets because link was down from the driver side. This was completely un-noticed because all boards out there but BCM6338-based ones use internal phy on their enet0 interface. Signed-off-by: Florian Fainelli --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/bcm63xx_enet.c b/drivers/net/bcm63xx_enet.c index 5173340..14ab4dc 100644 --- a/drivers/net/bcm63xx_enet.c +++ b/drivers/net/bcm63xx_enet.c @@ -958,7 +958,9 @@ static int bcm_enet_open(struct net_device *dev) /* all set, enable mac and interrupts, start dma engine and * kick rx dma channel */ wmb(); - enet_writel(priv, ENET_CTL_ENABLE_MASK, ENET_CTL_REG); + val = enet_readl(priv, ENET_CTL_REG); + val |= ENET_CTL_ENABLE_MASK; + enet_writel(priv, val, ENET_CTL_REG); enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); enet_dma_writel(priv, ENETDMA_CHANCFG_EN_MASK, ENETDMA_CHANCFG_REG(priv->rx_chan));