From patchwork Wed May 23 16:38:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 919182 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=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="yQz/fDVV"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40rdWd60BZz9s0q for ; Thu, 24 May 2018 02:39:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933695AbeEWQjH (ORCPT ); Wed, 23 May 2018 12:39:07 -0400 Received: from mail-sn1nam01on0063.outbound.protection.outlook.com ([104.47.32.63]:61565 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933609AbeEWQjB (ORCPT ); Wed, 23 May 2018 12:39:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ld+9R49/IvgULCyBKBz7sFOeUAUfXc5DysYNZ2hzjIs=; b=yQz/fDVVQSPSrEqWvu0Y6ovyZblm+ttm8k0wWzTMeblrZ9pFuj8NRj8xVMS5afYG9iPyiPERqAKR6muKi97LPwwiKXi6aa1bi+XMG5J8OHGXV2v0Mv6s+YZwL7Kao/HuaUJIyHbUgu7yefg/cE5g+qcpwmvVRxPScfaFQm9GGac= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by DM2PR12MB0171.namprd12.prod.outlook.com (2a01:111:e400:50ce::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Wed, 23 May 2018 16:38:59 +0000 From: Tom Lendacky Subject: [PATCH net-next v2 06/12] amd-xgbe: Add ethtool show/set ring parameter support To: netdev@vger.kernel.org Cc: David Miller Date: Wed, 23 May 2018 11:38:56 -0500 Message-ID: <20180523163856.31625.3464.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20180523163802.31625.76572.stgit@tlendack-t1.amdoffice.net> References: <20180523163802.31625.76572.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0045.namprd12.prod.outlook.com (2603:10b6:802:20::16) To DM2PR12MB0171.namprd12.prod.outlook.com (2a01:111:e400:50ce::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0171; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 3:1P1ay1g9MgLcZeDvToSvwwmokb+sZMb9aN/xk7S7YX6RgBl1B1Tz1qxHabBdSwtcMU064uLgXvS2g/wutBvBYNdQ/fWJTBhEhx1O4GcOcFyY4kRXZy2S2uSVc7px3YJe9kONI5yUQje4KdONTizXn66yiLI77Q0TLCBk1cofcRDIlPhN6ZlPAdfCBICXxhJNf7NxkS0AnVdEUyM5XJ95UEyiLTNs7ieGAg2FkNIeOwfqr9nssHyq2lWH5awJ1A3G; 25:jIsUaJ0F+OBtOdGIEjRkBuz0muknkTHn5uY8WouygKAvyl7P5zagOnYqqq1HVwoOcHxJ9CvVZezCvRhfH3hq2hgtezyafDpfrx3svjMtXOS88BEqEd4xJ8KckB0noVM2wYbO+DcRzQK/TCCj+H8TF8Ct51Q2GErDD7hhCdE7xicyu7Gx23R/lqNNKHb09CJGjtmzPfJRALgpufxWBldHG/Q2wAILRKVFjjMCFJMzgtUyTXKMDmLJ4WLF5SkDdq4Xy8cJLNG8fQ47ob0McxRYyN8SSo1g+OM96gD52k1PT4EMkW8cjaiqlB6XM+Rsaoke8gkirBYFshUsXCJtY+M1Gg==; 31:59lM9KzWTSxo5YKm7iyo+PPQmJ3G9kRfftBqT9mLqthg5TnpBjT9J5XMUB5EFomJPXGdZZfRJBXybxxDkh84+QAAxipmJIPtLDiLz5qxCenWjgA9gtQRf+5ZpzDb0LAMmGMBxiDAHQEkgrzKKM9m3xUx9S+kAiqESYmoPW+rlQm83zue1/5EJewq+PsjKNNxeyTE3GnffulefWfLVpxnwmI1R8H1IQlVhmKKMXDxo+Q= X-MS-TrafficTypeDiagnostic: DM2PR12MB0171: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 20:83BCt9J7a9skr7xwsgrhWnRg0bxMUI0CZVvZdskE4FM3ThpJWtr1OsSj6+cZxTJjT+Oc3xd4holaEdIQ5ij2bgqNX+k90hTsPk5lMj76wcDxGMdJ7NxaNHE1lC3LM0oPS50yvEI26cgnThXLG2AkxHxQy5Gj0/Fn+31pEKpe3t5G1R3DcvKWo08E5u8gHjUxHv07v5+umn+ooJ+zu6cg4TmqIZN+hXOELc9jcIPeYpk72HG+FMy+ReKtNC3/0d2WZe8gy6sPxyOjNbB6fhJJA3GWUTNabKHC1uEkvpLzHMRekYKwdxV+eVRb7w0WwNGk/3cULBiOFpWZGF2Jm4w03cuIGww/mLx1DEfE755mLzmKf1ZDplKfoAtMxHsb32uz62cuXMeLnwbSjhZBu2fzy7rV+vTqw8njzFFm7DL3V0XJ8J2pFCN/Q3bpV7bAM5fl4rDGfIuHUyNC9nZfP+ArvvobyKqKZz8apb7RY9W8Rc5jImk6a0tzGmRbPCkiIpi7; 4:9QUtF8kzEygd4ecYx247mi7OH9RUgqhAAYHCM/SLnFRtFlyc0i+nyuaERRRWyg5wlLjSa48+jFA+nP6zoCaItKXCP1XyqN1eRJHs/4WGv5Dj8xoNohYSTSWojb+oK1QLuh57OVyfdLiVITmOTgO7ZK6e4BjEbpKixHSxD0CzHC3Z2D28FdL5vCOOxHSc3Ilmjv3LU349q7KgKNh7cDZtFmGOEp5zIP/x6xVbd9YuDDZvD2h7j6GZV7Sy3gzsUDQ1+FhYwFaAY3cTuvQJtDkvUZvZdwrCwIvLZnBCtHND3sdqsWhYMpYkP84eXPtqd1ap X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:DM2PR12MB0171; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0171; X-Forefront-PRVS: 06818431B9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(39860400002)(39380400002)(346002)(366004)(189003)(199004)(386003)(53416004)(230700001)(103116003)(16526019)(50466002)(26005)(97746001)(2906002)(7736002)(72206003)(5660300001)(66066001)(186003)(53936002)(478600001)(8676002)(486006)(956004)(97736004)(476003)(76176011)(6506007)(11346002)(446003)(2361001)(6916009)(2351001)(59450400001)(4326008)(7696005)(23676004)(52116002)(2486003)(81156014)(6666003)(68736007)(106356001)(6116002)(9686003)(105586002)(316002)(58126008)(575784001)(305945005)(55016002)(47776003)(8936002)(81166006)(86362001)(69596002)(25786009)(1076002)(3846002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0171; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM2PR12MB0171=3B23=3AsnRT?= =?utf-8?q?O+OwoOLuqQKmXF2E0G0XULDbi6VO1Q1F6kDL/QBMlIH0I0vvG2M26+x1?= =?utf-8?q?mlKGm7/VK25kyp0ZpKR1QtqEqU8bDp7EG9Zz5LOtvusB6Re688j9J4nm?= =?utf-8?q?E1woEShiP/fMTSg8G8rr/2ux1R0+9gRHoDMxOeLniFfQuwBDmncDb4mu?= =?utf-8?q?yVSc2f31avwxhroTF57EEWf+RMQ/HlI+DvbhcpDA9pX8W7teGA5VJaym?= =?utf-8?q?R3g3F3zyQHvL+DxQOTNvBF9ccO2JU70r9pDm03G8BDZ6KF94oz65BVRi?= =?utf-8?q?Q0iIAmaONAhzirnpSw2ebgBc8ZbBfRxOSQeabGXMkzw3jyYxZ97kI7VD?= =?utf-8?q?8kaBv8BpZ8tyPpiyOoM9AezzqARDsZ0wz84ZUwEujP70CaN7mejUxJ+/?= =?utf-8?q?pHOHetY//GWw4C1O9g+/t/sLxrLA5ePANaMSTH2ssMKLQoAew06Pn3Bt?= =?utf-8?q?ahCOr0UgpL0PKMXl9qnyv2/rz54+lnrQZFESb7I/PU9R6S85A+04kxW/?= =?utf-8?q?w4ESQBYFCraNtw4nSLEO5JlP+aqe83aTogxaKOuJ19z83LpenvtAyXyl?= =?utf-8?q?MIypdlk3WOPyI4jtug3ZPByBj+9IfEWFK6q3txpSxdzq1Af6G28pqSTa?= =?utf-8?q?9PTiL3Aj/RIxsRI9FaClnal7tiKXWL4Kzj4f0/65BJ7t8Oi8p6F2oZqN?= =?utf-8?q?DwbH76zy3Kf0uVd16DGDAx+8f3EwfXOlhUppR1wcep7IFauLMwirdeDt?= =?utf-8?q?7HjBSl3vXsEAAZk6V2UD2OYcnl1bDLJX91F1U+C7z1tQ5c/pgkCr2gUM?= =?utf-8?q?mFV1T8WKJMXfis6GVp/JUK8vUdOvCdo1YRgFAlatUVEgv49EHzr4pE5n?= =?utf-8?q?eF8Tx1Az79OyXHJDL/fYi26plwlXeOukbWIvn+jrneAJkWtHSQ3PcZ1w?= =?utf-8?q?yn1tMnx9M+WQSVGwQDech4EAYeim8yVYJcnr7rkEw64e3yR6X6Lq2lvo?= =?utf-8?q?UoJ6SRiCjaDfMlLwmkQ2ZV889ySaARG8h/D3bZQ6DB24h1o+fKt8Z55p?= =?utf-8?q?ZN/QVbAYic525WalK0iAYoTLPwX0TXckR86OdYeGRP3c9fmFVIGLsGv1?= =?utf-8?q?ibPwxwkiuavW3CwdXyl4E7TXgILKz3eWPMAY5c7QhYEXFa7119FKyIUL?= =?utf-8?q?IMyIu6Jtkk1T1C2RiJ7+lOt0fiRTX/vYxV8O8Uh0iZzLWKYV4nQyA9q5?= =?utf-8?q?JqWB0tDAX9Bu09RbzAxHq6LQdohpnt+bUY9bsl73b8qQ9nX+SaVkLxtk?= =?utf-8?q?YR4uohilBdXiyd5WuP+ON+t5zf08AKqPSViE1ymugV7QXXV3JzWs9yZM?= =?utf-8?q?3VZZ8mtTEdFPkYWI/Y9GEZyDJh+r+rDdhA8QINM4B3fFEX5k6P0J3VSQ?= =?utf-8?q?hjUekFMeBdL8S6c2RlyMODzTCRwi5a936KmrA64=3D?= X-Microsoft-Antispam-Message-Info: FC+7yZlygfDhNQSJ1shfV24SGBU+Y4DjEc3W5aIsRiUcfx9MCBpQF/6RFoqcXfZGp73LEtmravy56ZQz1zw3Uagk62qFZwteFpH43mK2hYtCb9OyzPKbpfCgymrVgGmrnT1eyIttJzsqL1S005hhsXKDCXB2Y/ypAtZMkSmylyugf0USOi2XqgcfGk6XXegh X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 6:EsVFvCjjJb1yGu6fhqBIj1ooZYIptXHLX30+29GQgOz+r1uc0V+wxyzPjE9I0tS+CFZ24zgpu4ap4VdpKwoYqrqycTu0sMOFV7lkALorWj2bYvuaMPywnQMcYrpvPZ3pij/ZeqgXg+57x2PTguefBMKSW01kTvH0mk01a9urGaoC5xGpF9MSqDnu3YcMDNBFWXFvN6zg/UKjxP3+cvcAXrht13oMFMLJfTap/ToxTLWcsBoC4qK+hJXfyI3/UDYAYUZLNfdoQboyqFyB63rGk/IL/8KgFyTu1QePErlFiX1tOSTg+uHg7loEa+KEmlxN41cIrMKuNm/BA8NFOviQ1kWOH/ftMbXYrf125afzhEiPgBQuY2g47/YSO6G4oVFeh31mFadEgfWFujaYYtCMFtVSzT8yW5/vHC7KLRelmLqLhY2TuCjvVrkPKriGzJimoxQal3EOIuGq4v4Y30S4yA==; 5:Ewwv+F/WHGNHAFoQtRL1YBoGO4oQM75lySTY68gazE7ajay9BN07VjgnkKHjpUN3l0OIcV1VomUnvBM2yMmd8NjAqar2rT3WYQPg2xC331xhEFIBM32wqIOJg75QifEZF1cG6ouj4mLp2GjwpOc4FOo2E/rEj1pY8srFu4hYcl0=; 24:7/PVvvLbtiE7+xQkCyOXmuxpBVmgBw3cEzzRE/c1C4rv19hkmm3AY6WqMlpkyViZ10suxuz3X9B/FnCC5iZSnEvZSgyM8s8X725TpMNK8eI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0171; 7:t+IntS/PNceoqJMJA2Z38VJ4nNNfnO8ObrnKNt40ziAsyhFGkzbhZAJJbo/B3eJewHGOSbKzxVBzS0A3fkgdxScVvMESgeOk7hB8Pmn7CjvVkFFc1P0F5QVyfdZSWIwgYvCKuhlTvkRczhjDN3B1X1BxGIwrtVH3GEgFV5WL9RvSsXJqCyk6MkZzDDBsqIAuzutfgYgd5iK+WL3FumIsl2sIyWpNcT8bK4yQFXGlnaIDDYfIa7a+1Mkkx0jfgx/Q; 20:VjQR9E7oQAUxRUZBTB6xd9RWZp2ZtKenBUiqxFhQ1QavediPmaZIaqM2jqJiZqwPFd++/L0jjM5ofVJqZyTe9fLVpvnNls/e4Faw/fukNCE12T3o1ZUP6/M6OfgyymuVjY3b53aeYxcAjdeQTswDuXoZjX4HHJll5XDDN9ayjwos0JYGXV0mxkq0a8pgUd/DJmvXkAku24lGQ7bwxi3OE028PQyxa8MaVQgjxFC7J50lwuosdMA/Ow5lxXhe0P8k X-MS-Office365-Filtering-Correlation-Id: eafd620f-f7e1-486c-9624-08d5c0cbaf40 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 May 2018 16:38:59.1589 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eafd620f-f7e1-486c-9624-08d5c0cbaf40 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0171 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add ethtool support to show and set the number of the Rx and Tx ring descriptors. Changing the ring configuration will result in a device restart. Signed-off-by: Tom Lendacky --- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 6 -- drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 65 ++++++++++++++++++++++++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 6 ++ 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c index 7c204f0..2646c08 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1426,10 +1426,8 @@ static void xgbe_stopdev(struct work_struct *work) netdev_alert(pdata->netdev, "device stopped\n"); } -static void xgbe_restart_dev(struct xgbe_prv_data *pdata) +void xgbe_restart_dev(struct xgbe_prv_data *pdata) { - DBGPR("-->xgbe_restart_dev\n"); - /* If not running, "restart" will happen on open */ if (!netif_running(pdata->netdev)) return; @@ -1440,8 +1438,6 @@ static void xgbe_restart_dev(struct xgbe_prv_data *pdata) xgbe_free_rx_data(pdata); xgbe_start(pdata); - - DBGPR("<--xgbe_restart_dev\n"); } static void xgbe_restart(struct work_struct *work) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index 57394b77..d12f982 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -642,6 +642,69 @@ static int xgbe_get_module_eeprom(struct net_device *netdev, return pdata->phy_if.module_eeprom(pdata, eeprom, data); } +static void xgbe_get_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ringparam) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + + ringparam->rx_max_pending = XGBE_RX_DESC_CNT_MAX; + ringparam->tx_max_pending = XGBE_TX_DESC_CNT_MAX; + ringparam->rx_pending = pdata->rx_desc_count; + ringparam->tx_pending = pdata->tx_desc_count; +} + +static int xgbe_set_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ringparam) +{ + struct xgbe_prv_data *pdata = netdev_priv(netdev); + unsigned int rx, tx; + + if (ringparam->rx_mini_pending || ringparam->rx_jumbo_pending) { + netdev_err(netdev, "unsupported ring parameter\n"); + return -EINVAL; + } + + if ((ringparam->rx_pending < XGBE_RX_DESC_CNT_MIN) || + (ringparam->rx_pending > XGBE_RX_DESC_CNT_MAX)) { + netdev_err(netdev, + "rx ring parameter must be between %u and %u\n", + XGBE_RX_DESC_CNT_MIN, XGBE_RX_DESC_CNT_MAX); + return -EINVAL; + } + + if ((ringparam->tx_pending < XGBE_TX_DESC_CNT_MIN) || + (ringparam->tx_pending > XGBE_TX_DESC_CNT_MAX)) { + netdev_err(netdev, + "tx ring parameter must be between %u and %u\n", + XGBE_TX_DESC_CNT_MIN, XGBE_TX_DESC_CNT_MAX); + return -EINVAL; + } + + rx = __rounddown_pow_of_two(ringparam->rx_pending); + if (rx != ringparam->rx_pending) + netdev_notice(netdev, + "rx ring parameter rounded to power of two: %u\n", + rx); + + tx = __rounddown_pow_of_two(ringparam->tx_pending); + if (tx != ringparam->tx_pending) + netdev_notice(netdev, + "tx ring parameter rounded to power of two: %u\n", + tx); + + if ((rx == pdata->rx_desc_count) && + (tx == pdata->tx_desc_count)) + goto out; + + pdata->rx_desc_count = rx; + pdata->tx_desc_count = tx; + + xgbe_restart_dev(pdata); + +out: + return 0; +} + static const struct ethtool_ops xgbe_ethtool_ops = { .get_drvinfo = xgbe_get_drvinfo, .get_msglevel = xgbe_get_msglevel, @@ -664,6 +727,8 @@ static int xgbe_get_module_eeprom(struct net_device *netdev, .set_link_ksettings = xgbe_set_link_ksettings, .get_module_info = xgbe_get_module_info, .get_module_eeprom = xgbe_get_module_eeprom, + .get_ringparam = xgbe_get_ringparam, + .set_ringparam = xgbe_set_ringparam, }; const struct ethtool_ops *xgbe_get_ethtool_ops(void) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index f0f455b..7dc0fac 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -144,6 +144,11 @@ #define XGBE_TX_DESC_MAX_PROC (XGBE_TX_DESC_CNT >> 1) #define XGBE_RX_DESC_CNT 512 +#define XGBE_TX_DESC_CNT_MIN 64 +#define XGBE_TX_DESC_CNT_MAX 4096 +#define XGBE_RX_DESC_CNT_MIN 64 +#define XGBE_RX_DESC_CNT_MAX 4096 + #define XGBE_TX_MAX_BUF_SIZE (0x3fff & ~(64 - 1)) /* Descriptors required for maximum contiguous TSO/GSO packet */ @@ -1330,6 +1335,7 @@ void xgbe_dump_rx_desc(struct xgbe_prv_data *, struct xgbe_ring *, int xgbe_powerdown(struct net_device *, unsigned int); void xgbe_init_rx_coalesce(struct xgbe_prv_data *); void xgbe_init_tx_coalesce(struct xgbe_prv_data *); +void xgbe_restart_dev(struct xgbe_prv_data *pdata); #ifdef CONFIG_DEBUG_FS void xgbe_debugfs_init(struct xgbe_prv_data *);