From patchwork Thu Jan 14 20:57:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sjoerd Simons X-Patchwork-Id: 59769 Delivered-To: patch@linaro.org Received: by 10.112.130.2 with SMTP id oa2csp129921lbb; Thu, 14 Jan 2016 12:57:42 -0800 (PST) X-Received: by 10.66.101.3 with SMTP id fc3mr9330759pab.2.1452805061909; Thu, 14 Jan 2016 12:57:41 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q83si11417928pfi.128.2016.01.14.12.57.41; Thu, 14 Jan 2016 12:57:41 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755853AbcANU5X (ORCPT + 29 others); Thu, 14 Jan 2016 15:57:23 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:42790 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752905AbcANU5W (ORCPT ); Thu, 14 Jan 2016 15:57:22 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: sjoerd) with ESMTPSA id 3467A264AE4 Received: by dusk.luon.net (Postfix, from userid 1000) id B77EC28A26; Thu, 14 Jan 2016 21:57:18 +0100 (CET) From: Sjoerd Simons To: netdev@vger.kernel.org Cc: Andrew Lunn , linux-kernel@vger.kernel.org, Florian Fainelli Subject: [PATCH] net: phy: turn carrier off on phy attach Date: Thu, 14 Jan 2016 21:57:18 +0100 Message-Id: <1452805038-27178-1-git-send-email-sjoerd.simons@collabora.co.uk> X-Mailer: git-send-email 2.7.0.rc3 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The operstate of a networking device initially IF_OPER_UNKNOWN aka "unknown", updated on carrier state changes (with carrier state being on by default). This means it will stay unknown unless the carrier state goes to off at some point, which is not the case if the phy is already up/connected at startup. Explicitly turn off the carrier on phy attach, leaving the phy state machine to turn the carrier on when it has done the initial negotiation. Signed-off-by: Sjoerd Simons --- drivers/net/phy/phy_device.c | 5 +++++ 1 file changed, 5 insertions(+) -- 2.7.0.rc3 diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 0bfbaba..0b407dd 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -668,6 +668,11 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, phydev->state = PHY_READY; + /* Initial carrier state is off as the phy is about to be + * (re)initialized. + */ + netif_carrier_off(phydev->attached_dev); + /* Do initial configuration here, now that * we have certain key parameters * (dev_flags and interface)