From patchwork Wed Jun 14 03:47:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9785247 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2DB6D602DC for ; Wed, 14 Jun 2017 03:48:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3DBF627FA3 for ; Wed, 14 Jun 2017 03:48:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3270B2858D; Wed, 14 Jun 2017 03:48:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4A63827FA3 for ; Wed, 14 Jun 2017 03:48:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754229AbdFNDs1 (ORCPT ); Tue, 13 Jun 2017 23:48:27 -0400 Received: from mail-dm3nam03on0068.outbound.protection.outlook.com ([104.47.41.68]:55296 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753926AbdFNDsM (ORCPT ); Tue, 13 Jun 2017 23:48:12 -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=fFPZZF+97XqRXzDs7xlgFxH2l5hIu2V4QqRtawfNrq0=; b=fReQbLJnjtyNG85J91ofyfplaaqkx0Sj0AN5Kk6mzYn68f7FHZDFZHTdmm0QAfeqtuOgtXGvXlmfvpr/dTGIzBKg/dao5N+kWXWtjTfOTDNa8ncmAEWUVMXqlGo+mpmEd2d6nZ6B9+3rgllGr0W3VITVX8J+vUImEpcaIQRDXrA= Received: from CO2PR07CA0052.namprd07.prod.outlook.com (10.174.192.20) by SN2PR0701MB1022.namprd07.prod.outlook.com (10.160.57.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Wed, 14 Jun 2017 03:48:09 +0000 Received: from BY2FFO11FD018.protection.gbl (2a01:111:f400:7c0c::189) by CO2PR07CA0052.outlook.office365.com (2603:10b6:100::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14 via Frontend Transport; Wed, 14 Jun 2017 03:48:08 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BY2FFO11FD018.mail.protection.outlook.com (10.1.14.106) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1143.11 via Frontend Transport; Wed, 14 Jun 2017 03:48:08 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Tue, 13 Jun 2017 20:47:56 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v5E3luHe015499; Tue, 13 Jun 2017 20:47:56 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v5E3luer015498; Tue, 13 Jun 2017 20:47:56 -0700 From: Himanshu Madhani To: , CC: , , Subject: [PATCH v2 09/15] qla2xxx: Add function call to qpair for door bell Date: Tue, 13 Jun 2017 20:47:24 -0700 Message-ID: <20170614034730.15428-10-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170614034730.15428-1-himanshu.madhani@cavium.com> References: <20170614034730.15428-1-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39410400002)(39400400002)(39450400003)(2980300002)(428002)(199003)(189002)(9170700003)(106466001)(87636003)(33646002)(8676002)(5003940100001)(5660300001)(81166006)(105586002)(42186005)(356003)(189998001)(575784001)(4326008)(305945005)(38730400002)(50986999)(86362001)(6666003)(80596001)(2950100002)(2906002)(76176999)(478600001)(50226002)(47776003)(101416001)(48376002)(1076002)(36756003)(72206003)(50466002)(8936002)(54906002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR0701MB1022; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD018; 1:mWLwaET/kJemMZ7b3pQkekwcOIkyUUX/Yo1flUyWmvqSoy3bQ5cHJWDR82p73OezT5eEro5j+YJWRkEualH2t9epZuraC6c/fG1upYJhLMhXuR/2v7QpSHh3+q/kWhhqpu8hDWpdAtmC4BT1EUm/8HG6KMUVToHme/21Kv8dUHcRfwWwEMdHCDFBfLliAh2C5vZEYAPTW/6e/C4pYJRH52Dd3DqeIsR9brfYftQptO4QrV3x2rs4SyOt/3z8pTlppioaRuZrDQe5z1/ftd0SvNMigkp99gIIfL2dAoA6uyQTPJseInEwyOfIBeGNRkOV53hNUDxOB8tyQI05KSvhqamxGtXlZ3rizTeM6z9X8Gph088ADqGHoTpoaS88rFixAiBf7SCcpwQUlMkGSXSqTTuiPdt1lwxOvwkNt1s1q7GCfIKcraGKekpHJ6XiTuzWevm91KudWYrpjwv86vgdejOU34n1vtTYlI33qPGNYwakouK5M/ZdNM8QbumqdwUefuGSDTqcHrP3YlQI74tc6A== X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN2PR0701MB1022: X-MS-Office365-Filtering-Correlation-Id: c689a29a-dac9-45e6-aeb6-08d4b2d82c05 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:SN2PR0701MB1022; X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 3:Px8TsFtm9B1VpiGA2eokBREYu6u3jk03tKBtk8bC0zG3sjkLHzujTqtH3PksfQLjssc/NFzfseimThjyfjBmkULnqg8X3H8w+iowIhLCpPg7Nj+JBM0g6dCritKcnn8fyOXysMbnu2WsAAojOeTruRLPoHTVlA0TydlZsqCoN/TscPb1s2Dj1yEcf3WOBO6fEF116ctKoRGGr8TrY8LwHf76TDWIh97iNsaRkEPtHZ4oDZflQ8I0bRu84aI8OmNvAiPW+tl+QvssEM8icdRKXJ2kT1dVMWKcQ3jMxYqUbdWY/jRISmk3Z4rvy+X1cewI5bRuB8uBb+0KtBMnEZsd/D8hxBT7fmr0VGxmVaU2u4zgftLlbViZa7Va2gcQDNhgA5QkeRS6aBy76dvu419lOfZNjKLg0f0cOIbQxeU+c4lmfXTtWiufoyZK9nopyZfWjefI7xN1M99Zl0UxuJWHs+v9NDVr4No/AkWKV4qFKMY5O6tYgUHSAXh2gjGcfleC X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 25:o0w3wdMmxLGg7+omX76v8zBlITYSxDvuG4Vf10AqHP9CmYgE1PDI83LjV1V36wg+IwW6DrMzbfsv4P/jBSEoXHhXvT0fA7KI3m0lTtMEFrAepHMRTRJb7TnNybZVZ7tJmWYlJnZbNu/MVKYuA6nlKSHPNF3K4b/vmxT7/eisWYSZ4cUo0HnsCkjwhGbIiZwFaw9BQaU6/EbVQYfQx1X0igXx3AiZITTttXBvEco1gJjbgGtNlzb5vI2TJzNsr1hRomdUqm2PQeyEs/N3r9UnU82Qb9jvpOUUl2v7ipS+YILqbIh+EnIf8IcfjZb6w9hEkwxnE0J3lY0ijSC0lBvWMQqaiNS9FL23ybhAmLnD4BZDpeAktnIo81RDcG6vj8yX12Zfh6vEwb87v0/kORj6ulE55dbXunySDJopPEIZS/rhzIk4GyHZADHo164szVcWF+d+QyvSoAgf4nZL31mt3o3Z+biXlu3v7JAkyW63wuo=; 31:R7iDFapC/XeOwrjOLNvNBaFboWrCW38UB3MD/UowAsBRUVxdPaIqR69fh2WM2ebqeGeNq6MYNbgdNduoo9al7xLH3e5rMjEiW/CPqwb7GORrXh+3yfDesn8+s88PhQvpIkPRX/UbQPj+fAcwwnUwSUUWfi9F4eLA+fL2Nxt4sBr7k13UyU2kADHHQAvDW0s4TAjZNXCwgbl7YwuaRlZ3leurtCcEC7AgPV95fDDil15cdMffoc1tZnYxtNJBhWEqSjsUGIh9Y2A1z328GHfHBx00WBjDufxu4AgJzSMQaiE= X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 20:KU0m4ENVt/oJohL/1H9lIa/0F+joRxn8lcSsH8PzEEahriASwpsBmiU6d5n6qY6vNZ/PgGaQK42J4Om8x9siTbtMC2kQbKeX2vJEwjNMA46y8BuIdMupLxsE/ycIBJ9cqibqJvyO40gebanqCIgKRdjrAVJR5Lwvr/K6EkxugHxX2q2HLxuKv1KnHfbn70kJgoSvAm2ri/H6XcOn6OqFg4Ftghd9/hbCU1EqMSduzLRxC1p63tNUYOd9yH8KYaWt3SCxIQ4iZUWS5XUua0xF1LOX2xY0DrjPoqCbdIx34Eqitgr33o29yaD7KDP+RWKRfYGvxYHursJXOMT1VNTZsX5JgWsaryS1gQL53h+NhCU9ZFWD1HojhhoIwhGxmvhvx8IGyyCCmo6NoX77ntfH95u0UUv5Qq/OAVm32XFkDGmHFgy5VjEv8l0o5wDXSmCepALEDwr1fZCxVjmikaqIdRzgRsKvjXznxcwKVBM/K0EaJDZCzgMr4wYdAqO3F6nG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(13016025)(13018025)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN2PR0701MB1022; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN2PR0701MB1022; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR0701MB1022; 4:BwMNCyDsjeS/tHd5WvqK2W77oNYRtw0g70YXqTcS?= =?us-ascii?Q?9XfjBuBwJmoVWRenv8easEGIVu2rC7+0q7R088L+SYLSnAmFeHRiY3KOzEVd?= =?us-ascii?Q?9UqAxuQgGVL6jLIhuqTJjpkcUBBFuUdWzZsR85zaeMh2Fw/17hSFPd1uERad?= =?us-ascii?Q?GaR18sqYdx44F3vCEyyVJe0ZcN2NIH//KMNviYUphD/dRh19+T7bvwFXQQOU?= =?us-ascii?Q?WfHMuNtdaw+oQipYHh5oWl7KJN8d7Gm0nK5nhD+BUmHeXahLxyRyHy91cME5?= =?us-ascii?Q?C1d8LBtjA/Is+R/SCWihjYkkiE0dQJqroKoq1imEUe2sJJbnF5FtjOeB3q+4?= =?us-ascii?Q?37J5OFCk2KoGdZm9M5nf3dHsfEa6davttBLs+pZFW98cTPNIMAQTTuDUZSOg?= =?us-ascii?Q?TwlrpyZ6YABJPFVZllF//XALeYJp2KqUFnDdHRW3Yt2XwEas+paSRQUnIH6W?= =?us-ascii?Q?9goaHXUloX2HzTe3/BbbmrQ0V5ZjHdOW6Iv7u5IgSvx2Z5YX+1p6FosvTU6E?= =?us-ascii?Q?DxvX64wMmrfN+gaQCSN0GEFVCyh4uZ1C/5tBvJcPXbyNwZHqgGK3sGli+nre?= =?us-ascii?Q?D98y4UFFholgHYh1NNLVtkjWuT1Pt+kwBWAj3EdMbTdq9u3FMA3jBgBw3WG1?= =?us-ascii?Q?v3MA0t1KbX3hb/bEVyIJ+c2zYJ1VrHNlx+fSf9F5Ola+oNm+PkVjw/uxDOWH?= =?us-ascii?Q?Up+kXF4TKg/q4askYQt1UVCDpiqKfQVfMEqLyxP7tTdDBPeHKiqJGH13pAq4?= =?us-ascii?Q?EcH9nfCPdFmPIvp/SeW+zhhmOrATtU9O0svc9SQfkJrvDo6clvd6WhEgvR8j?= =?us-ascii?Q?zJI+rtL88LW2Gq0YRZlAevw5uP5ruOIJy68GjmELUv9/ylSU/it07HMXQSHT?= =?us-ascii?Q?NQbyjZRfLk0auQgyx370Q6wYJNU+BRyAiqELKavHzLFmn1e4QARVq1hIA8d1?= =?us-ascii?Q?GoOpv3UFiLWzDVyuYMAZrBxObJbU5M1IFYrnDK+VWSRrlhifmnFRDxECSsGs?= =?us-ascii?Q?xjSmalH7SgLZmlPM29WH7uugJujOqgeyxW/eifYdKpDrow3vGGhEiBxeUu7Q?= =?us-ascii?Q?QzATo7VZV3T84SUH/X3qY8fdqnKlcz201w6T8OR53V+IImYyjWA7Ccw+QjnL?= =?us-ascii?Q?+gQ0Opq0rLApCbkZ6AxjqDvjfKiMiUE90jSuVbftrAwEblNHSiREVK098jJ4?= =?us-ascii?Q?K+VLYjrLDRx2jR0=3D?= X-Forefront-PRVS: 033857D0BD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR0701MB1022; 23:n9pt2BFvb+2KYaez0R4wsboLjJ4ZtHpHAYwvnjm?= =?us-ascii?Q?iZvRr0Wljt8U90yTeyz0OzsTN3FiZ0uXhJBULUocUyQ3+dIINdrBC2/VnBHR?= =?us-ascii?Q?zDWfwUWHITjty04hEcqM7BOSXyW08NaR83kFu1t0hHk8rqL7S2HIRX+ibghh?= =?us-ascii?Q?I5YmzXEjVDAz8bqfZ7i7Ewf4m8X/ttsjGURT4IYf6ci9XkYb5TAVwHISV923?= =?us-ascii?Q?dL57zvC1nEGURUNtAbQNneH5CLTMS+paTTCr4TEKgPdDzCawMQWr6xllEfLh?= =?us-ascii?Q?31t57ElIyahKmt1usBd1dC/oyIRyQs9uSHf2dtvfVq4AWdJXc0cpFzkN8r8G?= =?us-ascii?Q?4Es6/flosIgl/puSqFCh6WB2MVL3QCQjHU653YReB4wq5dqyB2R0xWqtK3RF?= =?us-ascii?Q?VcuggPs7bUvzBeO8GpUDvyK6lPPQhWB/Oy/BvOAU35c2I0iqj+lR4dQspkOj?= =?us-ascii?Q?0hoRerJC/IEcJMAvFR8/tpZnnysaN40E1EKJFHetYrK6OZo2Y679ia8n8gz1?= =?us-ascii?Q?UukAdeowcFEDzVENet5/ryhJeUtBvSorcYU07Oxiatra474yHasp/dCzzgmj?= =?us-ascii?Q?BW7ToO32qAkQLNHsyy5ZfUll6HusZD1uvn9EcJjFB1wh5WLLhZDSt2Uy4+Gs?= =?us-ascii?Q?tWbXVHuF9EKWZT4YXXeNteHKVlnMqkc1W8N3XXMh2HtlaB4+rFY7A5/yPXj6?= =?us-ascii?Q?0hb/oGK99dcOROf0ZqwHE5oSE3IE7J//c0bO5oIh+SbkCBh99/THrSps4Y6r?= =?us-ascii?Q?idEzgdC6k2wDIvEoTbH/qkp8POd005C6cg3s1nazW7HKdpClSBsG9vYOk1bB?= =?us-ascii?Q?ReydUyz8lDyXbgWdRX61RoTvgbaE4K/Rz+tToR5lujqGCfz9hdzEGi2kd3w0?= =?us-ascii?Q?x2fNQlXDAQuhbZPskhdVPCzmGaREO7DrD9BUENyzkbHiBL/CNzZ5miA4M5/t?= =?us-ascii?Q?C1ZxXV+pE/EE9sfa/rBntAbKlCPS6szMdAJng5mkRZZ78zHa/+SmjkqK8sl3?= =?us-ascii?Q?K1itCaQa9OA/uqAXUWjHfu/N4d8DNZJYUIyeckuVKxFEKTyyyDPXAs9Oc8nH?= =?us-ascii?Q?FK86ekfs=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 6:8+BajMf2VbvXg3RJgIl57tz9r+mW6Hd3AsOpUK0lCSe3o0xSK1/XLxHsIuPjqG41kIcMvhQUn4nbzYuVEFk+qTP+cdRoQt4p48FWlsX1juCeQDKaZjgg/vQ3DwQ1DQFKw90hF+FaWoxnrqKKe9UeVczX7lwTsqu0R1Dtm5EvB8ojF27cdUa+HUOyrsTZF3qKRCxVZ2tGIK3kf19exVLDb5kA2Z9rP3/5kbYQhoyZsIVptRS3sOHFQiSbe4GqC0MMBCuhQT2m1f0NTz7x6YXg+fnOPZtFv19vOQX5hgvWy5/zCmyjGnc8Qezm4EJHKcAACvKcGCte9IUXuEVhydd9g4tUUgTuVf/Qo3w9p8fcWuv4hfu0a2KnIYpXqjuV2ANo+Xm/86jk3yl1WnLSdSy3eN2t7KYNQq8NoO645k6lNL91eN7xDrQZfB/kReMyhmw63I8ivM7nYeB3I6pUxPyUBXAav1KqH3IgLvqCTGHZ/VszCAxdgsAeT4Osc8wK72mAhpChOF8ycwEDyHhVYa3Ceg== X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 5:ly+E6J6sBwHlZJ0a+e2XWnRMOBcXMmp+DcRPc6fnt27ZseLSM9c40crINSu1EsD9cDLbV6K8k4RuaAn03+qn15XPy7Vidpzf+aWO8qAt6FmXJA4y3ON2evoY5t3BzIYFfnByWL/IO/bsn48vJa9uW+9+Ko+WkgB8pa2nvE+SiMx36ncwiVQlQdP0KdNiNf4myUlo8Ak3xyIgpyVXSlD0oa3OzKR9k0PGmbdgq5UrEpuN/c5NNMKkOvTRMK2UaWsN5SkhospPEAJNeQ8zCRS07IaHevKVusAARsePlcapUqVR5xv9hc+oZlgG6ODfqI4+r2Px3zezQLWtEgp6VwPZtR45Xu+kGdKbZgcQCUctCjb0zuHNM5BQjiUXkU0A0CHnF6S3lsiUHwchVxMKPg/PoCYBtP/Xq+7LeTcfF0+yZ8UORRFk3lfk1kccL7RBcU6+ioDephdOjBC0J3j8klVUqWc7ScDf2igM4JmgxYtgZypgCYpqj1f2SXB17HCe8Cmk; 24:2zwEaHuAMsc8RV2OOKrB3rPqyJyt6AsDHILTYq5wygPdtd5N+3ORGDlrJeGuh8ngbkoGSQC0Yq5+gWFL7T1xgL2t72STi4WdUxrZbHV39HA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR0701MB1022; 7:pHR4qOTCw+HEWEHy0fnPXlqaz6wHJcPEDCD953j57W8bb873PEOc0SPFvVqa6k1+gDtHE6ogpkQMv85dhgfltPxOWueU8+QNw5eooaH5ORlLGCZBYfGWGJT7wT+a8+5mCfHJZZkqS7eRWlmAfeQBvDWCqrT3V/pAqwsf09Xu1OdKfLg33dA8+QsQoh+Iqtw5rQ+63ccia23uQSozO3sKZX4qeYERqhJdTcw0a73TFWX1zCZXkYbogw+9KrDBjOC7uc+x1tOETohHEWwx+dlSUxdgBOx+SRLds+Uvhn2hM+ZRpW0M69/qBJ+ntebv4HrHIW0RBQL+sedyHovqyMybWg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2017 03:48:08.5148 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR0701MB1022 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Quinn Tran Add call back to door bell for qpair. This help reduce access to qla_hw_data structure, in order to reduce cach thrash. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 3 ++ drivers/scsi/qla2xxx/qla_init.c | 3 ++ drivers/scsi/qla2xxx/qla_inline.h | 15 +++++++++ drivers/scsi/qla2xxx/qla_os.c | 35 ++++++++++++------- drivers/scsi/qla2xxx/qla_target.c | 71 +++++++++++++++++++++++++++------------ drivers/scsi/qla2xxx/qla_target.h | 2 +- 6 files changed, 94 insertions(+), 35 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index b3ba32773db4..17b13dd92511 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -3272,6 +3272,9 @@ struct qla_qpair { uint16_t vp_idx; /* vport ID */ mempool_t *srb_mempool; + struct pci_dev *pdev; + void (*reqq_start_iocbs)(struct qla_qpair *); + /* to do: New driver: move queues to here instead of pointers */ struct req_que *req; struct rsp_que *rsp; diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index f586f4f7dc57..48c0a58330d4 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -7653,6 +7653,9 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos, qpair->msix->in_use = 1; list_add_tail(&qpair->qp_list_elem, &vha->qp_list); + qpair->pdev = ha->pdev; + if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) + qpair->reqq_start_iocbs = qla_83xx_start_iocbs; mutex_unlock(&ha->mq_lock); diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index bd8cb796f64e..9a2c86eacf44 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -352,3 +352,18 @@ qla_qpair_to_hint(struct qla_tgt *tgt, struct qla_qpair *qpair) return NULL; } + +static inline void +qla_83xx_start_iocbs(struct qla_qpair *qpair) +{ + struct req_que *req = qpair->req; + + req->ring_index++; + if (req->ring_index == req->length) { + req->ring_index = 0; + req->ring_ptr = req->ring; + } else + req->ring_ptr++; + + WRT_REG_DWORD(req->req_q_in, req->ring_index); +} diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 1d66954b7e5a..88e115fcea60 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -351,6 +351,28 @@ int qla2xxx_mqueuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd, struct qla_qpair *qpair); /* -------------------------------------------------------------------------- */ +static void qla_init_base_qpair(struct scsi_qla_host *vha, struct req_que *req, + struct rsp_que *rsp) +{ + struct qla_hw_data *ha = vha->hw; + rsp->qpair = ha->base_qpair; + rsp->req = req; + ha->base_qpair->req = req; + ha->base_qpair->rsp = rsp; + ha->base_qpair->vha = vha; + ha->base_qpair->qp_lock_ptr = &ha->hardware_lock; + ha->base_qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0; + ha->base_qpair->msix = &ha->msix_entries[QLA_MSIX_RSP_Q]; + INIT_LIST_HEAD(&ha->base_qpair->hints_list); + ha->base_qpair->enable_class_2 = ql2xenableclass2; + /* init qpair to this cpu. Will adjust at run time. */ + qla_cpu_update(rsp->qpair, smp_processor_id()); + ha->base_qpair->pdev = ha->pdev; + + if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) + ha->base_qpair->reqq_start_iocbs = qla_83xx_start_iocbs; +} + static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req, struct rsp_que *rsp) { @@ -378,18 +400,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req, goto fail_base_qpair; } - rsp->qpair = ha->base_qpair; - rsp->req = req; - ha->base_qpair->req = req; - ha->base_qpair->rsp = rsp; - ha->base_qpair->vha = vha; - ha->base_qpair->qp_lock_ptr = &ha->hardware_lock; - ha->base_qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0; - /* init qpair to this cpu. Will adjust at run time. */ - ha->base_qpair->msix = &ha->msix_entries[QLA_MSIX_RSP_Q]; - INIT_LIST_HEAD(&ha->base_qpair->hints_list); - ha->base_qpair->enable_class_2 = ql2xenableclass2; - qla_cpu_update(rsp->qpair, smp_processor_id()); + qla_init_base_qpair(vha, req, rsp); if (ql2xmqsupport && ha->max_qpairs) { ha->queue_pair_map = kcalloc(ha->max_qpairs, sizeof(struct qla_qpair *), diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 1d6cc24c0640..f18a50867119 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1728,7 +1728,10 @@ static void qlt_24xx_send_abts_resp(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); } /* @@ -2058,7 +2061,10 @@ static void qlt_24xx_send_task_mgmt_ctio(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(ha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(ha, qpair->req); } void qlt_free_mcmd(struct qla_tgt_mgmt_cmd *mcmd) @@ -2071,12 +2077,13 @@ EXPORT_SYMBOL(qlt_free_mcmd); * ha->hardware_lock supposed to be held on entry. Might drop it, then * reacquire */ -void qlt_send_resp_ctio(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd, +void qlt_send_resp_ctio(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd, uint8_t scsi_status, uint8_t sense_key, uint8_t asc, uint8_t ascq) { struct atio_from_isp *atio = &cmd->atio; struct ctio7_to_24xx *ctio; uint16_t temp; + struct scsi_qla_host *vha = cmd->vha; ql_dbg(ql_dbg_tgt_dif, vha, 0x3066, "Sending response CTIO7 (vha=%p, atio=%p, scsi_status=%02x, " @@ -2127,7 +2134,11 @@ void qlt_send_resp_ctio(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, vha->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); + out: return; } @@ -2205,7 +2216,7 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) BUG_ON(cmd->sg_cnt == 0); prm->sg = (struct scatterlist *)cmd->sg; - prm->seg_cnt = pci_map_sg(prm->tgt->ha->pdev, cmd->sg, + prm->seg_cnt = pci_map_sg(cmd->qpair->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); if (unlikely(prm->seg_cnt == 0)) goto out_err; @@ -2232,7 +2243,7 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) if (cmd->prot_sg_cnt) { prm->prot_sg = cmd->prot_sg; - prm->prot_seg_cnt = pci_map_sg(prm->tgt->ha->pdev, + prm->prot_seg_cnt = pci_map_sg(cmd->qpair->pdev, cmd->prot_sg, cmd->prot_sg_cnt, cmd->dma_data_direction); if (unlikely(prm->prot_seg_cnt == 0)) @@ -2260,21 +2271,24 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) static void qlt_unmap_sg(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd) { - struct qla_hw_data *ha = vha->hw; - + struct qla_hw_data *ha; + struct qla_qpair *qpair; if (!cmd->sg_mapped) return; - pci_unmap_sg(ha->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); + qpair = cmd->qpair; + + pci_unmap_sg(qpair->pdev, cmd->sg, cmd->sg_cnt, + cmd->dma_data_direction); cmd->sg_mapped = 0; if (cmd->prot_sg_cnt) - pci_unmap_sg(ha->pdev, cmd->prot_sg, cmd->prot_sg_cnt, + pci_unmap_sg(qpair->pdev, cmd->prot_sg, cmd->prot_sg_cnt, cmd->dma_data_direction); if (!cmd->ctx) return; - + ha = vha->hw; if (cmd->ctx_dsd_alloced) qla2x00_clean_dsd_pool(ha, cmd->ctx); @@ -2324,7 +2338,6 @@ static inline void *qlt_get_req_pkt(struct req_que *req) /* ha->hardware_lock supposed to be held on entry */ static inline uint32_t qlt_make_handle(struct qla_qpair *qpair) { - struct scsi_qla_host *vha = qpair->vha; uint32_t h; int index; uint8_t found = 0; @@ -2349,9 +2362,9 @@ static inline uint32_t qlt_make_handle(struct qla_qpair *qpair) if (found) { req->current_outstanding_cmd = h; } else { - ql_dbg(ql_dbg_io, vha, 0x305b, - "qla_target(%d): Ran out of empty cmd slots\n", - vha->vp_idx); + ql_dbg(ql_dbg_io, qpair->vha, 0x305b, + "qla_target(%d): Ran out of empty cmd slots\n", + qpair->vha->vp_idx); h = QLA_TGT_NULL_HANDLE; } @@ -3189,7 +3202,10 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return 0; @@ -3264,7 +3280,10 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return res; @@ -3282,7 +3301,7 @@ EXPORT_SYMBOL(qlt_rdy_to_xfer); * it is assumed either hardware_lock or qpair lock is held. */ static void -qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, +qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd, struct ctio_crc_from_fw *sts) { uint8_t *ap = &sts->actual_dif[0]; @@ -3290,6 +3309,7 @@ qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, uint64_t lba = cmd->se_cmd.t_task_lba; uint8_t scsi_status, sense_key, asc, ascq; unsigned long flags; + struct scsi_qla_host *vha = cmd->vha; cmd->trc_flags |= TRC_DIF_ERR; @@ -3370,7 +3390,8 @@ qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, } spin_unlock_irqrestore(&cmd->cmd_lock, flags); - qlt_send_resp_ctio(vha, cmd, scsi_status, sense_key, asc, ascq); + qlt_send_resp_ctio(qpair, cmd, scsi_status, sense_key, asc, + ascq); /* assume scsi status gets out on the wire. * Will not wait for completion. */ @@ -3525,7 +3546,10 @@ static int __qlt_send_term_exchange(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); return ret; } @@ -3883,7 +3907,7 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, *((u64 *)&crc->actual_dif[0]), *((u64 *)&crc->expected_dif[0])); - qlt_handle_dif_error(vha, cmd, ctio); + qlt_handle_dif_error(qpair, cmd, ctio); return; } default: @@ -5121,7 +5145,10 @@ static int __qlt_send_busy(struct qla_qpair *qpair, ctio24->u.status1.scsi_status = cpu_to_le16(status); /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); return 0; } diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index 5f497311d7b7..30a389445de4 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -1097,7 +1097,7 @@ extern int qlt_free_qfull_cmds(struct qla_qpair *); extern void qlt_logo_completion_handler(fc_port_t *, int); extern void qlt_do_generation_tick(struct scsi_qla_host *, int *); -void qlt_send_resp_ctio(scsi_qla_host_t *, struct qla_tgt_cmd *, uint8_t, +void qlt_send_resp_ctio(struct qla_qpair *, struct qla_tgt_cmd *, uint8_t, uint8_t, uint8_t, uint8_t); extern void qlt_abort_cmd_on_host_reset(struct scsi_qla_host *, struct qla_tgt_cmd *);