From patchwork Tue Sep 11 16:41:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joakim Tjernlund X-Patchwork-Id: 968619 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=infinera.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=infinera.com header.i=@infinera.com header.b="PC80S/8J"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 428rKZ3Z60z9s4s for ; Wed, 12 Sep 2018 02:41:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728046AbeIKVl6 (ORCPT ); Tue, 11 Sep 2018 17:41:58 -0400 Received: from mail-sn1nam02on0058.outbound.protection.outlook.com ([104.47.36.58]:53792 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728002AbeIKVl5 (ORCPT ); Tue, 11 Sep 2018 17:41:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=infinera.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nEvJn4lhrI+NNeAiVGiIlRd1wxVlpv4UIlqaNUYZvmc=; b=PC80S/8J3OSBxGAKnN745EEFnPPO2ZBORAWHrtPXZzak1PN4T1SsfptBZKYl1BL6Vf2U+BlGA1Td5BlWedaLfZPEUgeVY1hD4OWHXUcYSjHKfAtpp9nX+nUdcxlm8NUbMIQ9qI8aMPu98BNgF2zcm7Dam8BHYgtlweDz6fVjP2Y= Received: from SN1PR10MB0736.namprd10.prod.outlook.com (10.163.206.15) by SN1PR10MB0559.namprd10.prod.outlook.com (10.163.134.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:41:49 +0000 Received: from SN1PR10MB0736.namprd10.prod.outlook.com ([fe80::74c2:2611:d633:b90c]) by SN1PR10MB0736.namprd10.prod.outlook.com ([fe80::74c2:2611:d633:b90c%4]) with mapi id 15.20.1122.019; Tue, 11 Sep 2018 16:41:48 +0000 From: Joakim Tjernlund To: "netdev@vger.kernel.org" , "f.fainelli@gmail.com" , "andrew@lunn.ch" Subject: [RFC] managing PHY carrier from user space Thread-Topic: [RFC] managing PHY carrier from user space Thread-Index: AQHUSe5V1BYGKA1HhUOb2iTQY9oUgg== Date: Tue, 11 Sep 2018 16:41:48 +0000 Message-ID: <2fcf4c20a9adf410db98706f6f2508e46aade2c1.camel@infinera.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Joakim.Tjernlund@infinera.com; x-originating-ip: [88.131.87.201] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; SN1PR10MB0559; 6:bHig2hfpn8nStNLPeNrLwVR4jBlWx6aZc31PdXskL7thGuM/xttaXsXbFnD2I5ONVIqfqmHZ1/kKGlgZeb9Kr35qS8AKnICeudsAAhuHN8rl6/z7CGb2ta8PHpg0cXJNKOl8+WikvlFatvzdUiU6rDPjop92buHEOwP7hlRzdHQCYuObisshFuSp3GwKNo+kAnkD5DrSXaw9LS2Y2halWXmCYw/jFX1Tm5lc5vIfolpyB+tXtIOZ9ALHKiBxdo0Ww4QClrv2vHlKdx0IQs+Z6B7IQRoSDsxEWgRCBTnt0hSk7kscz4EIdXjQWWbkxnui1JnvusV/VbAoN6UKrKgXY6VDUAGdX8FBt84wt89HS+RpJQOOIWR0bU3BC7CX3j1wWhyoIMxGfOu4BNDJD7eCZuZ2MzM8rKbUath7Scd5d5TcBQHRNpNhCKQCDpZL2K8Zjf3n7CBuXZ7tqlJAMoHVuA==; 5:3BwHQ53iR1FivVMwcBPhLlaZb8RRLyoi/Nfx68fN/WD8Fkk7Vn0jl1CXqVdlDyPn+kmuhdzELivFth2w/XSL8QWnMB7nwGFhSSjHvxxG+UakEzZbOKRxHOsDGnLEigWHAQB/afFydxMd2rPHj/x2nLkcsyUyEEyBQ+E3JIV89U0=; 7:CySI7GVTO21FmF6rt5iL/EVY9JBG50d45sCVSTuBseTLgx7GuZurBJlLjfBJiIAr4c1rGHW8Aw+n6JXIr2dyJPabIMNGJ55RkX8HGPYU9AFG+jdvubj6UYpRx9je7BB0vRRdpikiduvEzIzD7OXqKqblzVdwoy/D4t5FWur6iBpavcZq/2Q/2ddN7HRUKx44Ydl3LxwovYfNXjDt5fisUWM9D6i6nJvL0yzNi0fJ/bZKi1F+QCLCMt94EJ+f1c0N x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 3faf088d-b1e9-4fa9-29d0-08d6180577d3 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN1PR10MB0559; x-ms-traffictypediagnostic: SN1PR10MB0559: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699050); SRVR:SN1PR10MB0559; BCL:0; PCL:0; RULEID:; SRVR:SN1PR10MB0559; x-forefront-prvs: 0792DBEAD0 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(346002)(376002)(136003)(396003)(189003)(199004)(110136005)(554214002)(99286004)(478600001)(2900100001)(118296001)(72206003)(2616005)(36756003)(316002)(5024004)(256004)(25786009)(97736004)(2906002)(2501003)(86362001)(2201001)(5250100002)(102836004)(6436002)(6486002)(186003)(105586002)(106356001)(26005)(6506007)(39060400002)(53936002)(81156014)(81166006)(7736002)(8936002)(68736007)(8676002)(6512007)(5660300001)(66066001)(14454004)(305945005)(476003)(3846002)(486006)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR10MB0559; H:SN1PR10MB0736.namprd10.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: infinera.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: S9EPUlm3kE5v0x9tdz64qxpvcZBwgWPFVDoxnhj5Ut0bmyKCBEourg2hs9Q/0DnCxg9hj6L+7jlEqmPlxTWUBQA4ZDRIQLqN4E9jucIXP7npma/74cYdE+miMLdvSuUUTX2jCuk7UTtedJgorEi9fhng9eQhGlIj5q1X6u9AqG5EpNN8T2zfzQvewmqXWub1vQDLGzxdT282ZvaRxjj5jBtuuLwxC+3byilySYdnwR1fX+1W4BMKDs8+oXPSRuikG6lzDgSGRtqG6RVgWGQ5Lc9aWYUZv+S/heTfT7EWqUkoBweXJmLSLRwStIxZZr+FAoVf9m83dBAWFve+7ods+48dXDXtToRRgGtGMPGJ324= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-ID: <9FA58F45D08F9D4EB13BAAED9358D9D6@namprd10.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: infinera.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3faf088d-b1e9-4fa9-29d0-08d6180577d3 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2018 16:41:48.2466 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 285643de-5f5b-4b03-a153-0ae2dc8aaf77 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR10MB0559 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org I am looking for a way to induce carrier state from user space, primarily for Fixed PHYs as these are always up. ifplugd/dhcp etc. does not behave properly if the link is up when it really isn't. I came up with a new 'phy_carrier' attribute in /sys/class/net/eth0/phydev where I can induce carrier state: I would like to know if this acceptable for linux proper or if there is a better way to do this? Jocke diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index a1e7ea4d4b16..f82beeabdd75 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -612,10 +612,39 @@ phy_has_fixups_show(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR_RO(phy_has_fixups); +static ssize_t +phy_carrier_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct phy_device *phydev = to_phy_device(dev); + struct net_device *netdev = phydev->attached_dev; + + return sprintf(buf, "%d\n", netif_carrier_ok(netdev)); +} + +static ssize_t phy_carrier_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t len) +{ + struct phy_device *phydev = to_phy_device(dev); + struct net_device *netdev = phydev->attached_dev; + bool enable; + + if (strtobool(buf, &enable)) + return -EINVAL; + + if (enable) + netif_carrier_on(netdev); + else + netif_carrier_off(netdev); + return len; +} +static DEVICE_ATTR_RW(phy_carrier); + static struct attribute *phy_dev_attrs[] = { &dev_attr_phy_id.attr, &dev_attr_phy_interface.attr, &dev_attr_phy_has_fixups.attr, + &dev_attr_phy_carrier.attr, NULL, }; ATTRIBUTE_GROUPS(phy_dev);