From patchwork Mon Sep 10 06:34:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 967882 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="MIzCjgtn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 427zHz2c3lz9s2P for ; Mon, 10 Sep 2018 16:52:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726794AbeIJLo7 (ORCPT ); Mon, 10 Sep 2018 07:44:59 -0400 Received: from mail-bn3nam01on0083.outbound.protection.outlook.com ([104.47.33.83]:3328 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726185AbeIJLo7 (ORCPT ); Mon, 10 Sep 2018 07:44:59 -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=rk4Wpq4Yrq0f9NhWk4kmkqDYc3PEhP/v0RrTnDCkygc=; b=MIzCjgtnXzimhEgC+Syt2dopEhjfiV9A6dxY9YXM+bONdoE0GuRjNKOIw1fBZVwOAaK7gqDS0UYH/c75ARvgWlMNnoc4Vc7H13Xngk8uRJVFVmDy8SmJfn9lNbfgQ950aJuyA7pehzAYJnyH5jOqww76uwWMzETcocfZX/4k0vg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.155) by CY4PR07MB2824.namprd07.prod.outlook.com (2603:10b6:903:25::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.15; Mon, 10 Sep 2018 06:34:19 +0000 Date: Sun, 9 Sep 2018 23:34:16 -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, intiyaz.basha@cavium.com Subject: [PATCH net-next 1/3] liquidio: Disabling tasklet when NAPI is active Message-ID: <20180910063416.GA4035@felix-thinkpad.cavium.com> References: <20180910063322.GA4011@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180910063322.GA4011@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.155] X-ClientProxiedBy: CS1PR8401CA0030.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7503::16) To CY4PR07MB2824.namprd07.prod.outlook.com (2603:10b6:903:25::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ac3b3264-baae-46ac-f5b6-08d616e77084 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2824; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2824; 3:+QPLPckZO7sEBnRtMEtx1MHa8NYOCRd1PVT19yadXf3srGvoha1DpivxC48JxV2SnKZhaqEvFz7PI5lTfBAX6cTRS9QjmZEOLETSQkUz9sFiRPx+43SPwSY7d2tZtmT20bgJjo/RuD85NToG65nOPcZU9yLFbC3XNTW02f7hNVfLhe29b9Cya9tuNEyQs7t5ar0RrQ/BayO8cEEL4OYmBo5SyBOutKtiqZXJuDiEWR3aICRYxwvRU4n5DYr4JZn0; 25:E4dnCyvTj+p/ong99JL57/JY7LYtRgG+KovZWmnvGZgNv1/jp0yl+POdcyCWlG5nfRrHUw19L+Fmns3hhN98GrNMCtD4raG7bnbl418QikDF08Nyg719t1nQce+QLmuhl5oOEHQ/Go3nui5P9DoyTfUzgtP1Y8R/ImjB2E9TkuOR92B+tqUzfih0UklZP3XE+smRd/dhwNLeK4czFoonWi50ac50M5QLgeQQxM7qw1I0zCXNXrOX0H6mV/dsmkv9FiBwBIkQbZim9oh8PSttJh3XJgQxHb5dt2+VDso1YorEqzx6cYBOpL/NCTC9OKeo2h0AtNLZ8JFdRlaw/XPKSg==; 31:DEG/dNB6A5mEVGbnEBubDevvZGAzVdY3rQkQuB2VFPEXmMTLRjIRNwZn5x5P6xAOJ3QDpZPyGuknKt1/Snd+sgKkWvdFex6X/7q/YuhmZXqbXcpkjdUZCFdMfrKaMYdYh3isMRm935f3J8UVRlPythPFGiCAdtdfhEHRZgHfL41TP+DEXapBvjYdu+HWqZaIzdnwipWm7qGCNqNBNCRBlBHiQXJLl98G1IJq3SRHEa4= X-MS-TrafficTypeDiagnostic: CY4PR07MB2824: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2824; 20:QuQIsw7ftwoKHL+lbj8LEUtXInjgICp20rMA+RrESqy5VefhwQcirExSm/BsuTEyxD9wPunMGx1M303CGtYcLvx32BpbDNNKelUq6mrsVh65HlLWWKwQN//10swdIRYG9MbosJhEg8cHeK8DQEDmc3TKlkRqY4gh6GemYmciCVmtoQMefvXf2QQxkIsT5bzzP7X/EJEjgWOSlLWRn4t5Uvibnp935uAQKRvyT/3DgfYfUsbE9hNsumEossSHkKVkYa5Z/6h1mst18p7lXNtBMvHfzRmEIrYkWP5EKzGsoUap/LPNR6/6EsmY6wbPfyIOrVbNsPrNuIvRt+il8KebphXw5wR6hvOeEYhmG+05TAa+WFc2sra0BL3KnbeLdM3nf+W0htqX4IUwb0ZPBCezRwTXo5YJPff2r2QlTrZXqe+Z+sgT5VTzkYuXnDHa9saQZhbS+YLqYS7WxpxJkFzrMJKKprK4EEqZJXuOHS8YtTqXwyDUgTCoPRkf37YAPFL+; 4:Tr7K8DWXfPTdigkdcBO/fXTfQpZv/07fq9/FfdqQXsq/SkKDiS8AQpqosFQ9bFhYJ6aobsOq3Vr6oWGAZYiQUg3MKX/s8rEnf+xdZaPNL9f9SIGRABBnoJnzqn5eYn9e90LTEG5OzCQsQQ06qfvPYSdR1qk3XysbqYvCNaR2WrTwHb2JlIAgb3Uz/LCJK9sVh5ziHeVhag7rHA9jYka3nnEZIet4dn5gxWKqnbeSQ5RD84rZyhSxMtMCyfYul4o0ODlNlXF4i0blOYwq0YHh/g== 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)(5005006)(8121501046)(3231311)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(149027)(150027)(6041310)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699050); SRVR:CY4PR07MB2824; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2824; X-Forefront-PRVS: 07915F544A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39850400004)(346002)(376002)(136003)(366004)(396003)(189003)(199004)(16526019)(86362001)(76176011)(58126008)(66066001)(25786009)(52116002)(6116002)(7736002)(6496006)(76506005)(72206003)(47776003)(23726003)(16586007)(386003)(2906002)(26005)(478600001)(50466002)(97736004)(316002)(3846002)(186003)(305945005)(6486002)(11346002)(476003)(53936002)(33656002)(8676002)(107886003)(1076002)(105586002)(81166006)(446003)(68736007)(5660300001)(956004)(106356001)(486006)(8936002)(6666003)(2351001)(44832011)(2361001)(6916009)(14444005)(4326008)(81156014)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2824; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2824; 23:nU9GBkvMz024ufEt7R5XfDYTFIG0kc1EiQbG7IM+fp2m8hb3UujrmHAMr8ncrzJefmdveviY5WAtmjrviDpTRlNhydCWMkttzpCNu6/g0IJfBAO2Y8mpdkd0VIu2asjXarkQX/fxRohKe6ncSxioszduMpZXfrx72a9ffonl+pJrNjpl4mXV4pYf/O71knDm43BVjVn8VZZvD6vzaD/gRG1Kfov8YZ6/bCwHbXk971CbVSqgvkP78JUH4Ic+O8DiHeABRjJqOMUAeWn+5PVZPbLLn/m0ednyQQeezmFUpOrKfwLq9H/SnbCQIX4clpfugIAIj6tY/A9HYI6uNPRq64ABk8bAWFMPatMOKdGAllFmmtIxAenkeM6Al6jic7I1WrommuOUYV774CG/XlQx7jE4BcQq5O81IaG8jzzwcIPZSQQEEzR6Tz1+IeO6XHeVv5bcXGqWuSFt+NPPNbuci44sg8PVLDCR03RhVZgyAKsRXesCoCrmLBaJEpoWQwtGO7notohk0CwzfB5kyJxKgPIzk1FXSBPkqK25o3Y+GavPXOBJLF6FCiE1+B+o97DvbaPNxPNzOn9ku3HRfr+LzYVc2jIJffPVmLn8UIikbMRa5nCJdecVZMeInDZMXInhMxb+Sx0SyEdL9nsvoiSRjtTYfNkivx2ssdlD55vy0o4QnZLE/XNKzCIgzpVPk7ZjRl+QGBypPUzPNHzMvRZmbEZhX7T+fNx3J35Zc7bjVTklWu1t4bovgTwIamQkHlIxFmZrFlzkTfhRdHz2N8b5+cS6ihTNSL79J82CrN1xYxeERXqZp5YJ5qMmD/uuyOXeaytZfIbr49YHbvva40CuiRwE/5VoTyQcVLcmCeLS4yqZv/MsCx0eWqeEC453WMk7KKcOAyULkKzoulIN/yYWMFwMGcd7IcO0rNR58pbGWhejzdk7ceQFcts4erdtjCEuJhl7o1IgdOFgPHdXKrTQr5hQOhsKxVbCgJlJz+A7BFMBhOQwN1OP0rsxCULdHLA+Ffgiq/vR4M72v97nuHDRLv0Zh0VT7fFT+DiadM6Z7GsLpn/s1Zq/fanp5syCDjBBxW54f1Pwz+Ihw94ykPTW603Lt5p+y2PY/pjYDksgfYwCARQs5S2ZTSIzE7IOB8oACoUNotrmRvjLfMBYu40MNhTJEE9CRu7GC6ovLZqf0hJc7sD7NjcfC6fVzXt24HSok2xpYCNlTTxznSd/EYjVKskBVDJy/I+bE3koi6XmuFA5U5kXfRfo1LPvTo75Iz56qMCSJc9R+/m/zfYEOSJ4jmCDCky29KtjBjlid6r6JNM= X-Microsoft-Antispam-Message-Info: 0Ah1lcGNxpjazROkSqCxA/mMsgltU2Nj/Ol+Wi9rdIywCx7+CvNiUnyLntLxC2QlvJBuUonWUny7lkQLBJyv7FfH30UkdcoHe0sICZi0mfCJADhhxo3scVI7i3TTK9xiMHM4P6k0s4KtvTxVQ92g9p1LaFzEMbqFJLp4TjJJqdVJFNwtZLHqQNXqv94PlFgw7sZJbBZiGeHEMazRiNqKjpnsLSUMp5AFs9mslbGczEz6xa7eGsmc90JkFGm7/n3X/WJ0zsTsAe6HoWx/ZBM0beHhg8fx0f94C9uaHJ9xpdEegeoxGujxTUJjBf999aEQJTDmiOXj2UkTA774cR1TzUg3NMfMDxyRzkgy7alOBqQ= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2824; 6:IU71CO3v9TlHY7L9puMK5PkTD+MmxscOroMiQbtswweLp9RPiD5d8fQak52D/Xf8Y8+ajQazNJDgBiMbHg3Yh0FMxZ4pEyh6BAtMPD3ALcaHeGCBEXA+f7nlo7a5WNEITXJN/k9ppheNmo5lj2EDAFRgkOg2zJw2VV+/PisIGNe0Q6niX2H3I0TxJ5Bg033QQ3jha+RA6GGJ4z4As1g30y3cQwfhNFwCUPZyw9lTtDsQPSZ75rSPepGtx9xqSdwrsRvw5iriDKsRT/dgJk2GGkk7u3ifBHFMPDN4v9HM0CQXSOdcIpX1tMVrJe5SPzvgLJeN8RUgwNYp3ThbQSbNOUXHk1heBNk/650Yx5nJ5Xy65i5q9fpvXCffvK04u6FMXdZ09z3Wa28CzOvO5AjlkUbuHvEi5dnTro5yp3TbTHVdSVIGa7XT2TwEWZV2PRKrvekLzAnGzeTXUSPpcqLlhg==; 5:YRs7byv4tvSe3kExjP9ki1TwWcThNIhWlMGon2pOrAXCxXQz/tYfcghWVV/UdpYz5a1NDjTPp5TYYLBS7daAX3QaV9/Bz8C4IsvO759l01K035sRQhkGJ3j0jyC30RT94Kr+S5FM6Wd3S933xaPI/P1U3o9+Rrh6hJERLJZ86Vw=; 7:SXK6erRUhAlrz4tCxffPrcIqQyQBHLsJKAFzwJHB5XvqmfdehfcJzvC1/Fcmi8RicSBbH/IpaQAur5EADLhecdauaWiWihWWL3FOMIina6X5uPw4crT/+2Ijk98kBYAzTb5YAZLUT8a0NZxd4wuB+tdcisXJKAuC3HLMrCNcxARfZIksv5JUxcF9cAvJQn0ibSwmSMneEjWTi6DKExkfLiSGd9loa0xRgAN0aVJk3A4izN++mTICDKJbWNrsBuHV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2018 06:34:19.9271 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac3b3264-baae-46ac-f5b6-08d616e77084 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2824 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Control packets are processed in tasklet when interface is down and in NAPI when interface is up. So tasklet can be disabled when interface up and re-enabled when interface is down. Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_main.c | 14 +++++++++++++- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index 40f941f..0aba1f7 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -1239,8 +1239,10 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop) static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) { struct net_device *netdev = oct->props[ifidx].netdev; - struct lio *lio; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; + struct lio *lio; if (!netdev) { dev_err(&oct->pci_dev->dev, "%s No netdevice ptr for index %d\n", @@ -1269,6 +1271,8 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list) netif_napi_del(napi); + tasklet_enable(&oct_priv->droq_tasklet); + if (atomic_read(&lio->ifstate) & LIO_IFSTATE_REGISTERED) unregister_netdev(netdev); @@ -1805,9 +1809,13 @@ static int liquidio_open(struct net_device *netdev) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; if (oct->props[lio->ifidx].napi_enabled == 0) { + tasklet_disable(&oct_priv->droq_tasklet); + list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list) napi_enable(napi); @@ -1861,6 +1869,8 @@ static int liquidio_stop(struct net_device *netdev) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; ifstate_reset(lio, LIO_IFSTATE_RUNNING); @@ -1907,6 +1917,8 @@ static int liquidio_stop(struct net_device *netdev) if (OCTEON_CN23XX_PF(oct)) oct->droq[0]->ops.poll_mode = 0; + + tasklet_enable(&oct_priv->droq_tasklet); } dev_info(&oct->pci_dev->dev, "%s interface is stopped\n", netdev->name); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 8fa7ac3..0ec4bfe 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -444,6 +444,8 @@ static void octeon_pci_flr(struct octeon_device *oct) */ static void octeon_destroy_resources(struct octeon_device *oct) { + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct msix_entry *msix_entries; int i; @@ -587,6 +589,8 @@ static void octeon_destroy_resources(struct octeon_device *oct) /* Nothing to be done here either */ break; } + + tasklet_kill(&oct_priv->droq_tasklet); } /** @@ -652,6 +656,8 @@ static void send_rx_ctrl_cmd(struct lio *lio, int start_stop) static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) { struct net_device *netdev = oct->props[ifidx].netdev; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; struct lio *lio; @@ -681,6 +687,8 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list) netif_napi_del(napi); + tasklet_enable(&oct_priv->droq_tasklet); + if (atomic_read(&lio->ifstate) & LIO_IFSTATE_REGISTERED) unregister_netdev(netdev); @@ -898,9 +906,13 @@ static int liquidio_open(struct net_device *netdev) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; if (!oct->props[lio->ifidx].napi_enabled) { + tasklet_disable(&oct_priv->droq_tasklet); + list_for_each_entry_safe(napi, n, &netdev->napi_list, dev_list) napi_enable(napi); @@ -938,6 +950,8 @@ static int liquidio_stop(struct net_device *netdev) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + struct octeon_device_priv *oct_priv = + (struct octeon_device_priv *)oct->priv; struct napi_struct *napi, *n; /* tell Octeon to stop forwarding packets to host */ @@ -967,6 +981,8 @@ static int liquidio_stop(struct net_device *netdev) oct->props[lio->ifidx].napi_enabled = 0; oct->droq[0]->ops.poll_mode = 0; + + tasklet_enable(&oct_priv->droq_tasklet); } cancel_delayed_work_sync(&lio->stats_wk.work);