From patchwork Tue Nov 15 08:41:05 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 694886 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tJ1Ks4Ssrz9t1h for ; Tue, 15 Nov 2016 19:49:53 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3tJ1Ks3jrjzDvxh for ; Tue, 15 Nov 2016 19:49:53 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0083.outbound.protection.outlook.com [104.47.36.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3tJ18G6LJvzDvjr for ; Tue, 15 Nov 2016 19:41:34 +1100 (AEDT) Received: from BLUPR0301CA0013.namprd03.prod.outlook.com (10.162.113.151) by CY1PR0301MB0746.namprd03.prod.outlook.com (10.160.159.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.707.6; Tue, 15 Nov 2016 08:41:30 +0000 Received: from BN1AFFO11FD009.protection.gbl (2a01:111:f400:7c10::137) by BLUPR0301CA0013.outlook.office365.com (2a01:111:e400:5259::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.721.10 via Frontend Transport; Tue, 15 Nov 2016 08:41:29 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; infinera.com; dkim=none (message not signed) header.d=none; infinera.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD009.mail.protection.outlook.com (10.58.52.69) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.721.5 via Frontend Transport; Tue, 15 Nov 2016 08:41:29 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:872; Count:11 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uAF8fA9T021609; Tue, 15 Nov 2016 01:41:26 -0700 From: Madalin Bucur To: Subject: [PATCH net-next v8 5/9] dpaa_eth: add sysfs exports Date: Tue, 15 Nov 2016 10:41:05 +0200 Message-ID: <1479199269-9748-6-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1479199269-9748-1-git-send-email-madalin.bucur@nxp.com> References: <1479199269-9748-1-git-send-email-madalin.bucur@nxp.com> X-IncomingHeaderCount: 11 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131236728893840755; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(336004)(199003)(189002)(6666003)(2950100002)(6916009)(5660300001)(5003940100001)(43066003)(69596002)(33646002)(87936001)(7846002)(48376002)(8936002)(81156014)(189998001)(3450700001)(85426001)(97736004)(305945005)(81166006)(50466002)(86362001)(50226002)(2906002)(8676002)(76176999)(104016004)(47776003)(50986999)(68736007)(105606002)(106466001)(356003)(2351001)(53806999)(4326007)(36756003)(626004)(110136003)(77096005)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0746; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD009; 1:YM9y8fFBdgQTeT3yV5WGZ6GVvNHGatqUNmeyBk7aizsCAOof4g26uX3fyuEeLti8MICz9BBv9XsxCoQ/PhdTijoN8rEjR/OV+BcV1HgmhCM1scgo4uRNG9UXLTKPV/O0hWpv0qOtzfAp0ST6MP1XK+WEtj77zARxcMoxmFOxrHQD7UsiqR1SckVeS5O73fwGf3qNxOWWN8QfJGRy7O/N3OGzdN3alt7z74NK5eNXhlYtZg6isU07tY6ahZyYXjJ/I/jC5DgXRwLr+8AFVPQH0Jpg6m5bJ5CYTHbTou1kgnFcpuSrnDFnzR+XQl3ZdnRKNGGgbiWZxG/Fh8KsMNKoX8y2TD04BskB00H7l6lRsttWCrfV/PHCtZWPF56LwvaQrTvO64lUpmBK6Ixs5jdx6SSIyiocL+UviCmM5yCj8SafsNj8T0NrDHpHw6OlXeCsXFaYOF8/ijXgI7Yv+Rrke9M7OeMvEMAEt2n5BLYac+KnZn94b2UV0wib2iHI+RTgZ9VzVZntNTo4sNqysXCHTDyFG4h215jX9xvjlf3Ut23GHIU3V9kC+pZdgHo7LBYHJJyC5cteAygRAyED4FMmwFizUGgQKu4KeoqRXrkmxxE/VrflOmyYOZ4rt0e6/Udy MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 2:uijq5/62+SZrVOSW2z/MHnxApj/0107lFZbsBQx2pV2rmEfBBfvOcB6b0nQDPzUDiGYtGdjBKOI2xe6r2CODRBQwMcyFGxRmREyiKO/r5EmAsHRU+KiBTTKvQhRNGthkOOTzzpWQaXIVs7kH+7bDt5B/pTzsP8YWY8QMRCy+zWw=; 3:i0W1/FWm+oqFOKS0JF+Vrl4O8uIGJB95s2g57P7zDG7M/ZQOrQ3eyrgcAQ0bKPbuvW52LKvKJAnzoFwOu6FwGhIaHmn9h0piTtY9RTpREcsyCm5W8ieMYjw29jGwMJNNVAVM6gri6KKqomnALZN1MbUODdiAaQIrx/86exolyZnBAjx60FXRiG73+8uI9JINO3AYALhiWHyX6WHA0ZK22RbevbRyI7plRLBP4wRyx658GpxNxP0wF6JvtmpVhc8QCuwAMkRNJmrS9rlIYIuc9g== X-MS-Office365-Filtering-Correlation-Id: 23fe7535-fa6d-4858-9d73-08d40d3331aa X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0301MB0746; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 25:a8J6J1hXJ3PbGMpAcAtoTIvWocM/9OodT0q/L8jk+gLOpNxDMygmjB0quCEZ7RirpvyXQobYKRtTOfGbsgzEgOsFaRTNM2jp5cQXeNCuWk5kmCMgEOdQP79AebTaehmEBNIhJZcIj0ZqDKtcrDCPDq1FfrgUUX6F/YtfwRjStXBHYz73Ulnd6kA/NxtlstEBG6TeYHQk71V0H+y2lygzE5aaSuRI8oksH7tuDaxbweC92bqwGZA3BbeOsBEJrQeJrFe4vaJlhOAuRdKfkrS/+NVtkvUW7Vyf82UFqrzssog0i1+tDgJS+5zOxzIM+0bpFPFgcJS7G1VbE7wJyQj5vOsmsC8+TKUg4L7fP53y1Fp5hsVVXFzPasZ4DmpL0ZZeMr/grmr/FUSOe+LSM7x/jcVLJt6meExOppBpD4jjLwR5d9TdSjYWcuXeQZTFkbooHgImmgpJdan5X0htOhRwWDoSc7jq8zMmvw3mEaII8ciLF9n58TLT15UyVs1lXLUO9ZXJbdrzKd+Zgth/CRmUMxdUC3TDIwBlp1gT9VZkn5BwVTqk9b93hMY8MipbrP9R0vDxEnijysa2j+r0LoUwXSu6uzP0AOQwC0EH4jsFa7rFog5ltBKr9Lb1XFz4b9aj1lb1SwRhteEp1L4VBjFarw/FhOpVFwaEO1KER1hzALPThynIV1zpNf9YFB8D+cei8RTHdedV4H/Z/JLoaKqhUCIr8E8qaUNKMo1/Mf2Um/q/5YHw1hOYvyJmXNoXAVFdJONM3xQ4VUkB5MMSrWWuAyXHUxo6dDHtYkx21Re6Gz2EIxU+5B/avMZhj45q3uXQ X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 31:oGiPr50k2fOJv5lWgGShBUV609sxyJj6Bi/Ix8HcF6pFSiKMpCfceZYwchxQFmvjGjyA/q/8TJtGp36/+HEuo8A1Pv56cqWKcNGodSCdkPe7YtVoiFY+zAll/aK1wijdzHnHdz/tHldTTo7a82a5HdqkJ+uG9QYlQJitfd2WYTEZXVSwwCDikyAyUF3e4DBclyDiaq6MDWcwVeXJI8NgnEsO2PuTYhSi42CR8TA9YSvWMGbXJxK/16caq3IYteGQ/vMMKjoxP3jl36mI9haUVA==; 4:U9TcyoI0N5LbAENB3V2inGf4S+uzqzaFVbxUkTQMwDUXNSNcpYN4dEsLnM41gwSx0OPAfl8D+23wzsWwbveeJ1Udq1byXnRY7W0gFbgUR/C5FTFzjMbz12uTmDd4JE+P14auv72qcZTn1lTlfDhVUqKCuEZ3ZNLS+OfRTt86PnSdGmTvQnEUS4wCuj6/CBvRUwUcPh/8dcBoCDmJSB0ZbOv/+uGLygMGqANpROwTBpTqsCTViiVxVOFchMAVBOEPAr8HeqvDr1JBZRTJZ5QEkayBXh/FmgdoLP7Sbw7Zeikpxti6Zeo+fL72s0lzr+5BktifiwmHTHmLKowRbfAFFnmb19nGX8+kcAoXKB2nHjXpBdM72epcj3g9ciS8EQnGE7TtV5kOTWtiZPmghlMPgjoJfX4IEiPIRCWCtNYBZEZm0Y2oBbWHN4NNyIJK137ISkrgNpBkYBdfweM/QTIZ1YPJoYChWoLt9Qj1GUB3Dmm7Bpk88rMVPrF3bdhHDsOGl3unQFXfI4rIW+wzEQRCCTHzrOSg3moo6xjVSuGAct9plh4+X2BawLIGxzO+uZ8lu5rt3pK1bT9Xcp4hPQXh1A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095035)(601004)(2401047)(13017025)(8121501046)(13023025)(5005006)(13018025)(13015025)(13024025)(3002001)(10201501046)(6055026)(6096035); SRVR:CY1PR0301MB0746; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0746; X-Forefront-PRVS: 012792EC17 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0746; 23:4OZmvBMhWZBmFVHVq6cGBLcCcJJqPsvIXhWc4SQ?= =?us-ascii?Q?5erqc8AnVDH1KnR3kmoJ0zUooSYWjgV2Nm5PTON2xt5H5xSBqz1OmUzFCJcr?= =?us-ascii?Q?kVM+G4im/6ZuU1Y0D2jGc4Tp3aQeZzPLdG6e3XZeEkj4WHD7purfLf3xrlfy?= =?us-ascii?Q?nJpu2CraJuh+QdVoJdfd+3umSFngbvgrtOlDYsEy2/n5HICQNJsXLRItExXG?= =?us-ascii?Q?2MRniK8SwetV4IWqJWZnHGtlqlxSGH49x34tPqdsVeOzuYZYp3J4pE3LJn8x?= =?us-ascii?Q?cobGjsYeRQijjEkxq+YN8n2dcqxrX4LjSwtxzotEUgdzHNm01XNMHybfG6f6?= =?us-ascii?Q?7WbSaxOm7lI9uL79QFiNlIS8Gou+h9/ZETWtmUCi+eqTGjYAEeYcmVT6NsGg?= =?us-ascii?Q?2lS4g0RF+kDunBj5paGoYAWuKqthalXbCSin8W9ijjAFqwVqO/T7Sf8SMFcc?= =?us-ascii?Q?g/d86t+isSbaEaD1eVGG7Zvzu5Nqiy72qm7VO46W38SszPm+V8F+nqzqyrvq?= =?us-ascii?Q?Yi1oS5LDklcnOIcfe6yQB+syaZ5l5N4wVVYAbQov+MJwh0I6z20+66RMXmVF?= =?us-ascii?Q?cgvBqasp7pAGL10zQ5fazGhUW8tyUxZKdZvQR/Aqo6WeB+2csLbzG8OSLcB8?= =?us-ascii?Q?4vejDONHNI3yck5xfJJzEWh92GVgL4MlkiZ1W6lKC7YOnkjULERGMjZH/eGk?= =?us-ascii?Q?teHvRlna4pQaWMQITDQOszAKv9K1G731iXWFnY7iIwPrIUoGEERdfUN+kZZt?= =?us-ascii?Q?OPL6EBR3Bb19PpiqA2P44plCoM6tmOzjIa9b/Q8Co9W1FxuTbFkyPoCVHCcx?= =?us-ascii?Q?0gG2meuKxx97XvgtnqwnD9pReHn4daC/KI3L+vIY2zHgz8PqmKjL7EKetCqF?= =?us-ascii?Q?4SrqNbN5/23/ZzMSe1Ihmjz/+19lIKPF8C+wbs0zIm0kzqSP3NmgynguSX+i?= =?us-ascii?Q?2ZZ2MRq5wQG3Rf/3Of+esgC8ieL9TxuEFkF9OoExINhLyAVZ5jh3YX8KSJDe?= =?us-ascii?Q?BFhCUtiySojh4xYwRAMXWOXB4hdLsVox/DlNCcUxBjReD05b50LLfFPH9iS+?= =?us-ascii?Q?oMCzHYUJ4WoRp/TOTP+CI8jyfxLPR22JxOT5c6cDjEk7TOwn28gg4nAzOwLc?= =?us-ascii?Q?RAwFg9TZOLk8WKR1FcPoCcdKU2Rb7pDxuClPlo0A4B2z3iPU+sz0EzA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 6:CJaVyEXyUjxqTFmxeN7L4doyVmiM4uQBK0uHT8IClxGSLqTdkefgkElxEBNvRpl31kEzKbn0+ZYwgU5tUcgeK+OTHZH8TUp6p1fCWPI4hQgHEW+EwAXoXR7qRioXo09hzKkYQ/QF0sbIeB3IyhLNSkNHBHHu3UveUVpyNoZmoC8iWpyvGBrwiC82bhoI6/Q7vyCXrBYyD9KRrJN8hYVZHnLIkldfuhEEu0GVgDu1BFBmEXlWlneuJw6uW3up5WxGkaz8QV8JUk18Sva4/uqCs+jgxspEnfS0cpWUqhUBnIGQ530G7M6CryILlreugvKU3xpjSO1VeKpM1juIqkA6mw==; 5:x2wegheyf6KQa75La9mHYfef3F5llrztRnTfEvPlAovu7m4GGNdt6PlxSLVa8OKSH5vBkZ2oFlExWCKTBXRWaACBbSenqIl72f8bUwdjwWokpcuie9J6j/MEgSzGhnRA0nwNeYjG1p6JQOwlI/0RkJ8Ce3ClMRFzUtoDYahL24ycf3wcl3wOOK9uJtOqPM9q; 24:FeHQj58TXolVMJSAZvMrYU30+Qh42SVCo5i3s8nSOfhbhGtaxEbfASHBVW7k+HV2/YB1FCDkVInHnPPM1sGHiMvG/Xcm2RdeU4EvGfV1/s8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0746; 7:xoVoV8He9CznqEl7NbH6TtIpoqfAA5D0vexRCw1PxlKOmzL1Dj2O6YyhYVM0ZYLq76El6ZTfXQEEIwD+LzS4232fK/QPsQKfGxr6zgQ6TisfSixHEg39C330xRdzYfyeRgW5KrIojka8pjH/Oe9EyzsqDsrYMwht9c0Ac0JPXdb2TYDJJy9T6k88yI9tgff+pqcl/Chb2KuMot+/yyOOZhRGFXTc7iLz0wv9Zz1nCfm/iXwMZ//vd8ISuIAR1HjUoMNshJASkq1h+81FhfRQCPpcf99BsBg5r6UaTN5yh0f+tlDBOrotaapbGMzWHy0Lgm4ACBEWyHabiYpaB+3E4KFomWotCQPm0dsxrAPdi4s= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2016 08:41:29.1656 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB0746 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: madalin.bucur@nxp.com Cc: pebolle@tiscali.nl, linux-kernel@vger.kernel.org, ppc@mindchasers.com, oss@buserror.net, joe@perches.com, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Export Frame Queue and Buffer Pool IDs through sysfs. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/Makefile | 2 +- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 4 + drivers/net/ethernet/freescale/dpaa/dpaa_eth.h | 4 + .../net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c | 165 +++++++++++++++++++++ 4 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c diff --git a/drivers/net/ethernet/freescale/dpaa/Makefile b/drivers/net/ethernet/freescale/dpaa/Makefile index 43a4cfd..bfb03d4 100644 --- a/drivers/net/ethernet/freescale/dpaa/Makefile +++ b/drivers/net/ethernet/freescale/dpaa/Makefile @@ -8,4 +8,4 @@ ccflags-y += -I$(FMAN) obj-$(CONFIG_FSL_DPAA_ETH) += fsl_dpa.o -fsl_dpa-objs += dpaa_eth.o dpaa_ethtool.o +fsl_dpa-objs += dpaa_eth.o dpaa_ethtool.o dpaa_eth_sysfs.o diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index fcb9cac..07ec2fe 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -2619,6 +2619,8 @@ static int dpaa_eth_probe(struct platform_device *pdev) if (err < 0) goto netdev_init_failed; + dpaa_eth_sysfs_init(&net_dev->dev); + netif_info(priv, probe, net_dev, "Probed interface %s\n", net_dev->name); @@ -2664,6 +2666,8 @@ static int dpaa_remove(struct platform_device *pdev) priv = netdev_priv(net_dev); + dpaa_eth_sysfs_remove(dev); + dev_set_drvdata(dev, NULL); unregister_netdev(net_dev); diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h index 711fb06..44323e2 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h @@ -177,4 +177,8 @@ struct dpaa_priv { /* from dpaa_ethtool.c */ extern const struct ethtool_ops dpaa_ethtool_ops; + +/* from dpaa_eth_sysfs.c */ +void dpaa_eth_sysfs_remove(struct device *dev); +void dpaa_eth_sysfs_init(struct device *dev); #endif /* __DPAA_H */ diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c new file mode 100644 index 0000000..ec75d1c --- /dev/null +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_sysfs.c @@ -0,0 +1,165 @@ +/* Copyright 2008-2016 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include "dpaa_eth.h" +#include "mac.h" + +static ssize_t dpaa_eth_show_addr(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + struct mac_device *mac_dev = priv->mac_dev; + + if (mac_dev) + return sprintf(buf, "%llx", + (unsigned long long)mac_dev->res->start); + else + return sprintf(buf, "none"); +} + +static ssize_t dpaa_eth_show_fqids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + struct dpaa_fq *prev = NULL; + char *prevstr = NULL; + struct dpaa_fq *tmp; + struct dpaa_fq *fq; + u32 first_fqid = 0; + u32 last_fqid = 0; + ssize_t bytes = 0; + char *str; + int i = 0; + + list_for_each_entry_safe(fq, tmp, &priv->dpaa_fq_list, list) { + switch (fq->fq_type) { + case FQ_TYPE_RX_DEFAULT: + str = "Rx default"; + break; + case FQ_TYPE_RX_ERROR: + str = "Rx error"; + break; + case FQ_TYPE_TX_CONFIRM: + str = "Tx default confirmation"; + break; + case FQ_TYPE_TX_CONF_MQ: + str = "Tx confirmation (mq)"; + break; + case FQ_TYPE_TX_ERROR: + str = "Tx error"; + break; + case FQ_TYPE_TX: + str = "Tx"; + break; + default: + str = "Unknown"; + } + + if (prev && (abs(fq->fqid - prev->fqid) != 1 || + str != prevstr)) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, + "%s: %d\n", prevstr, prev->fqid); + else + bytes += sprintf(buf + bytes, + "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + if (prev && abs(fq->fqid - prev->fqid) == 1 && + str == prevstr) { + last_fqid = fq->fqid; + } else { + first_fqid = fq->fqid; + last_fqid = fq->fqid; + } + + prev = fq; + prevstr = str; + i++; + } + + if (prev) { + if (last_fqid == first_fqid) + bytes += sprintf(buf + bytes, "%s: %d\n", prevstr, + prev->fqid); + else + bytes += sprintf(buf + bytes, "%s: %d - %d\n", prevstr, + first_fqid, last_fqid); + } + + return bytes; +} + +static ssize_t dpaa_eth_show_bpids(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dpaa_priv *priv = netdev_priv(to_net_dev(dev)); + ssize_t bytes = 0; + int i = 0; + + for (i = 0; i < DPAA_BPS_NUM; i++) + bytes += snprintf(buf + bytes, PAGE_SIZE - bytes, "%u\n", + priv->dpaa_bps[i]->bpid); + + return bytes; +} + +static struct device_attribute dpaa_eth_attrs[] = { + __ATTR(device_addr, 0444, dpaa_eth_show_addr, NULL), + __ATTR(fqids, 0444, dpaa_eth_show_fqids, NULL), + __ATTR(bpids, 0444, dpaa_eth_show_bpids, NULL), +}; + +void dpaa_eth_sysfs_init(struct device *dev) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(dpaa_eth_attrs); i++) + if (device_create_file(dev, &dpaa_eth_attrs[i])) { + dev_err(dev, "Error creating sysfs file\n"); + while (i > 0) + device_remove_file(dev, &dpaa_eth_attrs[--i]); + return; + } +} + +void dpaa_eth_sysfs_remove(struct device *dev) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(dpaa_eth_attrs); i++) + device_remove_file(dev, &dpaa_eth_attrs[i]); +}