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