From patchwork Sat Apr 28 06:32:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906047 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="Z8eSrbf2"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1Fh1sZXz9s06 for ; Sat, 28 Apr 2018 16:32:56 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933408AbeD1Gct (ORCPT ); Sat, 28 Apr 2018 02:32:49 -0400 Received: from mail-cys01nam02on0074.outbound.protection.outlook.com ([104.47.37.74]:52672 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932841AbeD1Gcr (ORCPT ); Sat, 28 Apr 2018 02:32:47 -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; bh=kK808acg7t8MLOlBadqLFwO4zK4U5PgpLGCFMYFVi5A=; b=Z8eSrbf2LNbslltngItkGl4Oh2jvaswcTwc/icB5UziqSFzfSt6PVVS1Ab/8WQ7zFjeLpw4eUzMQU9CGdUJ7YOWNjVkaNQxCvLgIBEHhRvx44ckfXgCSY85/vZwonX70JlP2YzLywM/yFVTz5bJLmDyB+woSaeY2Kz7qDsBsc8A= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN7PR07MB4210.namprd07.prod.outlook.com (2603:10b6:406:b2::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.18; Sat, 28 Apr 2018 06:32:44 +0000 Date: Fri, 27 Apr 2018 23:32:39 -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 V2 net-next 1/6] liquidio: Moved common function if_cfg_callback to lio_core.c Message-ID: <20180428063239.GA3247@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0110.namprd15.prod.outlook.com (2603:10b6:101:21::30) To BN7PR07MB4210.namprd07.prod.outlook.com (2603:10b6:406:b2::12) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN7PR07MB4210; X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 3:MRol3B1yN3g+kRxHoD9w2HPtgnF7nVbMb8saQWLl6FvwgsHwm29NqCWsp0pqrgau9WH6ygwa7eO+7GN90wSgyxvEWYz7PJlDIRyqsbpEJ/v/H6isMQ6rbOjLqrRUzUulQU86qoxP1UhI4m8t4z+enSrrsG6PK3K+ezt/jp1nhm2djPUf+KM63GiGzM9Dwz+sLYqzwtPiQPP7TOt0woyBnNSwaJiEF+c6U3p9e8B7WeMS51m0AcXQ3p99Oqt0sfaE; 25:6VhlPhcpPdHaeO/v2LBnsgGfZbP98dIxk5vpz0KiTlKaBPyOyjxRwCiwUdhX8lBFMM5btFltWKSWZcd84wR4tvjgmURx3YUp4uGhR29jNNE53JrFgCrwniKBTuciC7269/1AGexoQ99IOu+oufW+5UdwN5i6WzoVCDwPGpJomWGkQRRYgPmKtl/YBAzMa9kXHTdcWe47aWV0h2pml7e2G3qt/HM5qc5oT/yENs9VHg2M43URUi+ToeKTyzZF107xa/9WaubRtPwvpDVqCW+Ag7k3sfNzNB8o2Vm3GTUV/wAwFZbb/kOw/tZFXD6S4NWiMrspAz02SMFbwT6ysFFEng==; 31:AKyTCus5Oyah5rqGJCrV60WcBlkkWQ+FM7bRkah8xyga3rLoS7DCKGp2ZiLaC2I46zfprv/0Dyb+HaiTo+4lC+6xo+hS9vSpUihmkhaoXKtNn2h/p2z/RDawnF91OqoyXTL6VAB2c9VI/uAC/PFA/g+dmV+ZhoicMOnlDyNieF5NIQn4nkNWB/8XL5LVLdEMeJUtfOg6MxWtb33JyLVIsYD6NfuDvAlCa83lBtBv8rc= X-MS-TrafficTypeDiagnostic: BN7PR07MB4210: X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 20:/TKeGXZiICOnKY8aoY6BG4OWfFUVhDbiOERARRAlANCUGvNPekz+BIe7JkkOg3Z3ejTLUL9LpmziNtLbZtXHWNQONMD1Q92fvUtx8TP6kbUTXm59XJ7fBycI1SZrrL6/vjyjJRylhfDu6ozwjnnEKZ8jTx+nkMKrvjAoGmXL1Z4/tL8XaBCKClUQmQoiRyPmRm71+dsae+JVDbRSo/E24arN8LTMgFLkYgWm3IRh+TXcsTseyCzo94WR0m0D6WiRQPOl4fiF9sXwK/bs6YDWjokV2g3zd0czAAOpv2MOMUUbgSfe6rDy6ZL9lxhl6uIRzS1/GLtOzTX5mWtBw27D1R7y7i0eJOyICV/FDYX7IIPTjO0M9L1Fmp/3a6IMmxuf/j3IKArPxVe/6RCcE4jsgK23LBEYapxs6WTnY1Y8ALPQ78k3ZUdGjPTW6HhniobgiRfynLk7CVPvx904ciGm2m/pQNb8skMwPxASzacSmSWxBitMUbAZ8MG1lz5uYkNw; 4:LRs9nHH38jPWPNr19gxCIllEqIYd+sK2VUZ/Zvu5YICXpqaMgptpGrNIqbf6mRA5e28bfVO6eP2I0zYGx4YJ8Rjnmm/LZ4EUnYO67rrEJTYOkXA8cXAeKiKQdkkhJ/oAgsaYksb9/llPXhQZBcMdZA4NZ/9718zAPYvQADKeDDntlMkPxN49voKaxxhkIWtpdG5Cfkzg3qqzbkRkxUFm4yrmVNNKOB64lAtyijoONYAPvoeRVwRshdgPoykzbL6f3nf02QZhry971Hiny2i6+g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:BN7PR07MB4210; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4210; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(396003)(346002)(376002)(39380400002)(39860400002)(366004)(189003)(199004)(97736004)(68736007)(33656002)(2906002)(2361001)(6486002)(16586007)(316002)(6916009)(107886003)(6666003)(86362001)(50466002)(2351001)(58126008)(105586002)(5660300001)(8676002)(106356001)(186003)(81156014)(53936002)(16526019)(81166006)(1076002)(76176011)(6496006)(25786009)(386003)(59450400001)(26005)(6116002)(76506005)(8936002)(52116002)(72206003)(305945005)(66066001)(478600001)(47776003)(476003)(7736002)(956004)(3846002)(486006)(446003)(11346002)(23726003)(44832011)(4326008)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4210; 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; BN7PR07MB4210; 23:vuzLjfCd7k3S1d1IbEE9zF3Wf9IxP2qXfSQ33Q1kAibk+7uMJLH8UpEhxAhbwb/oL8esRW0/NaXDpQyq5YouxwWIwmTHk5gF+1bzZCoWnPAK2eQOxH/zKMNPTewyI0DZaFJ1pE1yx0D2fe2JSXgh2PES/m66SNkAqMqk9smXRIxG2+fvmH3w72F3Jlb77W5RpcqvGzlgx9HCWvoPnSxNn7wrEtNfJ/+IL3mTMhEEPdYn2URoqOaBXduxfb9nH3KWCBupsrudrKutbk+EkXog3x4t7ebSfy+FckM3nssytYmZwq4uhu7du3EZeICCBLTA4/G+2QSgRGkxPXqQj8+fWnIvbePmnGZXeMO8nTif5AXvf8KyE8/jFZERrV3GygoyWB10OOLcKff0urW5z+C+sSfsov/eqRbiW/51o0XYZXLHGWQjXGOIICk4XYlOkbsEDNe207POOC9c6yql6UR27qBzjfUKKlzRNHLbPFzTd1GTsWf6EEtt9Y1NBarIKR65WITgCXVDuDZk5+OaDzvSurenORCFSmoJiVZeZRMp0rb2GHY0F2hTz9OuFF602btutiXnFg1U30SyRXyH1e5KsRh7goV1mv6+ZIdhXGE6j7remGwQnW2wW297aKN/uskw2uRm3wfnpPdwHdphu30EaWqrM5UkEgseDnI3q2lMXwFm9myQk5ouHxqfBvPGyAHHZZu/iGfeRSXhyvgEhxO0MVbTB3GwDKZaLIDmY/zS85Ox8OgiGWqmlBUOUyCujZbzrmYUEss2SPxhufL2Qno+wCltlagbde6/72FOL6lpfxsygENHTZyuuULsrryNsAlwKZ53wKXAcT5lIt8umlYLxrJWc1fA2BNOcfJa55MHAe654cjV5wlKs+oYGbeUKOThGbe5K6QkvdNDY788Ku9pWaBf9Zbczu2oe6fov1bC3RwmNe2YTYR8msbW30bLgf2xhjlxhaLbsmXjXVgtUDTvkEw1FlUMvE9jGozrfPxok6YRDIigiGRL5bxppPMIWsTCzBzuDVYg/izhPC1z+u8b1ZeGgYgN7nseACVuWhLOuyeUt02EiS3WbQPrtV2DJu41Rt13K6fTHJDdOkMZoIiFpTYa1ckVpg2/eB98mQCLHtLQ9kr4EVGIRx2m37joBaW3ms+Ms7ffpFAedUD3ypu+JkOi6su4aUqhxk9vfHEuuOdm1b3/O+R/i8lT2MFs8CiS4VqMBNedzkTS2EUSvhKUrBWpM0dDgTgOqkHALd6FtFzoNNvKXrFk1xG7ZldYEPUSIV86jRJUCHUy9FWMV+umK8AaCISiS7xcDjcl4IIF/LSZPu50CuFzAJE3nERbLUqu X-Microsoft-Antispam-Message-Info: Kt3baFcC5V3YXwWSM/K8i+FMKRn0ukhvyg2ZYKmG6r3SM/Lmx7YnN3isoRZwrWs7+xyKtY1MmAws460vqysAIIb91By2lWKlPVHVNaCRvjSpOw3vU9hOBBEC0TM5jLosMaAaY/OolKHaiBlWCYmToxVBtV6CaJfcNyEtIir2M8rLdMIjXyjAM4IjTzNo6DYU X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 6:cUTwOJJmBuqo8bvsqGJRbEMoIXHrbgdUm1gp4Wt60dRVbOVSbYjaVBsdGw6SBGzJak/ZSVCegGEH0iqoOeunairh4JYANLIQmPYKeOBaoTMcF2waLLdQ+A5vDGvZOSyb8Ks3dIeXKJcfdHh79M8smTMCaUA9ch6kpQHQUm+7Or6kYuvkSNagXhjeattBEmj0KfEpnjSTq+F4rA5TJYIvGnB9yzxDVg7sLcy+wyFEu/p6cQL2iHamfsk0Dq65faZSebDZ0mmcJIHLAb84zGwBnlklwTc7e3RcHnfKaC+Yk1EWfodYyRHQq0Gde6DHgnfgJNu2QjJ8dXvkZKHabj3Tvia+idGgzzk8rgjaCWE1yPIf7J6NbOkAuPvbC7LCqaqf5IxLSwXTr5i60oy9H+0g7uDg/suHRjmVcFqQ3t7Snt4w8gzoIjX4HEdtydTeg8JTl/ZtfXic5CsgbWxcpa706A==; 5:nDx+yRFHXUlpyk7jb89rHmF+0WFAkOBnO5ZW1aY6guPvfozzJkm1VWXUNfmpjaaZVFaLlGJoR47CSUCwJzbyLNrXCnFGjNsMw/TguosxJJWb3hsXp5RYWKQbLizhcP4gpZVIIj7rZ1cOqD3kvBiE/jyJI+3GkHuMMATMHknyEKg=; 24:lppfp5XAOyW1Ea0jC0lLruqxlJgQAZb7Q+tVrZsVnT4AZGxPhlE6JtjWdwgX6XEBct+IS122dl+5WM3x88XL+vSyfeduT23U7NfQfvvdaLs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 7:LA1hWb5U34NSbT0AvIrWgaqLjbQnnL7EW6AA28zztXDGxziFD/fPr0db1P7ThXnV60F7OD2KrlIpe8/w2I/c5xfETvf7pFl8YRD91ZscU8L6TrgEzlCbhu07H0ZvW3Lfi2ybHpUIYOfka+fIoV3ywrrR1swBW6qiN6pbcSJz1ROapxrXKf6JZJAmRmW3s1jbA41XqXzw+tp0tZEMhOePnSg90cAjxrJRoE5qQzKZX58OSNUjtn0zEQqUtKtJ9stI X-MS-Office365-Filtering-Correlation-Id: 1bd7b39b-3b1f-4b15-0c0a-08d5acd1da0f X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:32:44.7323 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1bd7b39b-3b1f-4b15-0c0a-08d5acd1da0f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4210 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function if_cfg_callback to lio_core.c and renamed it to lio_if_cfg_callback. Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 32 ++++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 35 +--------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 34 +-------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 4 +++ 4 files changed, 38 insertions(+), 67 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 2a94eee..66fc375 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -29,6 +29,38 @@ /* OOM task polling interval */ #define LIO_OOM_POLL_INTERVAL_MS 250 +/** + * \brief Callback for getting interface configuration + * @param status status of request + * @param buf pointer to resp structure + */ +void lio_if_cfg_callback(struct octeon_device *oct, + u32 status __attribute__((unused)), void *buf) +{ + struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; + struct liquidio_if_cfg_context *ctx; + struct liquidio_if_cfg_resp *resp; + + resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; + ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; + + oct = lio_get_device(ctx->octeon_id); + if (resp->status) + dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n", + CVM_CAST64(resp->status)); + WRITE_ONCE(ctx->cond, 1); + + snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", + resp->cfg_info.liquidio_firmware_version); + + /* This barrier is required to be sure that the response has been + * written fully before waking up the handler + */ + wmb(); + + wake_up_interruptible(&ctx->wc); +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index f3891ae..e78b3d8 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -1942,39 +1942,6 @@ static int load_firmware(struct octeon_device *oct) } /** - * \brief Callback for getting interface configuration - * @param status status of request - * @param buf pointer to resp structure - */ -static void if_cfg_callback(struct octeon_device *oct, - u32 status __attribute__((unused)), - void *buf) -{ - struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; - struct liquidio_if_cfg_resp *resp; - struct liquidio_if_cfg_context *ctx; - - resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; - ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; - - oct = lio_get_device(ctx->octeon_id); - if (resp->status) - dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: 0x%llx (0x%08x)\n", - CVM_CAST64(resp->status), status); - WRITE_ONCE(ctx->cond, 1); - - snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", - resp->cfg_info.liquidio_firmware_version); - - /* This barrier is required to be sure that the response has been - * written fully before waking up the handler - */ - wmb(); - - wake_up_interruptible(&ctx->wc); -} - -/** * \brief Poll routine for checking transmit queue status * @param work work_struct data structure */ @@ -3556,7 +3523,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) OPCODE_NIC_IF_CFG, 0, if_cfg.u64, 0); - sc->callback = if_cfg_callback; + sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; sc->wait_time = 3000; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index f92dfa4..83d8bf6 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -1059,38 +1059,6 @@ static void free_netsgbuf_with_resp(void *buf) } /** - * \brief Callback for getting interface configuration - * @param status status of request - * @param buf pointer to resp structure - */ -static void if_cfg_callback(struct octeon_device *oct, - u32 status __attribute__((unused)), void *buf) -{ - struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; - struct liquidio_if_cfg_context *ctx; - struct liquidio_if_cfg_resp *resp; - - resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; - ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; - - oct = lio_get_device(ctx->octeon_id); - if (resp->status) - dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n", - CVM_CAST64(resp->status)); - WRITE_ONCE(ctx->cond, 1); - - snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", - resp->cfg_info.liquidio_firmware_version); - - /* This barrier is required to be sure that the response has been - * written fully before waking up the handler - */ - wmb(); - - wake_up_interruptible(&ctx->wc); -} - -/** * \brief Net device open for LiquidIO * @param netdev network device */ @@ -2156,7 +2124,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) OPCODE_NIC_IF_CFG, 0, if_cfg.u64, 0); - sc->callback = if_cfg_callback; + sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; sc->wait_time = 5000; diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 4069710..ad5195c 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -197,6 +197,10 @@ int lio_wait_for_clean_oq(struct octeon_device *oct); */ void liquidio_set_ethtool_ops(struct net_device *netdev); +void lio_if_cfg_callback(struct octeon_device *oct, + u32 status __attribute__((unused)), + void *buf); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Sat Apr 28 06:32:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906048 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="jpdNoB3m"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1Fm5X4Pz9s06 for ; Sat, 28 Apr 2018 16:33:00 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933419AbeD1Gcz (ORCPT ); Sat, 28 Apr 2018 02:32:55 -0400 Received: from mail-dm3nam03on0041.outbound.protection.outlook.com ([104.47.41.41]:23924 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932841AbeD1Gcv (ORCPT ); Sat, 28 Apr 2018 02:32:51 -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; bh=gqq+r6wwVeJMfqueHkjO+A5EHbA/tIv//gMEeEWU//I=; b=jpdNoB3mEMBN/VmRIK53psQOOZp6nIwYHZHNnJ6ZTcJbm08Xw3pd/mOmEvAHm8zCFNR5qNr8+RA1BVRMyRnVSWmbdOjUsDaTloWEKogN6/vuxH1u52K8nmc1H+rjSsYpstzNPb+nHwvGD6a6NPo/WGJR/dnCihvTC2r8AMk+MD8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BYAPR07MB4215.namprd07.prod.outlook.com (2603:10b6:a02:be::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Sat, 28 Apr 2018 06:32:48 +0000 Date: Fri, 27 Apr 2018 23:32:45 -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 V2 net-next 2/6] liquidio: Moved common function list_delete_head to octeon_network.h Message-ID: <20180428063245.GA3258@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR02CA0015.namprd02.prod.outlook.com (2603:10b6:a02:ee::28) To BYAPR07MB4215.namprd07.prod.outlook.com (2603:10b6:a02:be::17) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4215; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 3:+cP4Xa8lqqD3Lfjhl7k0wApKFRoiW58a2EPBQ7khtFzF7z71RvpnTbx/2QuHM5c0VyeqSroazWhKcI0iSYHhxy1ugsYAfyzOgZ6uavyiPhJ6e34WdTJe8AIBAS7KQpp+2PvvrPPXALqXFcX35GkHnsN4sFOnG8Vy8IW9Eby0BFOW3G9VLrYqbrC5/LAi9gIg7BVuYMiONb/4UwMmLtt76B5g5iZTdRJSmmza1q3qwghGGNjzSWfkVY4ePzUGKvTS; 25:A/7ylKhTXEh9bKM6/TWUP+y7XPY5jxngoaaUX7ZbtnmKlaK0piKyVnvgAGSvxxzAAix7vd9YWUktiQXOfA2M9kryRqtfcao7tWOMW0j6RUiDalwjJllJBPSdEB4gKnSP2zp+nj7nWCXqwkD3Wl06saelHd68AnobZRn1BpVmNNQFT88sIxMkT+d+sYP/DCOZQfLgf73jJmKjeApg5Yl5Aq7tiOKthQzLVIgeUwy+5GB20FIKOymTdG9gK/OR8kBYnF19MOqjKcVOlDZVNgQXB0zGxoxFlP01dnXsG41pWLq6xC8HNVgDfO2/k9wQV3K5DG+Nfm0+OWnAUnx5rmz49Q==; 31:KAfhfrX/HYv6997xswI4wQVn1w7ahDnD7lUWaoUZL7Y+pawko5FAXhiu5hnf/97bZ7Ksvt0MPx/Iy2RU6wr4dSCr+8k3xpvhoICrDJyBfTRGbo90Z/k/A7NKwv6guUBEH1Y17jA7GgugTHc+V9jBkNI5JSt3VkwBp7Q7erPH+/cddGeiDfS/ZbY8Wu1/fV+ZYG60LAWctbYDDwWxmRpn6mVNWv91yoeiZwo683u4/8U= X-MS-TrafficTypeDiagnostic: BYAPR07MB4215: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 20:UZyaiDkSzHwS+Og/Fo6FIEWDuJFGgu3zwpOmDOfpC8ibOaZeLvHzZ3nCvBXqo4zBU1THflZfNUMJMzo3Op5w9Pr8DwXkWTmNDQAll+b/N84ohamdcnE2m9brE5JIR/YTXLQQ/QDrXKhtKxaagE2sen6fbJZ/+Jmw2ylmcIQPP+m0UYjL3N5T3qqBKdeJ6GcEHNp/dgK0t7osMA87XSuFN8igh7KY5cqm3JnvTorSbFzqEFPORzUVftTbmpZTuWryfTKMhu9WPr11E3wMRSL9kG0bTRLbjNN07pFT1iusyFLPNqK1uqDRcTtZfCeY0VPhbk40pj6JR+I7y9s6guhR0ke5h26bqQjILy8i3AdZvoar9GkZWoZENicnH4sbIbc2rGRq/yA7XoNbCBmVfpWSA1ipo1tPCNLJZlfcMKsABXEm10EfCZruW/xtLxX5e9H194NOfs9cqkWvKrjW1Xb3YFpQs0Yk+JMrli1B+HSgmdDCjXCdYY5vPjOypu4fSZEY; 4:O4GAAM8b5K9bhqJ6hhvNhA7BGc0q6TdPJ8vKZcd/2lsYedRQ9MKCx3A8yGVC0T5cyHuiirKHoAglAJ3ZZp0zA+2O1B23yxqG3+jK9geQCdJUolZ+IfCekqFDhg4p4pgH3b3xHmklFVBOQlxHGIZWuhEqAz59jbqbVBOIzFR9Oj4iLHbuiTRk0cyIgYrh1KMLM8H+Gpw0Zkes4n/N1phXMHCben+meFxDBhdIl5vvgEW4XtjxB3dmYSxgTUKlE9tpFjJAdrxjSsVcMCHtnzekOA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231254)(944501410)(52105095)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:BYAPR07MB4215; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4215; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39860400002)(376002)(396003)(346002)(39380400002)(366004)(189003)(199004)(50466002)(8936002)(476003)(52116002)(7736002)(5660300001)(106356001)(44832011)(6916009)(25786009)(8676002)(16586007)(305945005)(47776003)(4326008)(2906002)(76506005)(486006)(97736004)(446003)(956004)(53936002)(16526019)(59450400001)(11346002)(107886003)(3846002)(316002)(2361001)(72206003)(1076002)(386003)(26005)(6486002)(66066001)(86362001)(81166006)(33656002)(478600001)(186003)(2351001)(6496006)(23726003)(68736007)(76176011)(105586002)(81156014)(6666003)(6116002)(58126008)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4215; 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; BYAPR07MB4215; 23:Qc/cVyPO9PmsBGSrcC1bCYnSqqvI6+Td0BGkT3zP7zpism6LXNv2boF4EnT86TrsCqNXsgyblszJpFzoCqwvCb+KaJtDIZjAdSiDWZzxNjyc2yQ+WiOaEIXWz2MPDDSbCV81QVYepKGupCQrbnOpzP4MYj963/Cg9W+CDaOFCTzjXPTjO9tn0JDz+UUQbrFPLk0V/mXrEVOn74g23HZLkTIjCqbxgUQtkQI0SDGmhGHkCOsi9ioL2NsA7QJSq9Qj0gWBBAu+74I7MwJmUK2XEklH6r8FnNynxKW6kynRVl9b1aExLhAV2ULr96pwhLpbH2g/iIyOFAimjNeKgJ2k6oUEFIRhl5jlLBdCyPxkOFt0PMsuzWJ5OWxcqfcJkFPeI/W8zd4gDe58WQqjgP2Gq6RZjdjg6F5/IAaRAE9VfuLtFCGEn2kU3xfvxXvTy51FZpF4luBIjXqx8zj9/EboN0mtDmGrO+lsHFggcdD2mcQ1qHupsvzCVRJ83jyj7EpnH+hnj5klBtdlVwnnYIC3aF5OuZOeh5Cb5+Po0iCfP+CAdO/6MfGfTh7ebZ99mEG50VzlsOcVSXW5k5m5lsNHWoE5FyCcqz3icwKbDSlzw1/SwG4JA6aYsUhS/VoKK6QTfsD4FvgVsKtBb/5/n5OJdW/T0Vmc3LaaaUfqujSwBMTiC6M6UMeqJCEB2aFg+Cg6+zI+ml2sJemf6PKqEtUyqMlNrriwxIO4lIR7rPzOmardYb3XiOcM73yGh805XMvC0ksWfNOQlX7m7YC5L69Xz66hRa4WLErea/04u8/dhdgJ9pVXsYGW3y7ErtqslPTBBTPSlZnYkYeLoUNo4vcWAqb26JXP9uJm97cHesKoid8e/QLoSCsI1509SY5RWapwxzs8Bd0gG2eX/EKwnOgkOJ48AVTXwj1hh9RPPqXQ7W1kErsvvz70tx4HI3qYvZOYu+iLxmxWx5A332ypj5lEtadLg81wNKjEO9tclofvWxNb6NymdxCGdkBHomC5+NIaA6rZt14enwBllZL4o0Jf16Ip0Flm9JfUBLPlVcQMy6WUsP1Ccwq07raL4mgJ/SWnDYLTm0gLQ6LoWl63Jgfo++JRKX2Fj3kTHfGVY8YejRbCcE13U04yfRyn6jC7GVsParyE+qwpYNEncTyG6FxoQD0krFjDCJgLPq/f7J54+YFejtWpMiEft6FrcEeLMaDsIXSoix0Y3e7XUOmHOSDzsauNEocJWOpQAJb1akzMzEQzLTi6kzfmx5cTZ2doOv6vihcURwD2c3UBxy6OZ9iCox0R3B90GHLDyC6ejCyqB7uWJMqBzaNHbIvSJlFDw+oH X-Microsoft-Antispam-Message-Info: gEwixASYLT0enJVLsHiBU6P4GJjix8qsRjDRVKiug7izZnn/vGbSbVVXgDfZI5XNvrDWSvqQxh4dqG+4JuzFSlMoPYvz4KURreAGGVWuATqJzEUNGsgNR/hYKffP4+Dg8elPQ/g3m3S16BqJaxeQNlvPXs5Pu3Zhu0cTcIx9C6kL5KHhdnYN430YAbtD/Wqv X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 6:jaEYXxDl2A18OtP2/qbNlNqRaGBoEIkuUf0nNVusw2MMxhJb185RGvbVHiHD1HLIM58E/0r0VOh0MvbRnnBePB9Y8hvPS7c6BKyaChWqxtco5MZ61UNerqQYHTFN9Il4yppSdqmpjr1SQFDvZ5orawJZ8Y+oUzRhJJRJd+/yyDJDvAKHRbIMTJj4WS1AhazLhc46e6Ie7Ix/eDCM6djrAYxLBtR7HFHm7Hpk6emliq4pt7RD2kwa0vNp+Po5SKU3R7odPx/IIHoOTvFaBwFpPqgLV6Id0QymkWL8yJEw7dYT7H68eBXgG4PsNyAG/aww7mXeKbPrtIyh/lc29QwVOmo+e/GlMiloRy6G+4H15g+bP/CYMae5ZkhABtxPfss9GRxwBaYfd2Cm8m2W1tkMWxU8UFc7Nuc+ch86h35lyJzCklCXKF6WSOa+Je7LLB2kIqDQqA3tdsWVoxj4OQwnzw==; 5:8gX4lpFUydr+iJ0ExGabG5ntipea+KM26FeATLk1JEZKrL/MUgeSgGRw+walQuqxfeQ8jQ8PqU0tlKExiuGMuPLvB+X8jtWV0S5APokHXEnHF/qhkgCuxTwGz3pHfU0szLomNTlqAMTyKT98lGR6DBuJY3oerkjh2plveBLyfQM=; 24:hjhif/vj2vO5LJ7R1tMLuIm9MhTl7YXpfuIAa9MGD3PO4LQ7OL2J7HMA67kTVZwjn0XONGniFTatcCx7r6XWRnJt/A9yxUzArtPFucMU2bg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 7:MeCJbFAuHrRxGx8c3V1+r/yRSSwSdzEukZ0njXrp4gYjAsL/oKuNxKrVBrsujkQOIpRHjqCvqlZa32iI/rMe7v56DXXf4iMjSLwKI9XzQhAkdIlNrCUU1VvGtaO9KiTtDlaVgo2lRJxtazUSUXnC7uo+l5/ogB238aLWAuf5OE5P+xspc4/mWguXOKlbvrAM6z26aiVpSrWc6fIEIWANgCC+XF5013QxK+Ha6UBV4h0B//wTnXBCYwklv+6tBIyp X-MS-Office365-Filtering-Correlation-Id: a7d06572-b081-45ec-cbec-08d5acd1dc3b X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:32:48.5216 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7d06572-b081-45ec-cbec-08d5acd1dc3b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4215 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function list_delete_head to octeon_network.h and renamed it to lio_list_delete_head Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_main.c | 23 ++------------------ drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 25 +++------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 19 ++++++++++++++++ 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index e78b3d8..8b3ab98 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -542,25 +542,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * Remove the node at the head of the list. The list would be empty at - * the end of this call if there are no more nodes in the list. - */ -static inline struct list_head *list_delete_head(struct list_head *root) -{ - struct list_head *node; - - if ((root->prev == root) && (root->next == root)) - node = NULL; - else - node = root->next; - - if (node) - list_del(node); - - return node; -} - -/** * \brief Delete gather lists * @param lio per-network private data */ @@ -578,7 +559,7 @@ static void delete_glists(struct lio *lio) for (i = 0; i < lio->linfo.num_txpciq; i++) { do { g = (struct octnic_gather *) - list_delete_head(&lio->glist[i]); + lio_list_delete_head(&lio->glist[i]); if (g) kfree(g); } while (g); @@ -2570,7 +2551,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) spin_lock(&lio->glist_lock[q_idx]); g = (struct octnic_gather *) - list_delete_head(&lio->glist[q_idx]); + lio_list_delete_head(&lio->glist[q_idx]); spin_unlock(&lio->glist_lock[q_idx]); if (!g) { diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 83d8bf6..7725b3f 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -285,25 +285,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * Remove the node at the head of the list. The list would be empty at - * the end of this call if there are no more nodes in the list. - */ -static struct list_head *list_delete_head(struct list_head *root) -{ - struct list_head *node; - - if ((root->prev == root) && (root->next == root)) - node = NULL; - else - node = root->next; - - if (node) - list_del(node); - - return node; -} - -/** * \brief Delete gather lists * @param lio per-network private data */ @@ -321,7 +302,7 @@ static void delete_glists(struct lio *lio) for (i = 0; i < lio->linfo.num_txpciq; i++) { do { g = (struct octnic_gather *) - list_delete_head(&lio->glist[i]); + lio_list_delete_head(&lio->glist[i]); kfree(g); } while (g); @@ -1629,8 +1610,8 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) int i, frags; spin_lock(&lio->glist_lock[q_idx]); - g = (struct octnic_gather *)list_delete_head( - &lio->glist[q_idx]); + g = (struct octnic_gather *) + lio_list_delete_head(&lio->glist[q_idx]); spin_unlock(&lio->glist_lock[q_idx]); if (!g) { diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index ad5195c..3cb3d72 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -563,4 +563,23 @@ static inline int skb_iq(struct lio *lio, struct sk_buff *skb) return skb->queue_mapping % lio->linfo.num_txpciq; } +/** + * Remove the node at the head of the list. The list would be empty at + * the end of this call if there are no more nodes in the list. + */ +static inline struct list_head *lio_list_delete_head(struct list_head *root) +{ + struct list_head *node; + + if (root->prev == root && root->next == root) + node = NULL; + else + node = root->next; + + if (node) + list_del(node); + + return node; +} + #endif From patchwork Sat Apr 28 06:32:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906049 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="apI/vf9e"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1Fp46JRz9s06 for ; Sat, 28 Apr 2018 16:33:02 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933424AbeD1Gc4 (ORCPT ); Sat, 28 Apr 2018 02:32:56 -0400 Received: from mail-dm3nam03on0041.outbound.protection.outlook.com ([104.47.41.41]:23924 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933409AbeD1Gcw (ORCPT ); Sat, 28 Apr 2018 02:32:52 -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; bh=t/t3ifjQlXQnTAaCMlnGraAsdM0GeU6zjJrXHEH6f4A=; b=apI/vf9ejXYF8PD5Du8aPMEHuBi4ndnOzXTwL+unV/L7FaPcKZlNlVP8aG1hYzqdeCd/qmpIPF6VItst5Yf58ieCJPp7Z2poL4HwbhiEIxZm4Ze/voNw4CVmW/79omOZKDP8RKY6Ap1w5DcI9iFOaMPg8eAT3EEhDI5L98zxL+A= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BYAPR07MB4215.namprd07.prod.outlook.com (2603:10b6:a02:be::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Sat, 28 Apr 2018 06:32:51 +0000 Date: Fri, 27 Apr 2018 23:32:49 -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 V2 net-next 3/6] liquidio: Moved common function delete_glists to lio_core.c Message-ID: <20180428063249.GA3269@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR03CA0024.namprd03.prod.outlook.com (2603:10b6:a02:a8::37) To BYAPR07MB4215.namprd07.prod.outlook.com (2603:10b6:a02:be::17) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4215; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 3:2aeW5TgjRoYC/eIZLInHh3anxV0kXueH7y7iG7MZEEbtmOkd0BJxZv2Fz+whLm1L4ekryqJyRRANFjFMpjLhNMue9uPafJ0rw4/jj/heLvdzkV70t14BWgsXBedNgBo2AM8SFoSw3B1kzRdTP1nICBk6kc31q6HNkuB39/6N0a3y51M10WH5cL/p5OG7KSFAhdWHn25fGMAlL7ZIAf5YB/RntMq82xXsr1SBKM3auv0owx90T+kFDUtayRj3Ayu4; 25:6vY+/vWPYvaMPO9UMILdfzLG3I2cGoMIRuktYyRUU0pwP86Jza925UFny5M550X/RQnQw6Ks8ZqlsY5AR8A1A2ztN8UvWswmJq9FwYSuiVbzHirigbHgUwA15mGpZkQvQ16DKg9EuqVkPkZ7JZjO+tmKgOrLf7EIigVF6OtWkW7LTHpvUCubBSAgx7uKipjzyfiD/UZTrfp1CyE5+vZO7j7VtIm2HxampbcsItc1kd/yFnNBU2RoGP5H3dXlYF3dY9TiXrGHD0evIpPpyoY20cOGJQdFuo7edhH4dZWaLgbbcl5vQDtIRPZU2PX1gWKkE/FG+xYf+/cgajGGG9fKiA==; 31:SkvRKmEWi1Pb/HmZ1suJs6kaEnwrAjEbROjZrjoIjBBdt8BbXqfoS6ylIQxe0tIqr0WW3uvTGQNHsnG6u4oO1+l2PyIDKH9pnjIc7ybmfgbHzNarKZFTCy2o+aHefj7r9k0R0Bg5M3c7hQnq3XRP6A2joVOZlrTyrT/GIWW9kE3OaeVX9nyW1E8a1dEB4/wOaVls8x1+CCJlX9szqZRITPw5Zt/KDyeF8ptrBGJFUik= X-MS-TrafficTypeDiagnostic: BYAPR07MB4215: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 20:OBaXMT+qu3xIrbJbK4XUmZyKmQD5vBMzdinEbOG24UZS+FQNhV7e2cCwuHR3JWz/ZzYewY9uaAiJTB3x7+yFxE3onVNG3cX1dVwyDMzVdgC81a+7xhAFAiLKAi5sts0xQ55ugILSsLilSYac1uvENxMGeVGEK+jsCKgGnrmnfRbdJtg+xZD4wV6DLQszECm9DAUhqSlxDvMth3Bn+Xu6K4XSH2sBKy5QsucHKGEZWnPDNZKy8D5dskKGszQaIsjUp42fHmkIH+q3UCeyikh+AmCdwmkltGv2OizPtNpQdJawZIngdFpgRpA8buXoj5Lm9ooQzAAQ1hg3mYVJCKCECFiLT5pWSbHE2z5+6CHx458Kstob+ETYyGRfbEwLujlLhpgtXTyLGBdppFzXQKcS2MO4TETsawnrnlZ6GTcx0g2maY3HtSiq13xb50vQJZtDUDXs3g56PQUwbM+acNfJnW7c/AArFvylH10qxmPObI88nkfmGhsiR3e3kCtuVZ3G; 4:l4STIwBi+d0BzLvWLIZObtCbzWm1NeCSPj5N/VkFn6rkzADM8Qdzd5wLHyie8+YGODwmW/RAbXeO3JSpY/RmV8HQM+AYPdY8fSPY1HNEw5xHillrEcr/RqqHaEZiNrBKFwbz3X7FqxLgmdd3RzsySQ+VFI9B5l+mxVI/JK5yHvfqjhZiByqortL2KyvEpIennfOpcGFr+s5aSjE0e3Ofe25oA9sEpLCUX4r4xSFp6d5ZQxmlcglLLfCNuN6fwhwGiEAF8q+D6DtU3dzTMwzazQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231254)(944501410)(52105095)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:BYAPR07MB4215; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4215; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39860400002)(376002)(396003)(346002)(39380400002)(366004)(189003)(199004)(50466002)(8936002)(476003)(52116002)(7736002)(5660300001)(106356001)(44832011)(6916009)(25786009)(8676002)(16586007)(305945005)(47776003)(4326008)(2906002)(76506005)(486006)(97736004)(446003)(956004)(53936002)(16526019)(59450400001)(11346002)(107886003)(3846002)(316002)(2361001)(72206003)(1076002)(386003)(26005)(6486002)(66066001)(86362001)(81166006)(33656002)(478600001)(186003)(2351001)(6496006)(23726003)(68736007)(76176011)(105586002)(81156014)(6116002)(58126008)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4215; 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; BYAPR07MB4215; 23:Tp8yKF+F/XKX3C3G7bifA5wlA+ajcYJFkTzqxm8SOk7OUViQAOj3+fsSBcgTvWa5oEAlBkbrTqgdUibMGMJdQq8pRFE5+4w/6W+L7UPK0lPwEVopUfsNY85IY7DEudrKaV2itBKZMRxJSxP2wzaUlgru+C33ziSkzIkbgI+p5Pf7l7C74vQ/dXivF0rFDNueU9RJseydcBz4gPgD2nLlEbMAMZygMXpRlrxmjmAzXNmwHAgiess/X18e6tMrPbhLz0x2ATYcsv0SqLJkl5V4RzOIZmmkHV2Wox+aAcKe3tq/VJkYhjyafZH25Vzhq3C5Izt01E1dYrBAhFeScY0qWgosRmNOYN+8mostB9Hovm1gmACYDVzll0dhGZSDzcXGwMg+37eWjJJkrbPFnkhcOxFnRTZK/z7g8Pd+EdiGpYeeewv770oR8115QNWO3+C6Uv5msLDSA0ZSeaPxRK6P+YM0t6TwesgGAtf0i+KKn/7mpRYJrb33+p6SetlCSe/n9SEmKE+oB/AyUL+PXrydvPjPA2hR0ZkLPiHbSetMp8LfWjboRzfOnnRmIjemt92h647JqTkh3c+93lPEWQCXi6U2F/3hdLW5zxEPC283irE1L9xX0pfgUjFvkpT+mwO8/8ADCnxsWddntktrNUwGu1JKjaMM9WFnKasZ3MUqYBK8jfBojYJnPWBzmGDfxgQ8q6k8DGLBNLIy/sWy5QHxnUhIGH4+mbsrTXyRQDQYRhi09r2hOk24GeXKG93MWGOcBdb+sNdPc3czDpi/I6aAK6sAkKeEEjagf7jirUTi/FZRWc5fo9BxMf5XEOPBjt1T1W/ulOoQR9Oqo+robTz1z0LXQFEoLPyLzzGBITF5cMNdYlPsiBqVPYtHPVtQQTXWQjigUSGDT9VVJJ2EKoJC1LwElGPhlrFw5puahVPKNkkDkPrLKVaqgeT9FqYFiaB6ExXPj7x3vYVq1nWfWqg7qYgtt4RHh/9gWisOOuhoqzFybMXCW94HAAF1MRr3SiIcEeDz/BO13MZAszfWSZsZJFocqxl+yl217mnxri1wwmqaviOawDmN9FOdEakKn5DaYdu/0RAGrFJ3CjVlZNeGEDa65U5ECKbb4vIN29CIlOXj5lgnFJBfXSnngluZ/zwuHHWvudIdrzR/oU5AcDscmbMdUOM8rP4REMfp+68+/rgDMX/quHlvH9YbFqWRNnT50OBc0qhTA6+X+StEukb9YLzGkDW16zk+6pBZAuly1vur6geV0NafnCAvfRwcQYzfDOwQE01h5Z8iHB7AOhti6INEeBRTXy84K4/Kp4d3DSk= X-Microsoft-Antispam-Message-Info: cK2/SQrjhbxA6QDVx085wMt2Xm3q0gFdFIY4R1fJhVE+SZVxnn0UM4cDQ7yLehxeMOkiu1/rLeqWjq9iGLmFmwKw/3LqYvLTjFQjRj7PrQZLdCaNfPW75nAs7H72ghk+Kp6VNLqJAv/i2oV5QlE6r+g/Q9sgFuGzGAgw9Vco1P2wcDCyCwhy4r/FgrV8DQV+ X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 6:wDMDkdxtzkCrXLm/ALScCAtNq7s8L7oh7avp29eHPDdr6O0FOnGrJz5TW7ebgYuNYRccIMX/CZr+apS3XRebhcVa60eT/kLHJDb965WpOPnTa/wTwuvy8KFiDPGm15VdF0JKdg4OfE5GW/Wp1MjeiiKrWDOV9eim3X6aksb90GgOpKvcROEg2EZyDf1rt5LAnRhIigQuR3tIUoCqQYeS2u+uPxyrIdvBv3D1nZQC1Et4j8IoeWtZko/vC6QxJRrsLH+7A+ZtR4rGHKYSbA8SZrgP0P74LAm3okZa9b4hlXN6Jh6ulCDIK6uOAp9tr99H4jltjvJPsvvBvUt3sxT8yIC3cv9/borKLZU8e5VIKIc5znnDT5OJa9LxaUajlTbXn8erXdYb4H7y3KmQr/YMScNN2LlI6qv0AdA5gEKxOp+R4SRXnGcN9C2KNYXM2FRLBw3+2p0aIP86Oc9EE7F0PQ==; 5:A/ekKJZ/rn8HJG7i5nUUzfwxjqOY9fYhrMtAKhXLpk+OBty9KjvNBWHLk+HkC1XDiB6IfTsnzEfsZmO9kQKeFNbpJNBEJAt6B6UUFA/pLxCzD5VQFgUzhZFg7WEaAL3TCHjJJ15cmGCsGnAGEf9FdYRqSCfTuijgqoAmv8vnZyM=; 24:R+BF+gNpQKJksuzcMfYgq6fri8zv9SL96UzFgzNttQYkRjqDNNm04QD2sNFtSDy5HdUB1YsoIRcusSbFJY7iingSo0zcdfy7K3rDjiYeEkw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4215; 7:lw21jlXLDWkTs6EXooEHNfsVklsHjaw9n4Wv4jv62gIUfyCeD2URuQdzBzKSaDPmOrm1atGSAer6nb8xgTyGSXsjiFFswpYNJ6utmSun0YdwM1UceqcIJobGuL03H7OXdIqfiZw58qSLisZ4kSeSme2bWMiQOLcssP1ZYaq8ZIf81H7TNOLcx2WZqyhMvRvDnmspaTvCHQ8UidVfHIzHgKKD4O80nF7+0IuWuUVEAWEJM8JqMwl+n+KiZwBYkj5u X-MS-Office365-Filtering-Correlation-Id: ebe0bdca-8ea1-479b-93ad-08d5acd1ddc7 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:32:51.1154 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ebe0bdca-8ea1-479b-93ad-08d5acd1ddc7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4215 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function delete_glists to lio_core.c and renamed it to lio_delete_glists Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 41 ++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 50 ++-------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 49 ++------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 2 + 4 files changed, 51 insertions(+), 91 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 66fc375..76aee81 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -61,6 +61,47 @@ void lio_if_cfg_callback(struct octeon_device *oct, wake_up_interruptible(&ctx->wc); } +/** + * \brief Delete gather lists + * @param lio per-network private data + */ +void lio_delete_glists(struct lio *lio) +{ + struct octnic_gather *g; + int i; + + kfree(lio->glist_lock); + lio->glist_lock = NULL; + + if (!lio->glist) + return; + + for (i = 0; i < lio->linfo.num_txpciq; i++) { + do { + g = (struct octnic_gather *) + lio_list_delete_head(&lio->glist[i]); + kfree(g); + } while (g); + + if (lio->glists_virt_base && lio->glists_virt_base[i] && + lio->glists_dma_base && lio->glists_dma_base[i]) { + lio_dma_free(lio->oct_dev, + lio->glist_entry_size * lio->tx_qsize, + lio->glists_virt_base[i], + lio->glists_dma_base[i]); + } + } + + kfree(lio->glists_virt_base); + lio->glists_virt_base = NULL; + + kfree(lio->glists_dma_base); + lio->glists_dma_base = NULL; + + kfree(lio->glist); + lio->glist = NULL; +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index 8b3ab98..afe22b2 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -542,48 +542,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - if (g) - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -617,7 +575,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -634,7 +592,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -656,7 +614,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -1452,7 +1410,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_rx_oom_poll_fn(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 7725b3f..dac2d29 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -285,47 +285,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -359,7 +318,7 @@ static int setup_glists(struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -374,7 +333,7 @@ static int setup_glists(struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -393,7 +352,7 @@ static int setup_glists(struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -837,7 +796,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_link_status_change_wq(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 3cb3d72..60db303 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -201,6 +201,8 @@ void lio_if_cfg_callback(struct octeon_device *oct, u32 status __attribute__((unused)), void *buf); +void lio_delete_glists(struct lio *lio); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Sat Apr 28 06:32:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906050 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="RWNMzUfP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1Fv3gBkz9s06 for ; Sat, 28 Apr 2018 16:33:07 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933431AbeD1GdA (ORCPT ); Sat, 28 Apr 2018 02:33:00 -0400 Received: from mail-cys01nam02on0062.outbound.protection.outlook.com ([104.47.37.62]:48127 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932841AbeD1Gc4 (ORCPT ); Sat, 28 Apr 2018 02:32:56 -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; bh=AzNavNa+OB94rEVcB7xBAmIL+uugVk60KEOLSmeY9fM=; b=RWNMzUfP6f08Owk4LDNfVQsQCPFTI/Cpawv0zM8Vez1ZcKdWMO6rZ/2jBsplvRJ/UWNvyoNqggGCKVCa3IzVFRdv45KyV/K+sm08G2zC+0sIqMqMUFg/rmjHH/vILN/0pggV6/H8pIqwxhIeKGrihF/B5QDeUAoEj+EYaXWqfvY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN7PR07MB4210.namprd07.prod.outlook.com (2603:10b6:406:b2::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.18; Sat, 28 Apr 2018 06:32:54 +0000 Date: Fri, 27 Apr 2018 23:32:51 -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 V2 net-next 4/6] liquidio: Moved common definition octnic_gather to octeon_network.h Message-ID: <20180428063251.GA3280@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0109.namprd15.prod.outlook.com (2603:10b6:101:21::29) To BN7PR07MB4210.namprd07.prod.outlook.com (2603:10b6:406:b2::12) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN7PR07MB4210; X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 3:cIpvgo4E1Q2XBuamJBi8H9hgnJnkq6Xn43FCnJoPxnLwac76BxB+AyLOrUF6W5UV/IshRmI/G8yJiNPb3od37vfldhN72iIN03/34iPDl6XkmJVTGq7MCa5orpt0G5hdKCL+HJw5haL9M2ssG/yqbQs8cIgL0cmCj+qx5XJNxYuHqyAlbRdFuMInVeUganLe4l69h5uC6YWH/+Kdm+4l2OlK1prnvu6jTxmXiPK8v4T1QsSSzIJwlZ18vQlR+uET; 25:tlpHJlifnVlmTMyvMpnJZOyLBu3OuNQ79w9raj16Vhdmn6I/9lfqekrencLfVpUOAocqRVM8WRljc6SDNeYvUU35PybCE5nJtB17Ss9ufw7Zcg+YzH1RpSwe0E4FIGNKsW/7r7gwydsFFMqfQiKqlQRmSCh+UmGgXKHaDx4+Ri+qJR7mjfv18NXXRERqI/ZyQrpD1d/2td/N3/PeO+ikk5Mc2D4EoGzc+59vkv5OsybVQRQnaqdRj2qeulNaaJO8eHkYNeekTOIxZqnfTKgK1DOgND8GrvtFzhaknvcHb4yR/c/rQc8G++/Zh4bFavg96nct81y7+fyS9wvMWEvMVA==; 31:Xf+83kip3tPX+CZWFWpEN+vgguHWlPHhlumV8CMzGLfoXeqASpUz8vv/Alp7xJUr+8hpi+g1fGThEcvLKUK2qXxDWMIFCI/l02BO085+PGPTzOX/FcgnomRlA+GJzpDPl2PpwG89dvcQBdBqRMVIr3my69o15urKI37zO6mEk0dQ4PA7+GTNxHtmm/Lx7XeQCSFdBFSan9Fmou5eJ3F9QidGrc9iZJUamTYEdMffuNE= X-MS-TrafficTypeDiagnostic: BN7PR07MB4210: X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 20:koQAtkttYAEXz3IK7gMaiqDU31Eso7LHjDTGy5ueNV4VebtBjYCzu59q1upMdARFLYoRp89QcQLQ2re9hwymGhCkIOnjIS2bXvi/7I3tEZMYrx9JiZqYHABnr9wIvECjlkMlIyeGo7AxaqPcgT42KGaXTDe8J7tC54K8QXwVfbqkhmLqoqnd2SqSSI/gbgBdhkoUORCpBwKykq9bOUPu+zsQA2/u5DZ8hJNlVH/zfL1yI9q/9saHAJnGbLqx5I5k8RUJj9vjP/z0Ct1agbZMdPl1lzxDthhCk022fdPpwEhZiA4paky+zr9gboiIdgdoj2LaMDjeoy/ecSnVTWtvlc7wz/tU6I7ilw6PH6itVq3zFTQ/upce+VPZLXJy3A0mFbCRs6AKYm/TNeelvzvRQXGYpjciqDPm00rFVlvXvU5oTXOTXMNVqnaDHSRwzqodOu3V7Du3LS2O9KPxkw1AGDciXzm1oamJAjVwpcRkapEoqC5wUfsA2vSCS9a3HVV2; 4:ZRJ31zx9qFxUCCgjQclJJznwWnRnxtrN4ENrlKIkrgsgRkU0QlovpFAuYBLbjAajdepDiUVuC6Wb1M+ljvCVtnUk5hTjnIwaHam7xu8hHHqVKzJ/2GpS7rIiCkH03Nw9mtXNJatGkc6mIS+5Gvq4IKIsDXIk7r+XqUEZtC21iLgSk2Dg+QF5t9MvCoczOq+Ejt7/LJxSjABIwZG1Zp41DjZyRTbXztD0LnjuVp/wP0hMT1jo2Q5CzrxKt3joARyOFl+nRM/PZvZrFCqua/tnIw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:BN7PR07MB4210; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4210; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(396003)(346002)(376002)(39380400002)(39860400002)(366004)(189003)(199004)(575784001)(97736004)(68736007)(33656002)(2906002)(2361001)(6486002)(16586007)(316002)(6916009)(107886003)(6666003)(86362001)(50466002)(2351001)(58126008)(105586002)(5660300001)(8676002)(106356001)(186003)(81156014)(53936002)(16526019)(81166006)(1076002)(76176011)(6496006)(25786009)(386003)(26005)(6116002)(76506005)(8936002)(52116002)(72206003)(305945005)(66066001)(478600001)(47776003)(476003)(7736002)(956004)(3846002)(486006)(446003)(11346002)(23726003)(44832011)(4326008)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4210; 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; BN7PR07MB4210; 23:AMrjbiIegB87LetMOO1P6aBZjR7XtXBD1ncA48sqis6VevuWYMV7qMbfvH7fDFvdXsfEjf7WJjeQi33YJqdXG7iQHYZUn4eMZ1DLpcTzARxQ/xb5zjzW1UyXNl1rZq/YQrUAD6yMO74BH7g9SuI1Ysnk6ci3TC0YS5Y2wv66Nq56OA1M+J64WgC8m2Ea0vMEhdm9T74YXtT5DN7+kZw+k3ezcyH+JRJd2SGsqx7ad/S5gCCo7PJ0jpIyco6aRmkhIeXfXsQtvnr0Tf3DpPJMsH+JeeyZ/kMqpE5LkYef2sGwcVaVzCFiz49KYVfrJxUQMfC50LQ4xVZ5yBiy3OEU+cmIQy9+Po/a1LHbEsJ9xflLH8FAUpqXtgJi9JsKmWWMYNHHmA02ps0akF3VpCFrHfkypr93msS1wn8GFGu3FxMB6Xjoas3eM8uKPkjqIgQdM4evpBBuCqFPT9qaSJaY0VZIZMoE7ovTco3HMhCRvcFse8I4bPRX8dx2aI0qJGhSaVcwasgCMkVSRA3ZX8SyyBouL+ccZPGG6KMEMgSNhtJQ16nHJ2RLJqvhHrA9Am28hUSyG0/mjf840QqdAxJ/UsBzeLToXCupffT/7DnpwMlJMraBPlRwgbxfrVEJwMlCJ5+h32AUxEqeep4nbpPwv/g8/e/1ZyMLYeHnOJL7Ae16LA1GlHL+lYsScilMXwn3sRshX904rOwjqZiIILYzclI+DbjPjBM+eHP/ElZLUXTeAZt9aHy4wvf753ZjA2EiSPqgWp0Fowbmt1HJ5fXSiAQ6j4qZWvtlk51tFJCoPjuvQW193cZiHzHicekON1AnhMjbR7M47Wzt9YqD1JAUwJQ+xVw6/4GJI3AieCOYg/7B6Jk2vqC+9llj2w6zuxoMffe7Zj6yjbmvDMfKvXMS7VfSstcbZg8HmGalypAgO/M1MxylgzZugw7p8SRT3tDNtebyBfuhZ3FaUVRBzDR/CqqbO/5PISlel0VADGYOJF2SbJ7lXZ1vdP/T21P/FJuizt0sGpRo0cHip+YgWbSQpDbtIFaKlMFUXqe7XszdDUxKY2Y7LCj7bAGGS9fvV94mx36wbloe9Xg8CtCbuAp1dW250Tj0/U7v8ate0M8H9W57DcvpBU6NEl0AYKugZzLE/cB6HEZtkoInd8GqxPv7zsuV88eXopROV6T411sCmybfo5KjZ+X9ekvF5dOryAmOZnRruxw9BHTBaf/Um/nJCzQajFrRuNtPzoRYyB3Q6ipRjM23Y1vBXAoz6x/aBOKV6uLuI0YuOiVw6UvR0Up3oexXAnUpl3Nvx6Mogbg8//QEpSnDlEGS9jO7RBxWqpWJ X-Microsoft-Antispam-Message-Info: i665mIXKC7phwC/9Y77ZewyS/os7zje4Ta2bz8BHeQP+yKFeVgt/atIwFeIJSuRe1ysTb0YufSmAm7S4vH5SomGc4nk1iLq1ReK3E7C77cPbNvD4sEY8PsqE18WSWUlaQHeDbW6vdFu4p2IN150+SoCX85/7uRq8Jrniie12oQBHaYPoblHtT8T/xuBuFWlN X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 6:uvkjLMygXwP9S674c2xf4yStMgi7gyMYglS8SxRjCQyZHqyPQC9cfrJAnCkl2JPoeKmEgmExNxj86nq26F0ctNYukCfTvOHTrTf1btpZqkUxLeYIVoiViHurOUY68MAEVIfHGhE2TKfii1qv/J+ZoVS+bUehd8hJkzpczOFlAxVoCoz7BOwu+LG9Z0LdmkHS+wIiAFWH631jRQAeZHEFBy7AGDrIcz22RmAwjNRWWPU7pDF4DxirFzgvpq32QPqHj5hCUq6qKFrjAPWA76+ilTJw48pkcUeH6PgWdu0QcCPBBOA/QIsHFDjcjeqAmV62ZJnfCRFnerQ8ukEBrHzcx+UPV1hkukYyWjBYAuZkNEgot6jVy15p/JfhnyQTP0fPOCPq+05VshPsz3CKgDpsTcXpWvmUetx3V7USkfXsCtYtrfh0RHlWDGgXZ/A4KJFA3c4DMddflrRRYp6DKtFBwA==; 5:ebnqRr4aBX740hi4V2woou8ze53EntPjdaKzQ4OI4CpSu8/2YgZ0KS4/yQMFX0D6y97O2HRvELWrIDJEYzWUXdtpQBXwqkTTlwdZD/1luWJara8EXq9nWjppELlHH/6fJSak+RJvXSAxI2HZVcAh4eYKEaWAslRUFf5mJq3szBU=; 24:iP+dAR7ehuUWMtEjfyzUlC4sW+qYwjvpX2twQyFCzGiPOyOJdMB+HxtsOQHnudnsq4kcF0Zp8vmpiKPB6dikOF3XvD7EAkbTCccQfjIWTVY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4210; 7:XvTnDc1wPUEfzqqhggwL5DWDY6weba0OyFUypvIte7AXNeoquyhK7oQHtyl5Esu/Pjw8HRXGk4ZcgQlqz0gUtwexh62KALcOVOQhhCkT/ntvclZ5NKba62qYBrct5/pJW1AlnJbKPccSzM5wZSrYzCUf4ZDET2rsK++QAXpuhdUR0Eia6VJbeyRE+pOhyE5lbc3jElGzLy5EBcYbIdJ+eDHB+WNFwf3UHKvUpH3cP6Ezh2ifDnlDNPLz/92TIYGN X-MS-Office365-Filtering-Correlation-Id: b7d47ae7-33a6-4a75-04cb-08d5acd1e018 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:32:54.8262 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b7d47ae7-33a6-4a75-04cb-08d5acd1e018 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4210 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moving common definition octnic_gather to octeon_network.h Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_main.c | 21 --------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 18 ------------------ .../net/ethernet/cavium/liquidio/octeon_network.h | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 39 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index afe22b2..c0bd489 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -144,27 +144,6 @@ union tx_info { #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) -/** Structure of a node in list of gather components maintained by - * NIC driver for each network device. - */ -struct octnic_gather { - /** List manipulation. Next and prev pointers. */ - struct list_head list; - - /** Size of the gather component at sg in bytes. */ - int sg_size; - - /** Number of bytes that sg was adjusted to make it 8B-aligned. */ - int adjust; - - /** Gather component that can accommodate max sized fragment list - * received from the IP layer. - */ - struct octeon_sg_entry *sg; - - dma_addr_t sg_dma_ptr; -}; - struct handshake { struct completion init; struct completion started; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index dac2d29..8151d11 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -75,24 +75,6 @@ union tx_info { #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) -struct octnic_gather { - /* List manipulation. Next and prev pointers. */ - struct list_head list; - - /* Size of the gather component at sg in bytes. */ - int sg_size; - - /* Number of bytes that sg was adjusted to make it 8B-aligned. */ - int adjust; - - /* Gather component that can accommodate max sized fragment list - * received from the IP layer. - */ - struct octeon_sg_entry *sg; - - dma_addr_t sg_dma_ptr; -}; - static int liquidio_vf_probe(struct pci_dev *pdev, const struct pci_device_id *ent); static void liquidio_vf_remove(struct pci_dev *pdev); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 60db303..26961e1 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -47,6 +47,27 @@ struct liquidio_if_cfg_resp { u64 status; }; +/* Structure of a node in list of gather components maintained by + * NIC driver for each network device. + */ +struct octnic_gather { + /* List manipulation. Next and prev pointers. */ + struct list_head list; + + /* Size of the gather component at sg in bytes. */ + int sg_size; + + /* Number of bytes that sg was adjusted to make it 8B-aligned. */ + int adjust; + + /* Gather component that can accommodate max sized fragment list + * received from the IP layer. + */ + struct octeon_sg_entry *sg; + + dma_addr_t sg_dma_ptr; +}; + struct oct_nic_stats_resp { u64 rh; struct oct_link_stats stats; From patchwork Sat Apr 28 06:32:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906051 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="ZCA/Fc+f"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1Fx6hxdz9s06 for ; Sat, 28 Apr 2018 16:33:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933437AbeD1GdF (ORCPT ); Sat, 28 Apr 2018 02:33:05 -0400 Received: from mail-bn3nam01on0068.outbound.protection.outlook.com ([104.47.33.68]:64976 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933409AbeD1GdA (ORCPT ); Sat, 28 Apr 2018 02:33:00 -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; bh=2O8cEF0CSQVod/OVJiTmMJQIl47eP5xpcEuvgb5RAa0=; b=ZCA/Fc+fsWK8AyN80JknxN3dWJjLV5hjkJTPByyyUIw+Y0FsrsY4ZQNq2NrPuYSiDFJGID2yrAImfPAu3Iz8hRNpvfl24bK6/FcJ5B7ORKgmK9dcv4BU7gFELO/E50gH9Ps9WysJkcszHIAvwZA3YeURSszS6xeNkEeCV0bjUxk= Received: from localhost (50.233.148.156) by DM6PR07MB4218.namprd07.prod.outlook.com (2603:10b6:5:bd::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.18; Sat, 28 Apr 2018 06:32:57 +0000 Date: Fri, 27 Apr 2018 23:32:55 -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 V2 net-next 5/6] liquidio: Moved common function setup_glists to lio_core.c Message-ID: <20180428063255.GA3291@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR02CA0019.namprd02.prod.outlook.com (2603:10b6:a02:ee::32) To DM6PR07MB4218.namprd07.prod.outlook.com (2603:10b6:5:bd::27) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB4218; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 3:aoOw8u11Q4MbQQaYYlW1CpstJo5P3ZUcbRzrMJV5ZAo0uudMpwxHLhF2F/sFHlqmi/8o5FiEykQJm6kQ5Zb8adHmGzANV/BKgrlEpze49b6mScAHPWufmjZJg1Y1FKTrWY7h+VMlWSyb8Ief6/Pe5hHTu7XYoM3sSNL5on/pN1xAGtUH/HgX02uZQHGdxCu5rDF8RVTJm+pWGoYIEL7oxM5dIXKHqsPaDCpHDYu6/N+qLMIkgzhAJcrUqS+sTMag; 25:1jvKX+PiS+sZbh2175v500BRe4UT3OS1KIZOM7l9hm3XReLcFL3CDXG72dyIxU3DNj2ZTScrQFHVjOByKlMUeN1xRn/BhEYyU9DZjaVfSycs605bG+92ADCe4dNSILkF+1BJ/lr6H49ctT69yJi8Ychq2yBOMPtnm7JVXP5EKZUmS4D6raUshzycOZiXIQFwxJobWKm0yMJbXDxa6DScUryvQURM6LybLocNoGYbuf5uOaJL5/D65UpNTw7bUi/IMm4t8AhCCJuF+xY8HX7TYlQRm23jhNni4++4DGNBzNoYUzZZ2SMGPYvrDupFgY7cka7kJhz73TjW3eD7sz2Row==; 31:VaiKYqQzr7q7L4RnbFDbzPgdlItPlQ5ARTWrkWlnV9tiTy5jrO2xIYP5fUIVRAN9yx7qmQMG8zHXmIQ4IfGhz9kmt1KH1kdLH5yNrt1yf7BytMj8t6VQvg+Xq/zN0WCHcC2bhqofurICgvhOyt3TvpmQHLcUpIzu6Vjer5ainbE03LlQk3N7lN3/H2MLbZ2E8QE6X4VPbhr+sYeGjVztICpjKR+oOUOEzmODHCf1lwg= X-MS-TrafficTypeDiagnostic: DM6PR07MB4218: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 20:FpCPAPvnpTcmafz5ldBy/cWYL/jL9oOLfcDh/orvBMbQttnSGZAJ1z32rwNHG/1dEWT0oqiEEggeJdt5jJrbbsDLCn0CBeBldSdznRpzBpAxJaRRKdl6hlwMZ0fB7vGV9Wgu7zc00muA7DFSYbLcW2ry0fBe+tgDbd8vTzdX9hd7KiOPE0+85pkxkwPbtqgmQXSzsG5+o9Vrv9yHcNKhey+k1UwQD1fN27p2EAoqLpjjNHDzUmoxH2vr4jcia/Lg1P+7YU8Fieaw6D5ko3/IfdFUS+aHc50YYxov3gonotSo7J2M7l9bryaUVwwlKgNw4NCzqp2SMZwLyZQCUpdn0/IOFvqR2LTCtndkWJajoiCU1bbIAaMROQTZOry2GAvdZ5/rsFp4IDYBA/6CsGQZO4ymgzr1M1bnM8IgSrB8+l3FJONWrTuLSRSpwsCMTlM9TeWl4Wo8cPJV0jUkqR2qx8rshfmkyQCNf0knzBLQIWUUwHHapHUOQUqYWuV1h2yb; 4:eur7hqpnvbVSTfkmb+aqkEw6CtzB6E3G/0zcMHWr8ouHUMwt2mRa3UjFh39y7S9zmBZDjdlrQaDvCKmInK2LDTh7p7anfbx7Peu3Ix7M1wPlNmlbkhcTPSSyh5w4J2hFTX1LStbke1wTd/Sv6PPzaDKzVnKY302MA2bZ0jfLi11KGbOiKN7r5RJCANDK+KQNjieUzeyEUdOCedyf4fOFFfu/S+itBQ7Q+CBIDCYWzqwd/nG4LPeezN7r5TmqVQpVzrk9ssMMNMsJ6mG60OV+Hw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231254)(944501410)(52105095)(93006095)(93001095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:DM6PR07MB4218; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4218; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39380400002)(39860400002)(376002)(396003)(366004)(346002)(189003)(199004)(76176011)(25786009)(105586002)(476003)(52116002)(107886003)(6496006)(575784001)(446003)(486006)(50466002)(4326008)(1076002)(3846002)(956004)(97736004)(47776003)(23726003)(305945005)(11346002)(6116002)(44832011)(66066001)(86362001)(81156014)(72206003)(2361001)(53936002)(81166006)(2351001)(8936002)(7736002)(33656002)(316002)(8676002)(16586007)(76506005)(59450400001)(106356001)(68736007)(2906002)(58126008)(386003)(186003)(6486002)(478600001)(16526019)(6916009)(26005)(5660300001)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4218; 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; DM6PR07MB4218; 23:dCcst237p1MwKO6gzqx/9HmnZHcpha1l9/mbgeZZeSs/RbCI0/s6/PteTeY77KkUiY/03uSKI9DcNAdLuzWadm2o8cwo7S1xKbOkOoWBxRoMEWPh2m4nhDkMXRtpaRfTWqKTqKHwNsRv7G/UYLleg9DZp3N1bwHNf8NZ475KWR5Hc3ErF2PZyDORq0lyTeqUxiQxBxEhvfjbyomYvlwnVIaom5UPuTgfp4JCHzuQL5pIQpjzBztFCUWgBk8/AZtT2XnOv7QVgnHjszUH2TbJKhEoyMLq+R9/2lbdst85dEHs0Q68ndk87+haLBqIz6tvkH2YEtgKvhOeR6vJ/ZmdiAzR3hbbfWObzy0zz9diWSbwpHqMt8kSOyoXSaUEnyE0/fzRPqu2D12+jquA47GDKWX0TXBcXXknWeOUTE1TckA+fZYBd2UsX8KbDJHy8geKirzPm2NAGMKVYDLyU4TJrS5OoNU7boYydkIidHTqAQhLEAIdfWRF3Gqdgfl1gP9/kxk3t7unOc32mYpKSNGsxTxN4Yuv/0o9cC6WnGgzRK8SPlr/EohA4df8hFEEsDzdRBCQoKgSz9LcmQqpXopAb357+qh1xqvNiDsDow/cbdHps9z84YDDpB/45ZG9k9HfrOG8D1YGefo0V0pBB/RjuCEEmDlcFxuc2dvRalJ0/th7uJSHzGrRTPy7ODfsIPkJbVPh2AVRX8C6ME0N7h6T1WRIINE2VdP+KXXhGgiC9PvcYSftdWkRtyKvhKJ2rdWSNfNxkDzotWURmL0EhbZS3a0vtaYhAi7UX8DrGe2675LfOrFXwsXc5s4rt8Z72+bbdQ+HXCDaOc6G0F8DNzDiV0WeagztGuXawH/HfYHS1SDXNx5t+XFFrnf5JggpTsmUKh/V+idL1Itiz+9LDipziLbfYwyBdsRNXv46YcGZh28trTVGLd5vZvYwJEQ5pAGEZCSYiqrMcQ730G/booHHZ0pT59wuuvmH8kYIPso4y42rgjzfmwZ/3sGl+9O7bK9czqhZHpwie4xT22SpJUzyVyBK71B0E8nASIa2gzhK4pTXJ/uTXgHQdaDIMsHj40QdI8boOGklRKcD8JtWyfv7czl+TyaTbMoe8zyBlDgf2kZPXcYnXal2wVz1flefXZTKMNWeGsU6HsGBexYJQaUUA2q0ZfyIypaMOVpTEbvDHhoAjbvu8+rjA4CDTHTOMbqYOAm14cNW7fhtDvH4Wfk2hTyZNGbGob+z13X6ln7qC/wWcKf1PNP/hq/qI1i1sNoOuDejOChV889fKo7FRYGi6pYSeB4f42B2MidnsP4DTsjnAUiQZOZcbSPYKsi3URXt X-Microsoft-Antispam-Message-Info: cYeo8yPqZlistC6kuSjThTaOieXX2Rpk/2PjyFmx58xKcI2AJg+30208w5IZE1j9u9qdhD4qz9KmlXAxL0f3psqsVOvAgUcVrFyTuMpGshdt2atoH4gYXQF2/BiKGUUalfGSfUdbDVFAZbNutUapRCzMXa7wYOVRPTR4/4uuwT0K91uuoOOImOPcAriO6Mtm X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 6:DsC2qDu9snB7iHzYtICjKe3JQutD9wojLQ1m4k2zbFy8rViKMYJY0sCbwOV2RgbDXQJVZebgrZFXbNWqygvRXlevsR0QeRZwHBkgxBqRlre7euAQ2FT0AT16UqroMklYte9GDTLh4NsHmE0zlgK7MkuwLpCr/utNU4VkoL0xh6rzyXoy3giLuYFGytdFwhUVuYrhnz16eSdo3rNUWFyHTFRCEozQIS3JikGOCq9uTw8225Od7i8Y0a2JgfDCJsNdzTmJ7idiuR0dZrX7/ydsjuCTy54O1cTawn8F86YnRn6czU5USbowfFWnf/v7LbVLPvHgvaUNFeAbdUJ2wLfewSZzMdUQNoj+Qontn1R/IxQO9ZrDIrC3BrAUc4dBCD6I5h3E3e+bbeH1ZYw7wXVLCgBBKvF1vBD1+i3VEhD+WCOhI3gIrxKPw/8IOBwQ8EPVvcALDd+OUywKcRU/sbva+Q==; 5:kwR0CfO5pVSyElLb1cig7zsqEJj5GM+Kcixp4kyAvVDXsb1lgybCHoI2GD3vEaU4uR/tukiuM0/Uz9/RRahtj5EbL0hNZUrZna4gbbcsCIfwLwvcH9dd9lZ6HFVTfdyueSRS34MQdPxOMUUwFyg8UMklEa74DZet65DzfSnHFig=; 24:zL30kZBU3j8+I92NRdR9gktoAU3UEoNkztLgUsUu1LCC/H8wRVlzTv43llSRQwESzQedt7z0OvAmT6hT/HqPYi/Ea22kT/FKdiBsg8RX5pI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 7:zxAi28i1JP8YubNH0088eIbu1PRUJ7slNWg8P1Q2n1gLREADKCDuhKxATJetIlOyivv+qXCEr8tfN+VR3WBsMy3u7n2MKH8UPIGlTfCjIH66mhwvPzvbHNpKxWuA/b1zv49uhqGvYHyi1Cf+d3XOlOjXP2+bYcCk5VH56xvS+z2PIAJ8c4j2AYl3+EIeqOUJC29J/HOimdFa6ISQOi7hZN9GWKL5oZCGjESLRNXeCPF6eYAqdBzyw/V41EzJjX3A X-MS-Office365-Filtering-Correlation-Id: fbde0405-0183-49f2-8c3d-08d5acd1e1aa X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:32:57.5579 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fbde0405-0183-49f2-8c3d-08d5acd1e1aa X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4218 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function setup_glists to lio_core.c and reamed it to lio_setup_glists Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 83 +++++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 85 +--------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 80 +------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 2 + 4 files changed, 87 insertions(+), 163 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 76aee81..b4f9275 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -29,6 +29,8 @@ /* OOM task polling interval */ #define LIO_OOM_POLL_INTERVAL_MS 250 +#define OCTNIC_MAX_SG MAX_SKB_FRAGS + /** * \brief Callback for getting interface configuration * @param status status of request @@ -102,6 +104,87 @@ void lio_delete_glists(struct lio *lio) lio->glist = NULL; } +/** + * \brief Setup gather lists + * @param lio per-network private data + */ +int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) +{ + struct octnic_gather *g; + int i, j; + + lio->glist_lock = + kcalloc(num_iqs, sizeof(*lio->glist_lock), GFP_KERNEL); + if (!lio->glist_lock) + return -ENOMEM; + + lio->glist = + kcalloc(num_iqs, sizeof(*lio->glist), GFP_KERNEL); + if (!lio->glist) { + kfree(lio->glist_lock); + lio->glist_lock = NULL; + return -ENOMEM; + } + + lio->glist_entry_size = + ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); + + /* allocate memory to store virtual and dma base address of + * per glist consistent memory + */ + lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), + GFP_KERNEL); + lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), + GFP_KERNEL); + + if (!lio->glists_virt_base || !lio->glists_dma_base) { + lio_delete_glists(lio); + return -ENOMEM; + } + + for (i = 0; i < num_iqs; i++) { + int numa_node = dev_to_node(&oct->pci_dev->dev); + + spin_lock_init(&lio->glist_lock[i]); + + INIT_LIST_HEAD(&lio->glist[i]); + + lio->glists_virt_base[i] = + lio_dma_alloc(oct, + lio->glist_entry_size * lio->tx_qsize, + &lio->glists_dma_base[i]); + + if (!lio->glists_virt_base[i]) { + lio_delete_glists(lio); + return -ENOMEM; + } + + for (j = 0; j < lio->tx_qsize; j++) { + g = kzalloc_node(sizeof(*g), GFP_KERNEL, + numa_node); + if (!g) + g = kzalloc(sizeof(*g), GFP_KERNEL); + if (!g) + break; + + g->sg = lio->glists_virt_base[i] + + (j * lio->glist_entry_size); + + g->sg_dma_ptr = lio->glists_dma_base[i] + + (j * lio->glist_entry_size); + + list_add_tail(&g->list, &lio->glist[i]); + } + + if (j != lio->tx_qsize) { + lio_delete_glists(lio); + return -ENOMEM; + } + } + + return 0; +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index c0bd489..f414cd7 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -138,8 +138,6 @@ union tx_info { * by this structure in the NIC module. */ -#define OCTNIC_MAX_SG (MAX_SKB_FRAGS) - #define OCTNIC_GSO_MAX_HEADER_SIZE 128 #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) @@ -521,87 +519,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * \brief Setup gather lists - * @param lio per-network private data - */ -static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) -{ - int i, j; - struct octnic_gather *g; - - lio->glist_lock = kcalloc(num_iqs, sizeof(*lio->glist_lock), - GFP_KERNEL); - if (!lio->glist_lock) - return -ENOMEM; - - lio->glist = kcalloc(num_iqs, sizeof(*lio->glist), - GFP_KERNEL); - if (!lio->glist) { - kfree(lio->glist_lock); - lio->glist_lock = NULL; - return -ENOMEM; - } - - lio->glist_entry_size = - ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); - - /* allocate memory to store virtual and dma base address of - * per glist consistent memory - */ - lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), - GFP_KERNEL); - lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), - GFP_KERNEL); - - if (!lio->glists_virt_base || !lio->glists_dma_base) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (i = 0; i < num_iqs; i++) { - int numa_node = dev_to_node(&oct->pci_dev->dev); - - spin_lock_init(&lio->glist_lock[i]); - - INIT_LIST_HEAD(&lio->glist[i]); - - lio->glists_virt_base[i] = - lio_dma_alloc(oct, - lio->glist_entry_size * lio->tx_qsize, - &lio->glists_dma_base[i]); - - if (!lio->glists_virt_base[i]) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (j = 0; j < lio->tx_qsize; j++) { - g = kzalloc_node(sizeof(*g), GFP_KERNEL, - numa_node); - if (!g) - g = kzalloc(sizeof(*g), GFP_KERNEL); - if (!g) - break; - - g->sg = lio->glists_virt_base[i] + - (j * lio->glist_entry_size); - - g->sg_dma_ptr = lio->glists_dma_base[i] + - (j * lio->glist_entry_size); - - list_add_tail(&g->list, &lio->glist[i]); - } - - if (j != lio->tx_qsize) { - lio_delete_glists(lio); - return -ENOMEM; - } - } - - return 0; -} - -/** * \brief Print link information * @param netdev network device */ @@ -3637,7 +3554,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); - if (setup_glists(octeon_dev, lio, num_iqueues)) { + if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { dev_err(&octeon_dev->pci_dev->dev, "Gather list allocation failed\n"); goto setup_nic_dev_fail; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 8151d11..246752a 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -69,8 +69,6 @@ union tx_info { } s; }; -#define OCTNIC_MAX_SG (MAX_SKB_FRAGS) - #define OCTNIC_GSO_MAX_HEADER_SIZE 128 #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) @@ -267,82 +265,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * \brief Setup gather lists - * @param lio per-network private data - */ -static int setup_glists(struct lio *lio, int num_iqs) -{ - struct octnic_gather *g; - int i, j; - - lio->glist_lock = - kzalloc(sizeof(*lio->glist_lock) * num_iqs, GFP_KERNEL); - if (!lio->glist_lock) - return -ENOMEM; - - lio->glist = - kzalloc(sizeof(*lio->glist) * num_iqs, GFP_KERNEL); - if (!lio->glist) { - kfree(lio->glist_lock); - lio->glist_lock = NULL; - return -ENOMEM; - } - - lio->glist_entry_size = - ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); - - /* allocate memory to store virtual and dma base address of - * per glist consistent memory - */ - lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), - GFP_KERNEL); - lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), - GFP_KERNEL); - - if (!lio->glists_virt_base || !lio->glists_dma_base) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (i = 0; i < num_iqs; i++) { - spin_lock_init(&lio->glist_lock[i]); - - INIT_LIST_HEAD(&lio->glist[i]); - - lio->glists_virt_base[i] = - lio_dma_alloc(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - &lio->glists_dma_base[i]); - - if (!lio->glists_virt_base[i]) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (j = 0; j < lio->tx_qsize; j++) { - g = kzalloc(sizeof(*g), GFP_KERNEL); - if (!g) - break; - - g->sg = lio->glists_virt_base[i] + - (j * lio->glist_entry_size); - - g->sg_dma_ptr = lio->glists_dma_base[i] + - (j * lio->glist_entry_size); - - list_add_tail(&g->list, &lio->glist[i]); - } - - if (j != lio->tx_qsize) { - lio_delete_glists(lio); - return -ENOMEM; - } - } - - return 0; -} - -/** * \brief Print link information * @param netdev network device */ @@ -2211,7 +2133,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); - if (setup_glists(lio, num_iqueues)) { + if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { dev_err(&octeon_dev->pci_dev->dev, "Gather list allocation failed\n"); goto setup_nic_dev_fail; diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 26961e1..8894889 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -224,6 +224,8 @@ void lio_if_cfg_callback(struct octeon_device *oct, void lio_delete_glists(struct lio *lio); +int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_qs); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Sat Apr 28 06:32:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 906052 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="Fmnnep1w"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40Y1G41Rxgz9s06 for ; Sat, 28 Apr 2018 16:33:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933442AbeD1GdN (ORCPT ); Sat, 28 Apr 2018 02:33:13 -0400 Received: from mail-by2nam01on0086.outbound.protection.outlook.com ([104.47.34.86]:18048 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932841AbeD1GdE (ORCPT ); Sat, 28 Apr 2018 02:33:04 -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; bh=r/s0fsSkQYqyFTRLUOwXdPA6f3VDm7tS86Kz/fSM+YU=; b=Fmnnep1wA4dv/7+BED9+GlrGEe8iMBi8F2RxegA93cKayVQWvDAOal8s+5K9EV+EQaDX5TgZZbzSriPcsav7U20F4WBFr/oR8hxdhAh+BXx3EWeO/ZkQrgHMHi+n3ntMcu7ISVFf2QeTzaLo5sCgiC/rnxh/6+imEVj8XbfpGIg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN7PR07MB4211.namprd07.prod.outlook.com (2603:10b6:406:b2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.18; Sat, 28 Apr 2018 06:33:01 +0000 Date: Fri, 27 Apr 2018 23:32:57 -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 V2 net-next 6/6] liquidio: enhanced ethtool --set-channels feature Message-ID: <20180428063257.GA3302@felix-thinkpad.cavium.com> References: <20180428063204.GA3229@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180428063204.GA3229@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0110.namprd15.prod.outlook.com (2603:10b6:101:21::30) To BN7PR07MB4211.namprd07.prod.outlook.com (2603:10b6:406:b2::15) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:BN7PR07MB4211; X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 3:Jk97qvq50F7/FqZLKoVBGoWlSfRa1NqjQci4CEPHCLOxBZ14XonWG3usu6V+X/WLOWGxP2HqXXs7ilF7hCo8Vn5HjXNreLWX5BaxeseQgOWs/DU8bd8d3g0iMTmQ+oHkBUJK+3jRhKuU6GWDfsWeNgUeaQw5u0Rvo36Tl8okMOzfz1Y692OHz0s4pei7YY3HsLTrE6QlVPBUcrORSSQKUXONh7sBm9TzWOoysn+o0Z4f4Pwo/nJFaUbR4DriOuCW; 25:CUz/WbMd5TzG5c+dG4o/toIa7g+x+zQ3ULUaDT6wPn7/Kl1a+PIvV8lkOiU14T4heV19+ao2SvkJL7ZUyLrQ/nCMGW60G0ctH8Pf6JGdm2LqnIHD9oW+7t5YeOPD1SEBWUJ0evlh4dVuKaH76lSU5alXKL6CM6/3I6+Ry6ISepTsU+qpmWXZLPe5WtNbsglIOOjp+bkmSnrnAaqa0B1y/5pnnbCYQ/NJB8rB9GiXEQPyNDbBmgOdk5uzJrDxOlZ/5HX+d2jExonHCGmRI82uI80mh6XZ47yMH/1hrvDUpXjRp6v2ynmpf3YTdGOGkSL0VmqwYhTVCr4vZGZKd73a3w==; 31:nsQ1Y014sJnrax1gAP2d+o+JkOaRPnBq28e+7HAUlWKbVT/xy7LD4Ty1Us7/XyPK2PNVufrRcIZ9/VJ5N+AAZGLGlpsuFJwC/z6FWoyzJlvKeRYshI8EpRwrCJtd18sboabI8gvbk/e7MS5nxKFWnAoynwtB/K9t5YQrJXfyK0SMt78FyGf7slaycRsKV+W45Ifivugrb9u9C054w54DJUHSvg/t6AicMO9zSo4Z3PM= X-MS-TrafficTypeDiagnostic: BN7PR07MB4211: X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 20:jTn7k8co/9zGS6cBJTUpe3QCaWqv7mNT7H9hfDNRXUCepJWFN/rneSbGdUhJ1JiGEDfpJXx3dyS2k1VgT0lh0iZBM3c9kpOZX8WkXGia3jb2oNYwG7JkWvnCs5D3qf+6dprAOG2xahb2bhkEJtcBYv1VtugWhBsfZB1UD5xGFr5zBjuDdUEfF0yKZSvaa66Bsnj6BP6z4Twc+DX0ihtjLwvBZbLB8fVUH/y5OVyY9qAmDSebChSUJFS/xjMoTYeGx50BmU5TgK6LtnkC5Ew5t8OoRRx4zppsVYWy5m3MLNigjQHn/GFKOs0c28H+EFi/I1BD8Dp4ZQL6OwH0M5IzGe0gsUSQPkU1XCch8zfW0U6dVhTXgiAu1hYhOrAloQLpGmQ9GQT9J+ZS5dfQR0a2nOSrJ9ubRqQAxoZHq+nYyP7V4wrBpEdl0y5Zm9mYowraDC32mAKyqxvBhru28985oBqOLkiIBKYgj9YYq5lbYKPq15f8PiaNgJ4Ooerr6XiZ; 4:4PcQCAkeV5UnWR0ylM7PVxuo5Gz74X9wuFNWhRhoKNNXbX+DbKLQ5Fckzx3iMzkhYgysa6rHcZlnOLqfHmMCjRIy/m2FxKFnOmqMCPNGDAu5CuwOCK2KTpOoLYLHHgRZwgCU77VcbGE9Y7nEmBhSdQTYzbzmZFi1GQhdYdf0We5q1anEqB2yzMtIg2TlcZtqX4RVe192b5e1ow4WChV2TokVAufHnEYv2Tmbnhr/YPYg82e1CKVoHvIY4eOQpqZkjADi9U/udUC8EzSS5RjY3A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:BN7PR07MB4211; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4211; X-Forefront-PRVS: 0656A4403B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39380400002)(376002)(366004)(39850400004)(396003)(346002)(199004)(189003)(105586002)(59450400001)(76506005)(106356001)(6496006)(956004)(486006)(575784001)(44832011)(386003)(476003)(50466002)(2361001)(2351001)(86362001)(26005)(16526019)(186003)(68736007)(58126008)(316002)(52116002)(478600001)(76176011)(446003)(16586007)(11346002)(72206003)(8676002)(1076002)(6486002)(7736002)(6116002)(81166006)(3846002)(6916009)(4326008)(53936002)(97736004)(6666003)(25786009)(23726003)(47776003)(5660300001)(107886003)(2906002)(81156014)(8936002)(66066001)(33656002)(305945005)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4211; 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; BN7PR07MB4211; 23:Dr4XM1x9VKCV+WzeqwB7wMWdl+EOLplke+A90dFEGWHCLOXyemZ2F+LHWzIQAm6XVCkRZP/ewQiv7v3+nWD9h1LGSkw3eVAYM9LS2RjDSUViGVrAY0faXts3gwC5ZAyxxtvek+6A9hYJDd1hHRlIC/mW/qkj22Hfq2Y+Xbo0sysPftLtW13gX/sYl7ejZVXLtColSm/S6h6jSJhL0D9DhLp8LuF2T4zRWPy4Scl/+UMTJDtLrJnqMJ19Ubdte9Ofc0OeHzn6XzyR9h0lPYFQutdeNC+wlFda/KyVycMeL07lOTsaPhbHLaNMqejHaW6CAeAq2qaEP9KIXUy++7EVvWEy1i1M1LBRULOHD2SguQmjMLIao8HVjkHdrNOo2kcKb1IrX7KPnFDEPlomjS00QGqUjmpe76hCWEoKWgHamBfkF3mjqIO9tayvDI39CK2BARm5P0hn/P4dpI7iUKcOIwd86PIJmI8iPx6XUa8GPskE/KUkjxna2vbiPRkiMT85sQQ6ux1e/0CVyuZJRYsSh4gDqexxZwQQ7gCSvTDQJll+vzeyrMT16kpq6sl6hqnGVe35Czmtr5Db8D5rVEmcjwArohAOoskeaOB+OErI8GWCLB/Fea6um5Q+uUejJP3yBmoUD62Wfwkagwqv/TMaDGep7nrEteyRngWoa9P5lRWgbnGhBq1oqgyOmbpFQnKr0bsnZIbePl0MUjchdNUxFO1pDh2piCXTkNpNxfD5CGHWH6OUNzwm9eEK8CwJTEMrbvd0LdVnF0LjkZi96JdiW5kmNx6axaQ+jq0cPnUDFbZCYvg8RJWfdR+k/rgPMAxd74dh1XpKBdwhmpIAI85lpZ3KeVC5Xc2F3+UcS/FQhXon8XRcVn+vA6XrBG96Sew3+z6tW1HJWPrFcFlYcaJ+gv9BVrtfVtoB14+lZ8JIDByE/E/2ZJ/PslOLkW9NNlrqTK7avAcBBk1Qs92bE17XVjkFxgCBvMjeOgWdM8e2A/sWfpHAayf0meNSozNRdpWA6zjABUkfmceX0tTzvzrDamfLUXwKp1ALaY7ldVmeWcLKcYThQOTfTOA2HRo31pkIWkUfsnMxnSsuzQGXAAp2VIFOMqCorrGZGxW7TqxdSuruowDVuoTTG5TMHqtXtpT8LMzBp0HR3O9XmkmZAOwScpFWjlhVUoCIK46Q5grRLg3HBLBQRjo3hiSinvMY6RFLfDTXd9dmvYkuDd1Cdjfar+Z6T9/fmN/gVdtkJWsgXOxsBg/38Nr1qGqsZHaql7X0uJlbJMaioX3gi/g7U0vpeu8qOoGNO9NUEbVfwwF8LwbwQ8zloshmLzJ9TcH0MQ/7CoMIcAC+RHrQk2vrjsooYQ== X-Microsoft-Antispam-Message-Info: 3byf0ArbHAj1ZE/2o7rklRxecYIbSw5511+v0FnM/tRdKrWh+SDC31jXNCrGPi/wl5IkmutQY5mGzDdvWgyXQ2hSQvmiU8ADGjyvoW5ORLnde9Bsv0Agn9sFL+01uYvHmJs9tpLyxh/j1k1Qkfj2GP36HiYdeHlOmsz0OPuro0ErJbqCDQfM2PH43caz95qw X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 6:Ypq6mBiTDPIMYsjPoXUSR/iL4m+RlhyOKnXDlA4pYzNwqhYa5eNiVo0f4kRwRA5KPBDXhGJiAy01J0qgMq36pHhnvwaAHLaRvZGLuVwkHcjVXjNyOcw6Yc2BPQdoGnYw4+tBMvjzPQxICSqj4/Qbs/Gls4TNV3ZLN9mB4qzJ9sz9SzNUziitLf8TCCFMeuuDU86kC6nZf0xGq/g7DPcyx/6ovaQcgPPLu8wU/7aKDsbFnnrFK0QvEQaM1Kv+Hoqspz0wdD2g91tlzlYZeOTSejQHNr0q51qsKVubQv9aGzHlm2c00GB+07sKgYOy0i6edRKwYlvt34xiCp6rR6eojydj287HTYV4j0CJmOHuXevS4tem23w+XiPr8sPI0AymiwmsYHo4qdbXL66fwUPhyaYoiJqcGdLD1o9HH2VQXkg81NYMGUWutJwS9BWFhYhE+u/3bTRevHkfF/96pUMBMg==; 5:VwC6IIuFPygmfml57VVEJJXBalDJrZVZIhnLta3WHqHlApyBP84lJVdzf+RAecmuoeOzQ1GXbq1ccS09MKxugstkp7WAyFpFXdLFRqT3SNe/LgylIsykTsGt/+z+W9ClALaSDER4eAKokhuUL+shmX3a7uHHJTiAzW2gaPFPZy4=; 24:48Bg3pffTzARTt0GmlVc47K1X8UfGVvjkl03RA1ToQeJr++Z9Zu7+FCJ0lAvbi56XLy9E141BG+Wv+ORXp0Dln4Inqw4awDZfBeRNWQpkMg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 7:22gtGNJHzbp9NqjvdVeayNw6YVRa2ARibbqBiDKIQRudxsOdtWI23U7Xdq44e22K48lNlkczo4g0/hgpLsJAx1viKposnjo6fg1e5EjHhu2OPO7eP2Nb6Ccef2sE8HCmFm05YevmbE2Rfr9aiBqQBbl1dPSLCeZq/RK7WDExaC8EhGAGsvk9037BuGN0v+5N9ddL2U9l3CTvr8xL23PbYhwQ0alnnaBIPAS3u2Y861+6a9eTL8gOb+iXxHHCasii X-MS-Office365-Filtering-Correlation-Id: b89b44db-b910-4e0d-fdeb-08d5acd1e3dd X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2018 06:33:01.1724 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b89b44db-b910-4e0d-fdeb-08d5acd1e3dd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4211 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Enhancing driver to accept max supported queues for ethtool --set-channels Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- .../ethernet/cavium/liquidio/cn23xx_pf_device.c | 6 +- .../ethernet/cavium/liquidio/cn23xx_pf_device.h | 2 + drivers/net/ethernet/cavium/liquidio/lio_core.c | 4 +- drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 263 +++++++++++++++++++-- drivers/net/ethernet/cavium/liquidio/lio_main.c | 64 +++-- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 8 +- .../net/ethernet/cavium/liquidio/liquidio_common.h | 1 + .../net/ethernet/cavium/liquidio/octeon_device.c | 12 +- .../net/ethernet/cavium/liquidio/octeon_device.h | 2 +- .../net/ethernet/cavium/liquidio/octeon_network.h | 12 +- 10 files changed, 316 insertions(+), 58 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c index bc9861c..929d485 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c @@ -1245,7 +1245,7 @@ static void cn23xx_setup_reg_address(struct octeon_device *oct) CN23XX_SLI_MAC_PF_INT_ENB64(oct->pcie_port, oct->pf_num); } -static int cn23xx_sriov_config(struct octeon_device *oct) +int cn23xx_sriov_config(struct octeon_device *oct) { struct octeon_cn23xx_pf *cn23xx = (struct octeon_cn23xx_pf *)oct->chip; u32 max_rings, total_rings, max_vfs, rings_per_vf; @@ -1269,8 +1269,8 @@ static int cn23xx_sriov_config(struct octeon_device *oct) break; } - if (max_rings <= num_present_cpus()) - num_pf_rings = 1; + if (oct->sriov_info.num_pf_rings) + num_pf_rings = oct->sriov_info.num_pf_rings; else num_pf_rings = num_present_cpus(); diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h index 63b3de4..e6f31d0 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h @@ -61,6 +61,8 @@ u32 cn23xx_pf_get_oq_ticks(struct octeon_device *oct, u32 time_intr_in_us); void cn23xx_dump_pf_initialized_regs(struct octeon_device *oct); +int cn23xx_sriov_config(struct octeon_device *oct); + int cn23xx_fw_loaded(struct octeon_device *oct); void cn23xx_tell_vf_its_macaddr_changed(struct octeon_device *oct, int vfidx, diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index b4f9275..7e24b51 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -78,7 +78,7 @@ void lio_delete_glists(struct lio *lio) if (!lio->glist) return; - for (i = 0; i < lio->linfo.num_txpciq; i++) { + for (i = 0; i < lio->oct_dev->num_iqs; i++) { do { g = (struct octnic_gather *) lio_list_delete_head(&lio->glist[i]); @@ -1036,8 +1036,8 @@ int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs) int num_ioq_vectors; int irqret, err; - oct->num_msix_irqs = num_ioqs; if (oct->msix_on) { + oct->num_msix_irqs = num_ioqs; if (OCTEON_CN23XX_PF(oct)) { num_interrupts = MAX_IOQ_INTERRUPTS_PER_PF + 1; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c index 9926a12..7ca246e 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c @@ -353,7 +353,14 @@ lio_ethtool_get_channels(struct net_device *dev, rx_count = CFG_GET_NUM_RXQS_NIC_IF(conf6x, lio->ifidx); tx_count = CFG_GET_NUM_TXQS_NIC_IF(conf6x, lio->ifidx); } else if (OCTEON_CN23XX_PF(oct)) { - max_combined = lio->linfo.num_txpciq; + if (oct->sriov_info.sriov_enabled) { + max_combined = lio->linfo.num_txpciq; + } else { + struct octeon_config *conf23_pf = + CHIP_CONF(oct, cn23xx_pf); + + max_combined = CFG_GET_IQ_MAX_Q(conf23_pf); + } combined_count = oct->num_iqs; } else if (OCTEON_CN23XX_VF(oct)) { u64 reg_val = 0ULL; @@ -417,9 +424,15 @@ lio_irq_reallocate_irqs(struct octeon_device *oct, uint32_t num_ioqs) kfree(oct->irq_name_storage); oct->irq_name_storage = NULL; + + if (octeon_allocate_ioq_vector(oct, num_ioqs)) { + dev_err(&oct->pci_dev->dev, "OCTEON: ioq vector allocation failed\n"); + return -1; + } + if (octeon_setup_interrupt(oct, num_ioqs)) { dev_info(&oct->pci_dev->dev, "Setup interrupt failed\n"); - return 1; + return -1; } /* Enable Octeon device interrupts */ @@ -449,7 +462,16 @@ lio_ethtool_set_channels(struct net_device *dev, combined_count = channel->combined_count; if (OCTEON_CN23XX_PF(oct)) { - max_combined = channel->max_combined; + if (oct->sriov_info.sriov_enabled) { + max_combined = lio->linfo.num_txpciq; + } else { + struct octeon_config *conf23_pf = + CHIP_CONF(oct, + cn23xx_pf); + + max_combined = + CFG_GET_IQ_MAX_Q(conf23_pf); + } } else if (OCTEON_CN23XX_VF(oct)) { u64 reg_val = 0ULL; u64 ctrl = CN23XX_VF_SLI_IQ_PKT_CONTROL64(0); @@ -477,7 +499,6 @@ lio_ethtool_set_channels(struct net_device *dev, if (lio_reset_queues(dev, combined_count)) return -EINVAL; - lio_irq_reallocate_irqs(oct, combined_count); if (stopped) dev->netdev_ops->ndo_open(dev); @@ -816,12 +837,120 @@ lio_ethtool_get_ringparam(struct net_device *netdev, ering->rx_jumbo_max_pending = 0; } +static int lio_23xx_reconfigure_queue_count(struct lio *lio) +{ + struct octeon_device *oct = lio->oct_dev; + struct liquidio_if_cfg_context *ctx; + u32 resp_size, ctx_size, data_size; + struct liquidio_if_cfg_resp *resp; + struct octeon_soft_command *sc; + union oct_nic_if_cfg if_cfg; + struct lio_version *vdata; + u32 ifidx_or_pfnum; + int retval; + int j; + + resp_size = sizeof(struct liquidio_if_cfg_resp); + ctx_size = sizeof(struct liquidio_if_cfg_context); + data_size = sizeof(struct lio_version); + sc = (struct octeon_soft_command *) + octeon_alloc_soft_command(oct, data_size, + resp_size, ctx_size); + if (!sc) { + dev_err(&oct->pci_dev->dev, "%s: Failed to allocate soft command\n", + __func__); + return -1; + } + + resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; + ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; + vdata = (struct lio_version *)sc->virtdptr; + + vdata->major = (__force u16)cpu_to_be16(LIQUIDIO_BASE_MAJOR_VERSION); + vdata->minor = (__force u16)cpu_to_be16(LIQUIDIO_BASE_MINOR_VERSION); + vdata->micro = (__force u16)cpu_to_be16(LIQUIDIO_BASE_MICRO_VERSION); + + ifidx_or_pfnum = oct->pf_num; + WRITE_ONCE(ctx->cond, 0); + ctx->octeon_id = lio_get_device_id(oct); + init_waitqueue_head(&ctx->wc); + + if_cfg.u64 = 0; + if_cfg.s.num_iqueues = oct->sriov_info.num_pf_rings; + if_cfg.s.num_oqueues = oct->sriov_info.num_pf_rings; + if_cfg.s.base_queue = oct->sriov_info.pf_srn; + if_cfg.s.gmx_port_id = oct->pf_num; + + sc->iq_no = 0; + octeon_prepare_soft_command(oct, sc, OPCODE_NIC, + OPCODE_NIC_QCOUNT_UPDATE, 0, + if_cfg.u64, 0); + sc->callback = lio_if_cfg_callback; + sc->callback_arg = sc; + sc->wait_time = LIO_IFCFG_WAIT_TIME; + + retval = octeon_send_soft_command(oct, sc); + if (retval == IQ_SEND_FAILED) { + dev_err(&oct->pci_dev->dev, + "iq/oq config failed status: %x\n", + retval); + goto qcount_update_fail; + } + + if (sleep_cond(&ctx->wc, &ctx->cond) == -EINTR) { + dev_err(&oct->pci_dev->dev, "Wait interrupted\n"); + return -1; + } + + retval = resp->status; + if (retval) { + dev_err(&oct->pci_dev->dev, "iq/oq config failed\n"); + goto qcount_update_fail; + } + + octeon_swap_8B_data((u64 *)(&resp->cfg_info), + (sizeof(struct liquidio_if_cfg_info)) >> 3); + + lio->ifidx = ifidx_or_pfnum; + lio->linfo.num_rxpciq = hweight64(resp->cfg_info.iqmask); + lio->linfo.num_txpciq = hweight64(resp->cfg_info.iqmask); + for (j = 0; j < lio->linfo.num_rxpciq; j++) { + lio->linfo.rxpciq[j].u64 = + resp->cfg_info.linfo.rxpciq[j].u64; + } + + for (j = 0; j < lio->linfo.num_txpciq; j++) { + lio->linfo.txpciq[j].u64 = + resp->cfg_info.linfo.txpciq[j].u64; + } + + lio->linfo.hw_addr = resp->cfg_info.linfo.hw_addr; + lio->linfo.gmxport = resp->cfg_info.linfo.gmxport; + lio->linfo.link.u64 = resp->cfg_info.linfo.link.u64; + lio->txq = lio->linfo.txpciq[0].s.q_no; + lio->rxq = lio->linfo.rxpciq[0].s.q_no; + + octeon_free_soft_command(oct, sc); + dev_info(&oct->pci_dev->dev, "Queue count updated to %d\n", + lio->linfo.num_rxpciq); + + return 0; + +qcount_update_fail: + octeon_free_soft_command(oct, sc); + + return -1; +} + static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + int i, queue_count_update = 0; struct napi_struct *napi, *n; - int i, update = 0; + int ret; + + schedule_timeout_uninterruptible(msecs_to_jiffies(100)); if (wait_for_pending_requests(oct)) dev_err(&oct->pci_dev->dev, "There were pending requests\n"); @@ -830,7 +959,7 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) dev_err(&oct->pci_dev->dev, "IQ had pending instructions\n"); if (octeon_set_io_queues_off(oct)) { - dev_err(&oct->pci_dev->dev, "setting io queues off failed\n"); + dev_err(&oct->pci_dev->dev, "Setting io queues off failed\n"); return -1; } @@ -843,9 +972,40 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) netif_napi_del(napi); if (num_qs != oct->num_iqs) { - netif_set_real_num_rx_queues(netdev, num_qs); - netif_set_real_num_tx_queues(netdev, num_qs); - update = 1; + ret = netif_set_real_num_rx_queues(netdev, num_qs); + if (ret) { + dev_err(&oct->pci_dev->dev, + "Setting real number rx failed\n"); + return ret; + } + + ret = netif_set_real_num_tx_queues(netdev, num_qs); + if (ret) { + dev_err(&oct->pci_dev->dev, + "Setting real number tx failed\n"); + return ret; + } + + /* The value of queue_count_update decides whether it is the + * queue count or the descriptor count that is being + * re-configured. + */ + queue_count_update = 1; + } + + /* Re-configuration of queues can happen in two scenarios, SRIOV enabled + * and SRIOV disabled. Few things like recreating queue zero, resetting + * glists and IRQs are required for both. For the latter, some more + * steps like updating sriov_info for the octeon device need to be done. + */ + if (queue_count_update) { + lio_delete_glists(lio); + + /* Delete mbox for PF which is SRIOV disabled because sriov_info + * will be now changed. + */ + if ((OCTEON_CN23XX_PF(oct)) && !oct->sriov_info.sriov_enabled) + oct->fn_list.free_mbox(oct); } for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct); i++) { @@ -860,24 +1020,91 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) octeon_delete_instr_queue(oct, i); } + if (queue_count_update) { + /* For PF re-configure sriov related information */ + if ((OCTEON_CN23XX_PF(oct)) && + !oct->sriov_info.sriov_enabled) { + oct->sriov_info.num_pf_rings = num_qs; + if (cn23xx_sriov_config(oct)) { + dev_err(&oct->pci_dev->dev, + "Queue reset aborted: SRIOV config failed\n"); + return -1; + } + + num_qs = oct->sriov_info.num_pf_rings; + } + } + if (oct->fn_list.setup_device_regs(oct)) { dev_err(&oct->pci_dev->dev, "Failed to configure device registers\n"); return -1; } - if (liquidio_setup_io_queues(oct, 0, num_qs, num_qs)) { - dev_err(&oct->pci_dev->dev, "IO queues initialization failed\n"); - return -1; + /* The following are needed in case of queue count re-configuration and + * not for descriptor count re-configuration. + */ + if (queue_count_update) { + if (octeon_setup_instr_queues(oct)) + return -1; + + if (octeon_setup_output_queues(oct)) + return -1; + + /* Recreating mbox for PF that is SRIOV disabled */ + if (OCTEON_CN23XX_PF(oct) && !oct->sriov_info.sriov_enabled) { + if (oct->fn_list.setup_mbox(oct)) { + dev_err(&oct->pci_dev->dev, "Mailbox setup failed\n"); + return -1; + } + } + + /* Deleting and recreating IRQs whether the interface is SRIOV + * enabled or disabled. + */ + if (lio_irq_reallocate_irqs(oct, num_qs)) { + dev_err(&oct->pci_dev->dev, "IRQs could not be allocated\n"); + return -1; + } + + /* Enable the input and output queues for this Octeon device */ + if (oct->fn_list.enable_io_queues(oct)) { + dev_err(&oct->pci_dev->dev, "Failed to enable input/output queues\n"); + return -1; + } + + for (i = 0; i < oct->num_oqs; i++) + writel(oct->droq[i]->max_count, + oct->droq[i]->pkts_credit_reg); + + /* Informing firmware about the new queue count. It is required + * for firmware to allocate more number of queues than those at + * load time. + */ + if (OCTEON_CN23XX_PF(oct) && !oct->sriov_info.sriov_enabled) { + if (lio_23xx_reconfigure_queue_count(lio)) + return -1; + } } - /* Enable the input and output queues for this Octeon device */ - if (oct->fn_list.enable_io_queues(oct)) { - dev_err(&oct->pci_dev->dev, "Failed to enable input/output queues"); + /* Once firmware is aware of the new value, queues can be recreated */ + if (liquidio_setup_io_queues(oct, 0, num_qs, num_qs)) { + dev_err(&oct->pci_dev->dev, "I/O queues creation failed\n"); return -1; } - if (update && lio_send_queue_count_update(netdev, num_qs)) - return -1; + if (queue_count_update) { + if (lio_setup_glists(oct, lio, num_qs)) { + dev_err(&oct->pci_dev->dev, "Gather list allocation failed\n"); + return -1; + } + + /* Send firmware the information about new number of queues + * if the interface is a VF or a PF that is SRIOV enabled. + */ + if (oct->sriov_info.sriov_enabled || OCTEON_CN23XX_VF(oct)) + if (lio_send_queue_count_update(netdev, num_qs)) + return -1; + } return 0; } @@ -922,7 +1149,7 @@ static int lio_ethtool_set_ringparam(struct net_device *netdev, CFG_SET_NUM_RX_DESCS_NIC_IF(octeon_get_conf(oct), lio->ifidx, rx_count); - if (lio_reset_queues(netdev, lio->linfo.num_txpciq)) + if (lio_reset_queues(netdev, oct->num_iqs)) goto err_lio_reset_queues; if (stopped) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index f414cd7..dc801b1 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -497,7 +497,7 @@ static void liquidio_deinit_pci(void) */ static inline int check_txq_status(struct lio *lio) { - int numqs = lio->netdev->num_tx_queues; + int numqs = lio->netdev->real_num_tx_queues; int ret_val = 0; int q, iq; @@ -1521,7 +1521,7 @@ static void free_netsgbuf(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); spin_unlock(&lio->glist_lock[iq]); @@ -1564,7 +1564,7 @@ static void free_netsgbuf_with_resp(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -1851,11 +1851,6 @@ static int liquidio_open(struct net_device *netdev) ifstate_set(lio, LIO_IFSTATE_RUNNING); - /* Ready for link status updates */ - lio->intf_open = 1; - - netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); - if (OCTEON_CN23XX_PF(oct)) { if (!oct->msix_on) if (setup_tx_poll_fn(netdev)) @@ -1865,7 +1860,12 @@ static int liquidio_open(struct net_device *netdev) return -1; } - start_txqs(netdev); + netif_tx_start_all_queues(netdev); + + /* Ready for link status updates */ + lio->intf_open = 1; + + netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); /* tell Octeon to start forwarding packets to host */ send_rx_ctrl_cmd(lio, 1); @@ -1888,11 +1888,15 @@ static int liquidio_stop(struct net_device *netdev) ifstate_reset(lio, LIO_IFSTATE_RUNNING); - netif_tx_disable(netdev); + /* Stop any link updates */ + lio->intf_open = 0; + + stop_txqs(netdev); /* Inform that netif carrier is down */ netif_carrier_off(netdev); - lio->intf_open = 0; + netif_tx_disable(netdev); + lio->linfo.link.s.link_up = 0; lio->link_changes++; @@ -2312,7 +2316,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) lio = GET_LIO(netdev); oct = lio->oct_dev; - q_idx = skb_iq(lio, skb); + q_idx = skb_iq(oct, skb); tag = q_idx; iq_no = lio->linfo.txpciq[q_idx].s.q_no; @@ -3278,6 +3282,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) struct liquidio_if_cfg_resp *resp; struct octdev_props *props; int retval, num_iqueues, num_oqueues; + int max_num_queues = 0; union oct_nic_if_cfg if_cfg; unsigned int base_queue; unsigned int gmx_port_id; @@ -3360,7 +3365,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; - sc->wait_time = 3000; + sc->wait_time = LIO_IFCFG_WAIT_TIME; retval = octeon_send_soft_command(octeon_dev, sc); if (retval == IQ_SEND_FAILED) { @@ -3414,11 +3419,20 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) resp->cfg_info.oqmask); goto setup_nic_dev_fail; } + + if (OCTEON_CN6XXX(octeon_dev)) { + max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, + cn6xxx)); + } else if (OCTEON_CN23XX_PF(octeon_dev)) { + max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, + cn23xx_pf)); + } + dev_dbg(&octeon_dev->pci_dev->dev, - "interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d\n", + "interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d max_num_queues: %d\n", i, resp->cfg_info.iqmask, resp->cfg_info.oqmask, - num_iqueues, num_oqueues); - netdev = alloc_etherdev_mq(LIO_SIZE, num_iqueues); + num_iqueues, num_oqueues, max_num_queues); + netdev = alloc_etherdev_mq(LIO_SIZE, max_num_queues); if (!netdev) { dev_err(&octeon_dev->pci_dev->dev, "Device allocation failed\n"); @@ -3433,6 +3447,20 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) netdev->netdev_ops = &lionetdevops; SWITCHDEV_SET_OPS(netdev, &lio_pf_switchdev_ops); + retval = netif_set_real_num_rx_queues(netdev, num_oqueues); + if (retval) { + dev_err(&octeon_dev->pci_dev->dev, + "setting real number rx failed\n"); + goto setup_nic_dev_fail; + } + + retval = netif_set_real_num_tx_queues(netdev, num_iqueues); + if (retval) { + dev_err(&octeon_dev->pci_dev->dev, + "setting real number tx failed\n"); + goto setup_nic_dev_fail; + } + lio = GET_LIO(netdev); memset(lio, 0, sizeof(struct lio)); @@ -4053,7 +4081,9 @@ static int octeon_device_init(struct octeon_device *octeon_dev) } atomic_set(&octeon_dev->status, OCT_DEV_MBOX_SETUP_DONE); - if (octeon_allocate_ioq_vector(octeon_dev)) { + if (octeon_allocate_ioq_vector + (octeon_dev, + octeon_dev->sriov_info.num_pf_rings)) { dev_err(&octeon_dev->pci_dev->dev, "OCTEON: ioq vector allocation failed\n"); return 1; } diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 246752a..4b5ba02 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -849,7 +849,7 @@ static void free_netsgbuf(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -893,7 +893,7 @@ static void free_netsgbuf_with_resp(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -1392,7 +1392,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) lio = GET_LIO(netdev); oct = lio->oct_dev; - q_idx = skb_iq(lio, skb); + q_idx = skb_iq(lio->oct_dev, skb); tag = q_idx; iq_no = lio->linfo.txpciq[q_idx].s.q_no; @@ -2324,7 +2324,7 @@ static int octeon_device_init(struct octeon_device *oct) } atomic_set(&oct->status, OCT_DEV_MBOX_SETUP_DONE); - if (octeon_allocate_ioq_vector(oct)) { + if (octeon_allocate_ioq_vector(oct, oct->sriov_info.rings_per_vf)) { dev_err(&oct->pci_dev->dev, "ioq vector allocation failed\n"); return 1; } diff --git a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h index 34a94da..ba854f1 100644 --- a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h +++ b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h @@ -84,6 +84,7 @@ enum octeon_tag_type { #define OPCODE_NIC_IF_CFG 0x09 #define OPCODE_NIC_VF_DRV_NOTICE 0x0A #define OPCODE_NIC_INTRMOD_PARAMS 0x0B +#define OPCODE_NIC_QCOUNT_UPDATE 0x12 #define OPCODE_NIC_SET_TRUSTED_VF 0x13 #define OPCODE_NIC_SYNC_OCTEON_TIME 0x14 #define VF_DRV_LOADED 1 diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c b/drivers/net/ethernet/cavium/liquidio/octeon_device.c index f38abf6..f878a55 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c @@ -824,23 +824,18 @@ int octeon_deregister_device(struct octeon_device *oct) } int -octeon_allocate_ioq_vector(struct octeon_device *oct) +octeon_allocate_ioq_vector(struct octeon_device *oct, u32 num_ioqs) { - int i, num_ioqs = 0; struct octeon_ioq_vector *ioq_vector; int cpu_num; int size; - - if (OCTEON_CN23XX_PF(oct)) - num_ioqs = oct->sriov_info.num_pf_rings; - else if (OCTEON_CN23XX_VF(oct)) - num_ioqs = oct->sriov_info.rings_per_vf; + int i; size = sizeof(struct octeon_ioq_vector) * num_ioqs; oct->ioq_vector = vzalloc(size); if (!oct->ioq_vector) - return 1; + return -1; for (i = 0; i < num_ioqs; i++) { ioq_vector = &oct->ioq_vector[i]; ioq_vector->oct_dev = oct; @@ -856,6 +851,7 @@ octeon_allocate_ioq_vector(struct octeon_device *oct) else ioq_vector->ioq_num = i; } + return 0; } diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.h b/drivers/net/ethernet/cavium/liquidio/octeon_device.h index 91937cc..9430c0a 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.h @@ -867,7 +867,7 @@ void *oct_get_config_info(struct octeon_device *oct, u16 card_type); struct octeon_config *octeon_get_conf(struct octeon_device *oct); void octeon_free_ioq_vector(struct octeon_device *oct); -int octeon_allocate_ioq_vector(struct octeon_device *oct); +int octeon_allocate_ioq_vector(struct octeon_device *oct, u32 num_ioqs); void lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq); /* LiquidIO driver pivate flags */ diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 8894889..f3bf635 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -47,6 +47,8 @@ struct liquidio_if_cfg_resp { u64 status; }; +#define LIO_IFCFG_WAIT_TIME 3000 /* In milli seconds */ + /* Structure of a node in list of gather components maintained by * NIC driver for each network device. */ @@ -544,7 +546,7 @@ static inline void stop_txqs(struct net_device *netdev) { int i; - for (i = 0; i < netdev->num_tx_queues; i++) + for (i = 0; i < netdev->real_num_tx_queues; i++) netif_stop_subqueue(netdev, i); } @@ -557,7 +559,7 @@ static inline void wake_txqs(struct net_device *netdev) struct lio *lio = GET_LIO(netdev); int i, qno; - for (i = 0; i < netdev->num_tx_queues; i++) { + for (i = 0; i < netdev->real_num_tx_queues; i++) { qno = lio->linfo.txpciq[i % lio->oct_dev->num_iqs].s.q_no; if (__netif_subqueue_stopped(netdev, i)) { @@ -578,14 +580,14 @@ static inline void start_txqs(struct net_device *netdev) int i; if (lio->linfo.link.s.link_up) { - for (i = 0; i < netdev->num_tx_queues; i++) + for (i = 0; i < netdev->real_num_tx_queues; i++) netif_start_subqueue(netdev, i); } } -static inline int skb_iq(struct lio *lio, struct sk_buff *skb) +static inline int skb_iq(struct octeon_device *oct, struct sk_buff *skb) { - return skb->queue_mapping % lio->linfo.num_txpciq; + return skb->queue_mapping % oct->num_iqs; } /**