From patchwork Sat Sep 1 00:44:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 964795 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=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="Mh6Rl6tn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 422J9n0D6Nz9s0n for ; Sat, 1 Sep 2018 11:12:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727678AbeIAFWa (ORCPT ); Sat, 1 Sep 2018 01:22:30 -0400 Received: from mail-bl2nam02on0089.outbound.protection.outlook.com ([104.47.38.89]:39664 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725877AbeIAFWa (ORCPT ); Sat, 1 Sep 2018 01:22:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zFmX7F0nun7Xqcm/u/wu/y1/A1TOusN4TGzm6PSdhV8=; b=Mh6Rl6tnZlzXZ3c8zIEP+jdCdTgRdFLHVlxa2f0D8f1WG9yY35b5/hksce/hWQBKsKbLmRegVm4iIbqfE8d8sO5ewB9aeDiEEgL92mNhCsg7J1SIDquX08AHtVTRrk0+HLGo9qrWGluZ0BWnhFEf43aF3XPnQo7mKu5OQE9MxMM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.155) by DM5PR07MB2828.namprd07.prod.outlook.com (2603:10b6:3:7::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Sat, 1 Sep 2018 00:44:10 +0000 Date: Fri, 31 Aug 2018 17:44:07 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, pradeep.nalla@cavium.com Subject: [PATCH net-next] liquidio: Added delayed work for periodically updating the link statistics. Message-ID: <20180901004407.GA1366@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.155] X-ClientProxiedBy: BN6PR2001CA0038.namprd20.prod.outlook.com (2603:10b6:405:16::24) To DM5PR07MB2828.namprd07.prod.outlook.com (2603:10b6:3:7::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9142107-f3eb-4ef7-b288-08d60fa4088e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DM5PR07MB2828; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB2828; 3:O5tVxEcVw/TgMomG6At5LvDQW5Xe7nNlCb5FqZzJ2TqZVED4Qr98KaJWsakNMGKVHQRjg6YuIpQtGFG6lJRCoFaw8qrYeuXB6lTgsmBeQM4UTt2v/jJFL1C9y3sIgUhWj0/uFYc0/fmYPXeVoQo1kBIPzKWka8DlzHaJCPVtEs8d/SZ/8K0hz2Yl7DSPPghBURPdhjqSa/doAAP6XQTAZZSFWTn49rI3znEZoeLQzfYAzJfXhMd07ZapxNmmSh/8; 25:6gcKjGpKFE0xHdvZiNH21npmmmJBVELqqj6T5Y1FhUGTzRtGt8J5ZW88czOKcwWqRRVCkcELAbl4K0lUjwprC8SYsGTkgDpZzs0Ol+hZ9WfSOa+pYj32dLY5YQu+f996N2ykjhzbH4+8r2WjS2ozTyzW4iXsnAdaXQWXXnvMXeQwKj7zHNtqYcmejONoZmmVN1HFa7w28BjHfIp7Yx3bYQ4WkwucMYPiA5STXpyoh5mGUK8+wG6wtyUtmJd2sVc000X0HxG8uthFs6sEQ0+PeJeH4NYDweAuo8lOGgTvIvjdR/2PDEwbg9OwaPgVNRtm8DkCMd3SNujvc+B71lf6+w==; 31:jfmX4eXzWYaiSMpmjS9GeUYG6aSAt0UrEVCax/BcFQKitfr+uhqxRC7aRC3RdEwjtE0WBJAxcugMsqPIDWpY4bLBEHHRr8D9E/uejBsd5PP+XjkIRdOoUpV2WJoOw3535pP8esco05Pz7t3eY9rO6czyrjuYKOLGR34s9Mks0H+qS8jgI6DgMyUU81eQ8/AiVFBR0GdLQuy9IElpqloD2ncmy4sjomWNsN+YgWpT9qk= X-MS-TrafficTypeDiagnostic: DM5PR07MB2828: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB2828; 20:QHkQHmrjVNTMpkc0jbLG2ORk/RypBPfvf+10Cwa/CySEtCVdmjJ/LEfOnm+LAfEU63oADVnUgSqyZV7Pd/JB5Rkr8mVPtuOTZ05Pb7oBfcoEcau+4bbEPnA73HLju0SEhPKikxrryqFCSgBsncxiMXaNRb0qXjsmWZHf3oEvU86iLkM/u5rVXzMbd8w3ozCbQZL5og7jRuOPRntepTcgEYEn2CtuIEFlMEfSrV8TRRpImmFQwym5L3Wy+z0jQxPM25yX61adzzHJm8LwxYWeR8q2+/bSUZUPRH6a6MDIDXKkliC2AvVYQrvScZP+I/dAb96z9kL6eWolteKf5oCXE5GuXIPnKEE6ZB2u+8OuidY5KTLC78xlQVaSTvqHW2++6+dFOcIYIZRmLIKWF5/RFCUK3rZiYUmNJ+/emeYrlWViC0YKXGzOdzc1A8n+t8BAbVEDBwgec0boUk0NzRpQySBbuJlMM27FQq4Of1vHf2HJLZlEl0vPWSxicQFkUcYm; 4:xe+UTWBRPCd0GOme3OnRMc78VDrt3KBEcYanfoMW1mcWvxqkU0AL5fWtLwz/DeUckJCjw5KPU4OqLeCsSzg7RrCBEnYJHCVNIz0yrHSYEuISQJ2aIsDGniTrfMsyRgnwCjED7d091R20/GHqpgJlrvfDdu2ZUqzLSKU+baGyF8Zz739/2TEXKRNB2zpkzWIJNAo1UWHbhCXxYdy7Yshz6xJ6Mcf1dcLB4kemJE+9toVEvS2O4MWt4ieowg30K+ukTbQ58AGTtHrVHDou26y1yQ== 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)(10201501046)(3002001)(93006095)(93001095)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:DM5PR07MB2828; BCL:0; PCL:0; RULEID:; SRVR:DM5PR07MB2828; X-Forefront-PRVS: 0782EC617F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39860400002)(346002)(376002)(366004)(396003)(136003)(199004)(189003)(86362001)(2351001)(52396003)(7736002)(6496006)(58126008)(305945005)(2361001)(68736007)(106356001)(52116002)(105586002)(16586007)(25786009)(8936002)(4326008)(81156014)(76506005)(66066001)(2906002)(107886003)(47776003)(81166006)(72206003)(6486002)(3846002)(6116002)(6666003)(33656002)(478600001)(44832011)(476003)(486006)(956004)(97736004)(386003)(53936002)(316002)(8676002)(23726003)(16526019)(5660300001)(186003)(6916009)(26005)(50466002)(1076002)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB2828; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB2828; 23:NHoDe78Wxy8lfaHdE97U2clM9XsrlobkF3FqC0nppI1bwEXXV2eIpkvZqkt4nksLRNR2pr7fKAW9NsLjPbnH4xzBPVZzK0n1mzsXT8FBvx+3PXUVLbDM84r1l6ydTXrNVI/ncOwf5dMYJqEnvvb0XiJF6LZeSiZNLlnQ60ftQFVhZ+e7G1VWCZl5FMqwdi28Yh8G6hDX9G3ETAil12Pv57WgYvCzvfa7CMgf3TW32ic7YWUgcHAH5G+TwXhAJVBk5yqEMoqeH8A3VKEF50Y1DLkpmzrWC+7F8MBnUWhkotkNa6dqjMcoOk5M7zqlqpAoNEcA5I1BfrDgPacfnbt4ToR7wfAGuIe7D9EhImjI+lT5BrK5ujBYfYFzm6qB6fJ3o0L8g6AQ/irOWz42b1vq4uftluIJhTxKG3gh/L5JTuIEHXHfVHIMoTEPXGElEgqDlDM+IV9D85qPDDiH8cLcd9eKLA2oUMDdK57xnMVMByL755CYite46yvqQcdVynaof81RunYVCLduxL/xhc8nt/2nSTVvrak38B3Shwe+8h67Dwbjh3HchpF4r6YPAHpYQnQstwdC2m37Za0C9i18V5Osa35+ot7SeYePXprGIfSxblYc3Rto8QiEs6UCz2h7gkG+VLcutY2P+CgC9S6FCQeW3fIeVZMo1QYq+McM63bKfjLizPnalTG0HWOGiyDarlIixgKkuBarmEARukOb1+0U7ttb5t8BfrTXCmMFn5b/vNGEq49AJBuZxbjuLFbYiH6SveHVXRWs8GEVAMgqB/oWhq6CmJlvbNBU37Cwx2vb4RPl5mBErI7S2TCE98tSqJ1wtnRuvlOcgJCf6lBItkkz4BPqxoo/7g1mHjVvwDpp/+6sK6FzSoA/NF75su1K6xvQeY1gdCtIRPsnyiYLvhBgbh6mCAX5rkVPjAqih/gVpTgWziGlhKqS6IReYhuewA+/N6Ut0yWnZ/iIPh5adG6qlXtxI/hb1rDQ/yPQzAWW15HdvajxOZBrSxzAA6lP8xf0x+hLDqQUiW6QBHQZjf1z+9IktKryI0OlJk7ZtlD8zCQnZupX0kik7KEiUXgKxHgvG3A6+iopIsuHgZzkpAay5oMRUvTsUf5Qm5CYsMVBuAFJRBfgTTS6wtcW4LpeIAhuKcBhPxf8OaAmLtJ3is/BgW156U3KGh5bDEM5oUa8qqe33VBtoHiCXt5aS1dCGdkFATI3hQHoGTpfNL3fcwCIIYb6EGTpAhdTnFiAhmoqyQl0pLIiJJBACSbtM56A X-Microsoft-Antispam-Message-Info: hjHo3P+W7rLk1zng6GMiENYoWKBZ1toSeqem6QfV2PtaIBHtYTRKibk7i5hc0oMy8l0/59LeeSZH3SClzD6bnhOHbqp1+Ct2tKt8toDvDYQblDkL48yU5ULZ85ydnatRNl3QFeWPOAsW6pyFBJhNdwmK6Ov0wWwyI8pINYbSpeGg9E3DLt7LyuXKw71e9CzZLNydKT3VGmVungDxDtpO99YwkNQnppBF+WbGSOzMWt46lqrOwXMvAGP4hzWr4nscBEhzJTQD2VmMj+SbE6xZVo67PE54oQpkCNudDXG1XMu9GPySMf3bVfEZfWj+ZaCpsntzmXZRHH0ZQgFYpTNOAx8zyz0hi8VBQOTs5o8qg+s= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB2828; 6:Jg9AcY7SJ2Ip1uOIqCNiy1Y3H8DYpmfVkomehtsAj71ljbb17sUiQZ+QNWgNcNKMSZhmJlYrPcz9YwmyJODwtdwqFACRNlYto3lZS9Adzx6D7vtG7/9+tiddOSfW3ib6xG62e4RhmE+xBtCbqZtj6FYMYmwiJPFaAayXUI6UcKuE38s5Afy26g3dD5Jh6/UkNsPgKhSCWIXvHwODSMTfNHVClIWlKagEnnQJSwFAIssaavzygf4XSfCxNZtr5GfLJZCqwK89emmRFTTlNbX+QxrEdftmTC7+wtvaz7FM3srzbt5DcRr5BhZ9vvh4hu/dB2oJTwkHHVaRXrCPIhc5YEAUuMLRXIaqQ5AM2XJtl36fKL6VsfmKZkkBlf8Le0xK6TIlIkluYM5yQX9wRmVKhKxQPBzNUmDUh1MH1teRjK9oEZjNtD/DqSdTrizE/ToJbo2cSXIBKyi5vPP5SWHZpg==; 5:aNCmFGuyeN4ZDHt+t/iMwgkloHFZI4z1opCG8uBPxeV5V8yBH2ESj/lAW0nBkSvnNj3H/Fh0VSh6PlrQ6VY1v2R6GEM7WKccImNoerqk+3HEeExmWtLAeEzrLA4aOw+Tf24pyYXq1jOWhx49cERnJQX+BDZzeIeWDk2br+InvfE=; 7:7MMg2qaXTi83yDAfxDnnaBI8zg0or0Kt+NZPS2xJY0qjs6qFojQl5PnvU6dXAGqnv9eJe8bfS/iLfmTZj41JFg8k6U5vgHGVFHxRR6tGgLnwOsEa4lbMZSAg7ZKm+XIV8GBqUCDN3PNdIORlQ5mfdklW+d89phtHZ1vvqqjG1Xx3CApdK10oD07CyxCg0Q7Zs3bO9csVX22vypcYkC/U61SSRVE802gjtjoOT6ipVHzhfIqozbPpwbKmzDwoR+6j SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2018 00:44:10.9939 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a9142107-f3eb-4ef7-b288-08d60fa4088e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB2828 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pradeep Nalla Signed-off-by: Pradeep Nalla Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 24 +++++++++++++++------- drivers/net/ethernet/cavium/liquidio/lio_main.c | 9 +++++++- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 8 +++++++- .../net/ethernet/cavium/liquidio/liquidio_common.h | 2 ++ drivers/net/ethernet/cavium/liquidio/octeon_iq.h | 3 +++ .../net/ethernet/cavium/liquidio/octeon_network.h | 4 +++- 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 30b4a60..cdc26ca 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -1352,16 +1352,19 @@ octnet_nic_stats_callback(struct octeon_device *oct_dev, resp->status = 1; } else { + dev_err(&oct_dev->pci_dev->dev, "sc OPCODE_NIC_PORT_STATS command failed\n"); resp->status = -1; } } -int octnet_get_link_stats(struct net_device *netdev) +void lio_fetch_stats(struct work_struct *work) { - struct lio *lio = GET_LIO(netdev); + struct cavium_wk *wk = (struct cavium_wk *)work; + struct lio *lio = wk->ctxptr; struct octeon_device *oct_dev = lio->oct_dev; struct octeon_soft_command *sc; struct oct_nic_stats_resp *resp; + unsigned long time_in_jiffies; int retval; /* Alloc soft command */ @@ -1371,8 +1374,10 @@ int octnet_get_link_stats(struct net_device *netdev) sizeof(struct oct_nic_stats_resp), 0); - if (!sc) - return -ENOMEM; + if (!sc) { + dev_err(&oct_dev->pci_dev->dev, "Soft command allocation failed\n"); + goto lio_fetch_stats_exit; + } resp = (struct oct_nic_stats_resp *)sc->virtrptr; memset(resp, 0, sizeof(struct oct_nic_stats_resp)); @@ -1388,20 +1393,25 @@ int octnet_get_link_stats(struct net_device *netdev) retval = octeon_send_soft_command(oct_dev, sc); if (retval == IQ_SEND_FAILED) { octeon_free_soft_command(oct_dev, sc); - return -EINVAL; + goto lio_fetch_stats_exit; } retval = wait_for_sc_completion_timeout(oct_dev, sc, (2 * LIO_SC_MAX_TMO_MS)); if (retval) { dev_err(&oct_dev->pci_dev->dev, "sc OPCODE_NIC_PORT_STATS command failed\n"); - return retval; + goto lio_fetch_stats_exit; } octnet_nic_stats_callback(oct_dev, sc->sc_status, sc); WRITE_ONCE(sc->caller_is_done, true); - return 0; +lio_fetch_stats_exit: + time_in_jiffies = msecs_to_jiffies(LIQUIDIO_NDEV_STATS_POLL_TIME_MS); + if (ifstate_check(lio, LIO_IFSTATE_RUNNING)) + schedule_delayed_work(&lio->stats_wk.work, time_in_jiffies); + + return; } int liquidio_set_speed(struct lio *lio, int speed) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index ed5fc6e..e973662 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -1841,6 +1841,12 @@ static int liquidio_open(struct net_device *netdev) /* tell Octeon to start forwarding packets to host */ send_rx_ctrl_cmd(lio, 1); + /* start periodical statistics fetch */ + INIT_DELAYED_WORK(&lio->stats_wk.work, lio_fetch_stats); + lio->stats_wk.ctxptr = lio; + schedule_delayed_work(&lio->stats_wk.work, msecs_to_jiffies + (LIQUIDIO_NDEV_STATS_POLL_TIME_MS)); + dev_info(&oct->pci_dev->dev, "%s interface is opened\n", netdev->name); @@ -1881,6 +1887,8 @@ static int liquidio_stop(struct net_device *netdev) cleanup_tx_poll_fn(netdev); } + cancel_delayed_work_sync(&lio->stats_wk.work); + if (lio->ptp_clock) { ptp_clock_unregister(lio->ptp_clock); lio->ptp_clock = NULL; @@ -2081,7 +2089,6 @@ liquidio_get_stats64(struct net_device *netdev, lstats->rx_packets = pkts; lstats->rx_dropped = drop; - octnet_get_link_stats(netdev); lstats->multicast = oct->link_stats.fromwire.fw_total_mcast; lstats->collisions = oct->link_stats.fromhost.total_collisions; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 9c267b4c..fe3d935 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -917,6 +917,11 @@ static int liquidio_open(struct net_device *netdev) netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); start_txqs(netdev); + INIT_DELAYED_WORK(&lio->stats_wk.work, lio_fetch_stats); + lio->stats_wk.ctxptr = lio; + schedule_delayed_work(&lio->stats_wk.work, msecs_to_jiffies + (LIQUIDIO_NDEV_STATS_POLL_TIME_MS)); + /* tell Octeon to start forwarding packets to host */ send_rx_ctrl_cmd(lio, 1); @@ -964,6 +969,8 @@ static int liquidio_stop(struct net_device *netdev) oct->droq[0]->ops.poll_mode = 0; } + cancel_delayed_work_sync(&lio->stats_wk.work); + dev_info(&oct->pci_dev->dev, "%s interface is stopped\n", netdev->name); return 0; @@ -1181,7 +1188,6 @@ liquidio_get_stats64(struct net_device *netdev, lstats->rx_packets = pkts; lstats->rx_dropped = drop; - octnet_get_link_stats(netdev); lstats->multicast = oct->link_stats.fromwire.fw_total_mcast; /* detailed rx_errors: */ diff --git a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h index 7407fcd..0decc72 100644 --- a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h +++ b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h @@ -250,6 +250,8 @@ static inline void add_sg_size(struct octeon_sg_entry *sg_entry, #define OCTNET_CMD_VLAN_FILTER_ENABLE 0x1 #define OCTNET_CMD_VLAN_FILTER_DISABLE 0x0 +#define OCTNET_CMD_FAIL 0x1 + #define SEAPI_CMD_SPEED_SET 0x2 #define SEAPI_CMD_SPEED_GET 0x3 diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h index a04f36a..bebf3bd 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h @@ -378,6 +378,9 @@ int octeon_send_command(struct octeon_device *oct, u32 iq_no, u32 force_db, void *cmd, void *buf, u32 datasize, u32 reqtype); +void octeon_dump_soft_command(struct octeon_device *oct, + struct octeon_soft_command *sc); + void octeon_prepare_soft_command(struct octeon_device *oct, struct octeon_soft_command *sc, u8 opcode, u8 subcode, diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 807266e..ecd2a26 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -42,6 +42,7 @@ struct liquidio_if_cfg_resp { }; #define LIO_IFCFG_WAIT_TIME 3000 /* In milli seconds */ +#define LIQUIDIO_NDEV_STATS_POLL_TIME_MS 200 /* Structure of a node in list of gather components maintained by * NIC driver for each network device. @@ -175,6 +176,7 @@ struct lio { struct cavium_wq sync_octeon_time_wq; int netdev_uc_count; + struct cavium_wk stats_wk; }; #define LIO_SIZE (sizeof(struct lio)) @@ -213,7 +215,7 @@ irqreturn_t liquidio_msix_intr_handler(int irq __attribute__((unused)), int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs); -int octnet_get_link_stats(struct net_device *netdev); +void lio_fetch_stats(struct work_struct *work); int lio_wait_for_clean_oq(struct octeon_device *oct); /**