From patchwork Fri Mar 16 17:21:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 887051 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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="JqKlCGlq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 402sh74Ythz9sDr for ; Sat, 17 Mar 2018 04:21:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753029AbeCPRVj (ORCPT ); Fri, 16 Mar 2018 13:21:39 -0400 Received: from mail-by2nam01on0085.outbound.protection.outlook.com ([104.47.34.85]:33504 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752452AbeCPRVg (ORCPT ); Fri, 16 Mar 2018 13:21:36 -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=ka2dvnfj2UkM0fVzhSvrrPKFimNUdLw4WweUh3TUqXk=; b=JqKlCGlqhMZYqmBevgLgTf00egOZB+0uaSWo4W18ZSDYmaublMsQls1CaMrXS8MzWAfXIYzYvd36myp/ZB2aZuZaGVG7IbIwToZIDtc0T/lrxcJdT9LYkoWso1R0xSdDXbx1lofp0flAK/T3O6tZHkdX4hvPC2aAvVr7SGxZzRs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by DM6PR07MB4217.namprd07.prod.outlook.com (2603:10b6:5:bd::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.14; Fri, 16 Mar 2018 17:21:34 +0000 Date: Fri, 16 Mar 2018 10:21:31 -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] liquidio: Simplified napi poll Message-ID: <20180316172131.GA2285@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO2PR05CA0076.namprd05.prod.outlook.com (2603:10b6:102:2::44) To DM6PR07MB4217.namprd07.prod.outlook.com (2603:10b6:5:bd::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 35e7eaac-025c-4c9d-3358-08d58b625e4d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB4217; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4217; 3:9UAkwoYoKTwXPQ63xOUkM63NFRpeHzHeD2I9Pt/rIRFovDVQF96jeiWGpwycb3DWYeWUze6nfB6J5zJ25kXLpGVtv52/IdBqv7c/Tq37v328W+wu2EnNjfaOLepCdvozZJ9j21r2U9QsnKSPw1mrLFNUWM5f4fln0OJnmwLOuZG4XXcUuqsXQDiXEDVHaIV0pr/YLoSn2UZCZKX/5kN+9YA6VlUJQYjetBYB7g2EsRiLUS4gCFHaB6sRMRtj3rYJ; 25:dNXozWkSJSa+m/3zWZufpPDKeBJJB9R8FcZftmHc2hwJBM559wb/MTbiOHSqDLsNCWpchZXWmLVOwzs69TxFgjl7GIX7QS3MingnCBebVeAZ2p3TmGPiZ/uMMjmmIQHeXaKosNyJli8YUNF6BV/dFme/j3MPqt2Cm3Sa0rU0RfcNmA8rLooDDMYiDua/iJZW8r8tjJBoLSWUzQCXb+x/oyPWLQrAwqKTcalXTtf2cSJDEG3Ls+JQ9jhZYMAjB9Eu9UIpS79QOPxiPH80bRqWFKoDR0Bz28ZfGSahVr2/8+yxD+vHMgocXyBDOD+hVhroEEFWfpfRqbaqtgD/filiAA==; 31:aa40nK8IPfyk+L33WlKbToR2pUYoj1Mxm2HyXJiHIR+AN5l4AB2aC8Xu1OGY772deVu72wy7Lr6+p79/SuRO32sRV2yKxwTfZNmeyRePRoQhGqyAi2KbJ3ubcFGlBXrt+bSouYGBA4G2QaTk4BZBVxyTw8J84lXXIZKifqHy5Q6lcqmkjtL5lNXV+totLwwFjzX12/N6UH0r8wP/C/LVv3nsDPt12pNTWIvc6fgpE0E= X-MS-TrafficTypeDiagnostic: DM6PR07MB4217: X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4217; 20:h7aA6Fv6f0fC4NGeNY+/+am0n9kAxYTFo+hoenczcQ6Da6NuZBUNlBph5swBHDT8/yteCzyr+7CLSfjdokKqKDFgwZ49qEzlYyXvsGmdSttRXbsmIDPXanxRv3dz8ApS+p1Z1dSM5XP/b8XdCsFe5H8s2mPrDQNxq7VKqgTo/oSdfr/73OUl2str8dodMYGliwFJkkLxTCVoFbgTTuOL4yl6ifNiWlwf+LsCjq4zSvHKwaTJMVJO0+sEbD/6YFX2StIyiVj4RuRJQRNt8ygX12wUSsfErfnLSDOfxDXD6S4zT5K3FFRhpclHchM6GMxtEULHbBdA4ueWZAalimeltE9cq4fDhV5DSUsz3Qj18s8sW/hG1sXFl8bRTHpEbr30PDRndWfg3YEqzk3q7YZM2ScLbWnqUFZhN2EVvrTnQfF89yaWQ4zLe78QJCg9qJw1SbBKkU2WI/d5c5+A6CkbewdcXgkNKUy0bjAs2rQb4E4+Du//+fysSI8LAoELnzrq; 4:qZBvvnyilqxlEyNeDvOZbMltj9lTGrld58IvNGdIeYtrSXRKsSgJlySsx/alebIGX18XCFk7EUpE4YvfpVndLIbiEUI6D9BTs2WadEbioLL41iVwvszeUvBxUVrb3oERkrJ7mFBeDxtpOPH6W3funv9/ZgQY71iXFRAaA8PvdeTLROBMKxacuxa0ySJcbAp8OFABdUgCt6cnVLoEBT5eIa7PgOFWGWggRgbqQj+CxzSrAgG6rzkfQo5uDeEzDTXv9o60DKSjzgB3ByJgNt8WPg== 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)(3231221)(944501244)(52105095)(93006095)(93001095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:DM6PR07MB4217; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4217; X-Forefront-PRVS: 0613912E23 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6069001)(346002)(396003)(39380400002)(39850400004)(376002)(366004)(189003)(199004)(72206003)(47776003)(105586002)(76506005)(23726003)(16526019)(8676002)(478600001)(186003)(3846002)(107886003)(6116002)(26005)(53936002)(58126008)(6486002)(386003)(6496006)(25786009)(97736004)(5660300001)(33656002)(6916009)(7736002)(52116002)(305945005)(316002)(6666003)(106356001)(59450400001)(16586007)(66066001)(4326008)(2351001)(2361001)(1076002)(81166006)(81156014)(86362001)(50466002)(68736007)(8936002)(2906002)(18370500001)(21314002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4217; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4217; 23:oQ8XkVf8MubJVNhJ6VLv04z3jMsD9nY6Z2x5LvGC/FK8fvgvgy9nU4WWvwJbl8fEXTZQlsvLH1tiTvTs6Et0ksZGPK9x1clG5Yvoxto2oHQHflac1Qs3HYn2LeH3LDURQwkHz9mI9MNeNwKHEQQoo94nJ5JcvI9orDnDo4OwlcrWstPAF72RQ67ZeJcGc4Ig9FaIs8/yrnkYNCn3jGETEi02AfHdH0hbmlJMuDdHbfFrh57/ETiYpDCN6ahRlz5rIn2vr37FcEMQNclbuTLW6g/aFP0FNJ2KGiEzXihODZ1gi5B/X9r94hlipfDUWat9WIMdrw/AwkJaFV0Yzc70JWy2KugB/4/xC3WsoW/1du7ZA/IUL5NsVErZBPQHQ/Av1AhIIGqgIfC08Z9pZbQ9MielqR6uGEdVJrjb/QkQgtd7qNH8UccVaPivJEzFpsN8IUWqEUrQxuPVDR91CM54JDsFND4wn+N9nGs1OBlO4IhMYfSDOZvLSP6DljxpOCbRqQaSXouXfF7Y0uerQI95onGKsQl4la/B8JotxB/0hgw5g4tq/U5yOmbZ2/Jhe+8u69covfXs2SGIUx17bqHLByqG08Ek3U5wS20xHtJDBl3ji8WbzyScN976EQGlrjsoSAMm1FS/V/03/SJebSI461Yh/DWXZOwo/IsWZ5Eq7kS/VoRwV89d9oX979wMBdrW1DuSYB3Xee29PILjSkITnetagajIA0SjoiAO2BJedFG2XgRUsI3NBFFu8w14/o8Kfw8V4J5501ODoSkgsPWyvnN4FK+6WomeAv6LGNvAIoB6DT1opZ/wAL8wVkFuVi2ztZPe8Ebpf849Cwlk4s0FIXD63J1HiSh+ZIErsFpo4RmKWRHko3jOpP94ubhX4bTTTedlibbVDdQBOZP82Xj4ybqa+MyFI1ETGLuuG1YR2yz4D1TGQ4hm/1SvLG19cmnm/4bKjreX4Vv+sOguGYozNqSptyaRzWdXUtWHNeM+OGKH1NaxWGGv5wWV7Xie9dte0hqP2YU/aP7+/0tEt8PrchJgIz8y3ig58jlcv6KCD9dIcDCDUToxNAAIgGtb4wjLi7lzVsqN9/lIZa0ie+jTXRej0cbG2FJwsuxulJREV12OeGx0WGenP8vugoXzyObet+3Rdmmcgna/m5gmpUjbAXB0mZGWRdVL0yr0pS+cyDPLAt50Ewq4Z6AO6oKuYSyVQJOG7pFpWHE0TEwayuO81++60kWTiALMlE/MHeg7SEyaw+VHmicS1JvU5KcO4r09ZviFI7fuUxugJlMxvSmbcNvqLxxoSNE5+kcePlUgOFUpDQif2ri4yQmyck/7edwW X-Microsoft-Antispam-Message-Info: QBPjkM9oVRRNhGZRvt68hcUAL+xW/jH8XoqYOjw0y2r+YvlRvle4FEZiN3X1der//aiJvBMIJZFXeE9pmd+V3sc4DdFpMr51eVs3akehc+yQ2p72tlYrPQJKMcqJwcwXfSmxsymd3S0EN8Aegyc1B7iaQgeU0sqp+tLvAnBFUYjHZ9IDI2KHzDWWSmC2Ddbo X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4217; 6:XEBDpqRbtlJMbL3wrCzCPaCTvhoo2O0pnmybdE4Gb0wFXBGa9bC5QctniFpx9IPWl3G+mbaYc8SpIwIcAnQzIFfRRi5SJbNIUvvgP/Ll3kxp1UjYOiyM/mMu+Yyt7hbgdQMlqSk8uSQxUOeUM7sbjEPzZdi11CLk30ftz6QOJAHN1AHbHHTPgYHgpjJvrwyWJMPNUwfXTCL7RxFJaD0fwKLgS6/98CVKf/E/4jE6RIdc06zKSiTSM+1LGBltZZ8gXpvy3zCNiO/Xi1VO4AYmfpBjEBaV5A0vZVWeDPrHknXgVpNzTHHvbNEGOMSm/cphqkBrZ3cHkG4vBCiQ4U6IosmbxqRxNdAmxgsWl7KbofM=; 5:oziWkUeoxe4A7kgscidfmsvHCmvQigHtnZZwtGAGWIG1eHXonkrl4xijpj7rSNY5RdT+hVW26WVeaJU90xgyRKZi3P92om2RjJqs9DlCwW0doEZAZgOWBQNkKmb/9sXI7UAFZyeGjGUknjHStRtJ5oWLeclcBWfnGvDO0f4wyh8=; 24:2BY+6cUAU7FAofTtC9dunZ24PNqa7CkE2nuYC8BuJWRRhmEns7DqXn+fDqwr/qpcnanh3DiQTpDcoNPCAAH4jp1/QriMmTeNxRboF9lk0FY=; 7:9QTkeDEXEXvQz6moWD1kRipArZLcdxVXldSp4Nt9jQguRMdAy2H/GWRAslUyLnsHJDi2CmpdY7rAQrbcDMkT2RCsxfKEu+xG/Q6GYMZ4aOLXqaRfRNN0I2HSu1ILQfGreOnMayMWxXXOWQg0k/RgfZCjV6NEpi6NSG3hsawHiSMZ06Cj9NPxzS9DGgme1T+LyrzdLa9SK0JkCuRvOCpN321i/liilE+eeLu5lapyszsG9vKXWxoJt174fkB5h9Z2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2018 17:21:34.6404 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 35e7eaac-025c-4c9d-3358-08d58b625e4d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4217 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha 1) Moved interrupt enable related code from octeon_process_droq_poll_cmd() to separate function octeon_enable_irq(). 2) Removed wrapper function octeon_process_droq_poll_cmd(), and directlyi using octeon_droq_process_poll_pkts(). 3) Removed unused macros POLL_EVENT_XXX. Signed-off-by: Intiyaz Basha Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 7 +- drivers/net/ethernet/cavium/liquidio/octeon_droq.c | 83 ++++++++-------------- drivers/net/ethernet/cavium/liquidio/octeon_droq.h | 11 ++- 3 files changed, 35 insertions(+), 66 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 8bb4cfb..84f6594 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -636,9 +636,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget) iq_no = droq->q_no; /* Handle Droq descriptors */ - work_done = octeon_process_droq_poll_cmd(oct, droq->q_no, - POLL_EVENT_PROCESS_PKTS, - budget); + work_done = octeon_droq_process_poll_pkts(oct, droq, budget); /* Flush the instruction queue */ iq = oct->instr_queue[iq_no]; @@ -669,8 +667,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget) tx_done = 1; napi_complete_done(napi, work_done); - octeon_process_droq_poll_cmd(droq->oct_dev, droq->q_no, - POLL_EVENT_ENABLE_INTR, 0); + octeon_enable_irq(droq->oct_dev, droq->q_no); return 0; } diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c index 3461d65..f044718 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c @@ -788,7 +788,7 @@ static inline void octeon_droq_drop_packets(struct octeon_device *oct, * called before calling this routine. */ -static int +int octeon_droq_process_poll_pkts(struct octeon_device *oct, struct octeon_droq *droq, u32 budget) { @@ -835,71 +835,46 @@ static inline void octeon_droq_drop_packets(struct octeon_device *oct, return total_pkts_processed; } +/* Enable Pkt Interrupt */ int -octeon_process_droq_poll_cmd(struct octeon_device *oct, u32 q_no, int cmd, - u32 arg) +octeon_enable_irq(struct octeon_device *oct, u32 q_no) { - struct octeon_droq *droq; - - droq = oct->droq[q_no]; + switch (oct->chip_id) { + case OCTEON_CN66XX: + case OCTEON_CN68XX: { + struct octeon_cn6xxx *cn6xxx = + (struct octeon_cn6xxx *)oct->chip; + unsigned long flags; + u32 value; - if (cmd == POLL_EVENT_PROCESS_PKTS) - return octeon_droq_process_poll_pkts(oct, droq, arg); + spin_lock_irqsave + (&cn6xxx->lock_for_droq_int_enb_reg, flags); + value = octeon_read_csr(oct, CN6XXX_SLI_PKT_TIME_INT_ENB); + value |= (1 << q_no); + octeon_write_csr(oct, CN6XXX_SLI_PKT_TIME_INT_ENB, value); + value = octeon_read_csr(oct, CN6XXX_SLI_PKT_CNT_INT_ENB); + value |= (1 << q_no); + octeon_write_csr(oct, CN6XXX_SLI_PKT_CNT_INT_ENB, value); - if (cmd == POLL_EVENT_PENDING_PKTS) { - u32 pkt_cnt = atomic_read(&droq->pkts_pending); + /* don't bother flushing the enables */ - return octeon_droq_process_packets(oct, droq, pkt_cnt); + spin_unlock_irqrestore + (&cn6xxx->lock_for_droq_int_enb_reg, flags); } - - if (cmd == POLL_EVENT_ENABLE_INTR) { - u32 value; - unsigned long flags; - - /* Enable Pkt Interrupt */ - switch (oct->chip_id) { - case OCTEON_CN66XX: - case OCTEON_CN68XX: { - struct octeon_cn6xxx *cn6xxx = - (struct octeon_cn6xxx *)oct->chip; - spin_lock_irqsave - (&cn6xxx->lock_for_droq_int_enb_reg, flags); - value = - octeon_read_csr(oct, - CN6XXX_SLI_PKT_TIME_INT_ENB); - value |= (1 << q_no); - octeon_write_csr(oct, - CN6XXX_SLI_PKT_TIME_INT_ENB, - value); - value = - octeon_read_csr(oct, - CN6XXX_SLI_PKT_CNT_INT_ENB); - value |= (1 << q_no); - octeon_write_csr(oct, - CN6XXX_SLI_PKT_CNT_INT_ENB, - value); - - /* don't bother flushing the enables */ - - spin_unlock_irqrestore - (&cn6xxx->lock_for_droq_int_enb_reg, flags); - return 0; - } break; - case OCTEON_CN23XX_PF_VID: { - lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); - } + case OCTEON_CN23XX_PF_VID: + lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); break; - case OCTEON_CN23XX_VF_VID: - lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); + case OCTEON_CN23XX_VF_VID: + lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]); break; - } - return 0; + default: + dev_err(&oct->pci_dev->dev, "%s Unknown Chip\n", __func__); + return 1; } - dev_err(&oct->pci_dev->dev, "%s Unknown command: %d\n", __func__, cmd); - return -EINVAL; + return 0; } int octeon_register_droq_ops(struct octeon_device *oct, u32 q_no, diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_droq.h b/drivers/net/ethernet/cavium/liquidio/octeon_droq.h index 815a9f5..f28f262 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_droq.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_droq.h @@ -123,11 +123,6 @@ struct oct_droq_stats { }; -#define POLL_EVENT_INTR_ARRIVED 1 -#define POLL_EVENT_PROCESS_PKTS 2 -#define POLL_EVENT_PENDING_PKTS 3 -#define POLL_EVENT_ENABLE_INTR 4 - /* The maximum number of buffers that can be dispatched from the * output/dma queue. Set to 64 assuming 1K buffers in DROQ and the fact that * max packet size from DROQ is 64K. @@ -414,8 +409,10 @@ int octeon_droq_process_packets(struct octeon_device *oct, struct octeon_droq *droq, u32 budget); -int octeon_process_droq_poll_cmd(struct octeon_device *oct, u32 q_no, - int cmd, u32 arg); +int octeon_droq_process_poll_pkts(struct octeon_device *oct, + struct octeon_droq *droq, u32 budget); + +int octeon_enable_irq(struct octeon_device *oct, u32 q_no); void octeon_droq_check_oom(struct octeon_droq *droq);