From patchwork Wed Apr 25 18:23:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904658 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="U/HYoA7s"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9X0Qh3z9s0v for ; Thu, 26 Apr 2018 04:24:00 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756140AbeDYSX5 (ORCPT ); Wed, 25 Apr 2018 14:23:57 -0400 Received: from mail-sn1nam01on0055.outbound.protection.outlook.com ([104.47.32.55]:35807 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756469AbeDYSXv (ORCPT ); Wed, 25 Apr 2018 14:23: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=2O8cEF0CSQVod/OVJiTmMJQIl47eP5xpcEuvgb5RAa0=; b=U/HYoA7s1QnS6TgqrNgtHDq5EvhmUvt6BpV26Go4XtZeEEn88QQeA/AOdWyVWeHHQInXijQdZPRNGm6eemfVbskmjc0Z9v3AGybJt/Z+1bRTK8IQ4tOv/8uzFrU2oMvOZyX16o2h/qcs4plpE11cBURa/Rpq1XVUX1ThLFp9C+I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:49 +0000 Date: Wed, 25 Apr 2018 11:23:46 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 5/6] liquidio: Moved common function setup_glists to lio_core.c Message-ID: <20180425182346.GA13900@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0089.namprd15.prod.outlook.com (2603:10b6:101:20::33) To SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB4221; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 3:muZthqBH8SiQtojIs1wXdtE8L+J5I7R6DeO+KQJqSdDQNMSWvNFglsEzhUPBiGWEKZ9vNuDSDv2s7mlHm88ZcTJheGh7I5GM8KcqD5tRNTauC9FyLPUdnX2wVPqd6W3n3SubvKwjObC3E13wJDa3U2gklz3G4Z+yWfHUclLTr3xCprP3hkIJ1BV9BdAfQre5DAycVsNcW8bMVsqoiZNCRFmF36i4K9icc+57a1XmOgvq4PFipxoB9X629CKyM897; 25:c4KC9NDIiNCB924SIot5DTumL7k73wPCSkIAmqMpHY3fXkFz0z4JtNWsh6RI7qiAXw6ii3Uhr4mYQTLnb734APBdeqjHHCB5gvQ3tKB8mPAmCMLCOMwP9jmHEC0uqQfQFEbhI+aK0PuwOuHmpuyRSvdC9Ifg4Yo8XIWd1jMXEybBw8sHdGcskqi89oRMdYtVyFBTYt1Ntq57C6/As4Jo5Sf9Dd5bG2y60KKtBLLeRE9aDUPP2FqOER//i93j9hLqp4KTUeeBhT87yON7ZlWj86Z7OOPNqc3xZTW2CS9Y9QZh9p8F//CQS910Tz+ecNTaAeoy8xanQdZCsq4WZMFQsQ==; 31:oWIQWhvUOXKRZut38TcmS/Yng7vzmkiUTQvQn+e041V7fxLyAsrJsxXw3zVqblecwzdz2TSSQ7GnwMfYX+HchmMNHSN8bU8uUgW6qW21UZNdkcqCB+a6LCe1hfq+bzB+lkPVWVoV+yN1B3sXwIt3n0N4+j569/pfOno88x6NrPEnmZOqwArE479Gq5QmAGeQTxcQBVGoGbzspO3N7pmJD9OI6wbqfmfBPtN7yXrafaQ= X-MS-TrafficTypeDiagnostic: SN6PR07MB4221: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 20:0Ec3SQoVXOcU8EIzMEPG5PWqnaPrSfMVefJTTtew4FQWx5ikyDNcGirV2DzTZIXxUAt2QkiSdujk5r9B3P4ULB7UrcQkYIOZf401Wt4ZjhRo0m86fYbNN42zarcr21ASi2J73kBNxLHyG4rsyeZRh9yiHno2FDoeHpBxA3iuGal24vCmAZukafBlAOeSXOzPfRDciQRPcySlvl0vEOhrs99MDZ4PwHKA3OPSxbpv90tw8gS/AwG7fXaYehl2r1S4jiIMBeQOtVTseFx5Gn5uFpvHTBOHJVA+iJEgwnfVrgKLguCcl7I/1W1QMOmkMXnUgP+WrTpvEcwLB7jjfQSl/ZFMbNTKQeXPWy7h/bFiiOLwfJToBk3YEQAVPr55Z9UHxXgCQ4/Oxy/ZCtiFd5hVKsBCb9eWThEgOoAo3f3LUOxnR4YoxxHxey4FnHPaxdMga7nX4f0TeSr+F8ULaLzIMH1CCQCUYvTiFDKn6z0/7nFvLSWntKy05BhUmnG3AHsw; 4:izKiETWgHgIZM7WUgOxLrfCPCePoyAau/g6+JFqAnFeItCb1iI5p+aCnxBjZvrC7Y7hzOMoCspDP91XTHc7OM4cu5FuOFB5buSbt6SCp48i2NOeMC02DyhNJYxiLv1xJ+EzIDavjpL0skBdBuXn5A6yNTcaINuAGg06X0XSjyP8fDXdZ000EqAkG2vV+XOaURmPW2K0Kpho1TRD5HDrCAJoqV13uxSiSfKRBlbaWELxehy+zrDuzcLtW5Wsgojuy1nhh1bCHUpuafU9As1bnQA== 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)(3231232)(944501410)(52105095)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:SN6PR07MB4221; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4221; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(39860400002)(366004)(39380400002)(396003)(189003)(199004)(97736004)(8936002)(53936002)(47776003)(58126008)(6916009)(6666003)(105586002)(2351001)(76506005)(478600001)(25786009)(16586007)(5660300001)(50466002)(6486002)(107886003)(72206003)(316002)(2361001)(33656002)(76176011)(11346002)(4326008)(186003)(16526019)(26005)(106356001)(44832011)(3846002)(6116002)(486006)(575784001)(446003)(8676002)(6496006)(23726003)(81166006)(68736007)(476003)(305945005)(7736002)(66066001)(81156014)(52116002)(1076002)(59450400001)(956004)(2906002)(86362001)(386003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4221; 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; SN6PR07MB4221; 23:MOZh2DJ7+Rp6VzbB+VCB5LdpQKsZDoxfP2Fwye3muKwypbcSKuEPdWdRBwgXF+vcy74eMAC9+R7jHET9StU55ozQcNDxsY3+bqQI04kCwyyywf/h29qZUUPZZ1ELsI2WnfnS2RwkcBklJ3t849PE8ikPu8UVlW6ULrnLrSkqLF5DMLlZTtluDnCYDaEda9wL5auAXivbUHN4G5OwetKp1vPBjEEixdUG3kdmgNOUbCKcCEQiDEFS3XrrJgQjsD/RnInmhRkLpktaTafTZ1whiM8eYLsXQSOeLm5S9ESdlg6x/f2mOhSrZt/19Uf6sj9JuZUpfVpW9APqOyAatMtelgTjbRZ8GGZo1gSupT7Yh1TCQYvVF9gMZfGRMaD502uc1QfF7YjOKgFKVfedSRmFpngb3zD+2uFBG/rC7yEBmD3AVPj65aDJRsJwD1yZk2i9iBfoz8fDOujnw/Ipy3eYWV2z/mZGdgJiXUCZ4zGVj7/vSYolZqqu54FsL+RQGNaFpknSpOF1N7s4lB5N7dY8mm6dpUCKivqSQpp7EmvqlSkwtlO/5qu7GLUIHWV6q/QMrzKVk0tZ2KPKW70JAKHuVIdRnlAZuKAznfoPaKucaP0iY0k6TTH6O7kkeX/05+3fTwLSTBTpLnrfCIDnEfqTjBSp/J5JgeVX090GMWMhN1IHGnXUYUvDCqd66lFRnnqPii6BX+halTeEAMTCpYl4m4NBLfdxBG2OLoGPZ75MJqqbpkCLSllttOIcTkWNFMFv4XoBS3kiI7iuD8ARFDxPrxBCqosM530vjpKsA6IMvjoEPHogRqr1OTso+Jf1G0fpU3fSqzgvYMI9nEPAz9wTuIEGJi4FVIIlyvnFcNKAkpy6J1ML7UvVj2FGdk1xQvzRcVLuNRgjzUGSiwD7rmqQ3Lnq3DvTew0kGwfPcgV37v756a8WrR8GQSfUPRpm2drCBoFcvQD7t4rK7kRFkYCnZS1GNcHpWPD77wQbEKKDOYxx+1IdJoCStmjURdMVvFMpMEjyrz2AQ68x/Wcwmq2lathQ/BRD+WF3s7+o7lJTfV6ytBK3XSUPsGADYQYIFgk0dTlocx5Y1diiNXbpDK9phZ/mAa4mez15EYW1hKhT5iGehB43ilUasi/3dRjWc9CmifrCBNrwhY7E6YT6pHUPYJ2pr9S6qjJOHmqn9RadhRQA1Zsd669Mzmb72vNAfcLHeAiDnkGa3GNnrhna1MQOOXmHFullZ4La7roRgm3sx7UvSdBgFHMgO4Rk+PSpnViVnxMFGY5RgLmRwHZWSbFzYkMqJtnHJ8bGmB6sn/Mt+zpD0PLic9Q9brhiBgw51UCbOEXEFzw+9rEb29u4eUyqrg== X-Microsoft-Antispam-Message-Info: Hv5Y9Do5wHKHau6z8CesEQW6teyqoozmDpLrYpNXPDaV0Fn4rOvzBT3S7piUdjME4fS1fJMrzIStsACGIT4RQ4RfS96XVNlcwYIMR7ma5+M1TgK0auZSJaV+fel+nAh0WyDo+nlmSd7MwhLcMFqHvDp6djQub9drrwtVviNiQT7dmBcimIcCbe3u8eHXqhoM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 6:HpAZc0iVGt10lAuGFEW3FtEgTIV6W4tlQPrJ1LX14k6BXXnn5UrVIHPPVhw7La7g6QfdUqdbPImvdlx9DwsYgc5xF3y74mb1+8NJwzFV2dyWOC19RYHG8cMzxvfeeCxGDZNHSm7bqnj/KjwUmbCEVfTSuZ6FVxGy+QOn/SOpHHBgq9vuUrGg/0D2wqYIfg2XEagNXcgIBliGF537p5UYl+8qdgUlxtCR+8Ofv6YcUZ2RMUUiY5MwVQauGZXcLVDmAaTLXlaJhc0n8Oggn/dzRzTwXGuiu2cojbTQ7NuxM+Xy8TxpG4FCl6f9aTZO5LKTn2HjJnWcsDX3C/2r2M0GoZC7QcgxrodbpqkUhvI3B9uWuqQiF4S4hj0jdxynhRf5AplyBpK30ADeYzcggKgVYRmbOzdRYuYkL3qCLcHn/fmxBK3zCgnyUk5KksWHmmXxtVzfE2tZp6s8PbI6xILMFQ==; 5:pCOA0HqG07X/R6g4Ud5EqqsxMJjl0/5LBOcR9sGgn1jdgnMHrZwvQ+TAF3vgi0E+U8+CKOtFhKXE7DBmyLr51gD/NsAkonRvMIZ8M8RGQCFQZ/i96nX9h1O8q1l74xpqLWn8TR6imICG/BZTzHjhep6CRqMSY+p2KKUyO/dktS4=; 24:UfljuEpDpnZ5Pw0XhQpM90yXBXZPK9YpQaa1KROivOIpPs+QfgjjGgnzIXm1ly9XTui+Yr2xzAwyJPOqnC5gGwjNSd0Y8dYfvwrXKI6gp84= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 7:JU87J6zJZUuruvVPm9L0nfmcJ39YKMwT36nkauqwvcPslGXjSTAyBbYmKVZFGG7Lv2Mt8kGhDkEIZ6pwfvMTOuLGv/Foo0cvR7i4s80DJ1IRAnpbegr7WA6qh16n+r7bc1cOD0c8jB9ZLZS6WIAFhqKo+mMoj35V5vyBzCthiOBhdWTdXvchZgEwK1JkiemuULCmEiFZLOP8HBv0ACc7aHdQyI4Su7gNzp95Mldf5pLaIvFYs1V39GralhUrFgfh X-MS-Office365-Filtering-Correlation-Id: e980be79-29aa-44b1-7eff-08d5aad9b136 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:49.8838 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e980be79-29aa-44b1-7eff-08d5aad9b136 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB4221 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