From patchwork Mon Dec 12 22:40:08 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9471471 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 E077260760 for ; Mon, 12 Dec 2016 22:40:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D370B284F7 for ; Mon, 12 Dec 2016 22:40:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C85E82850F; Mon, 12 Dec 2016 22:40:44 +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.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 4DD30284F7 for ; Mon, 12 Dec 2016 22:40:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752844AbcLLWkn (ORCPT ); Mon, 12 Dec 2016 17:40:43 -0500 Received: from mail-by2nam01on0084.outbound.protection.outlook.com ([104.47.34.84]:8944 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751697AbcLLWkm (ORCPT ); Mon, 12 Dec 2016 17:40:42 -0500 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=Y3S/uSDomrrL166X4nkgiHqM1xSjgTUL3/0gq6BJaY4=; b=nd1sd+WgrZnmTln02iIRF15pjsmMGzG7bBgQmz24M2+XaCJdXQIbuJN7LB44vHlktr95D3ghPF+FXHUaNgbNEDanp0XQuiV6wSssharpxwvQvy/MrzK7ksY8PJXTtK8+5BwUblEWJh9OM/bggSOm4YkeEDjS0yLqwmt3lvGJx6s= Received: from BLUPR07CA085.namprd07.prod.outlook.com (10.160.24.40) by BN1PR07MB197.namprd07.prod.outlook.com (10.242.216.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Mon, 12 Dec 2016 22:40:41 +0000 Received: from BY2FFO11FD002.protection.gbl (2a01:111:f400:7c0c::153) by BLUPR07CA085.outlook.office365.com (2a01:111:e400:8ae::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Mon, 12 Dec 2016 22:40:39 +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 BY2FFO11FD002.mail.protection.outlook.com (10.1.14.124) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.761.6 via Frontend Transport; Mon, 12 Dec 2016 22:40:38 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1096; Count:15 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.309.2; Mon, 12 Dec 2016 14:40:10 -0800 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 uBCMeAE6022072; Mon, 12 Dec 2016 14:40:10 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBCMeAJ5022071; Mon, 12 Dec 2016 14:40:10 -0800 From: Himanshu Madhani To: CC: , Subject: [PATCH v5 4/5] qla2xxx: Add Block Multi Queue functionality. Date: Mon, 12 Dec 2016 14:40:08 -0800 Message-ID: <1481582409-22027-5-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1481582409-22027-1-git-send-email-himanshu.madhani@cavium.com> References: <1481582409-22027-1-git-send-email-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-IncomingHeaderCount: 15 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39410400002)(39850400002)(39840400002)(39450400003)(2980300002)(428002)(199003)(189002)(8676002)(81156014)(110136003)(8936002)(189998001)(107886002)(81166006)(106466001)(50226002)(5660300001)(626004)(50986999)(2351001)(92566002)(76176999)(5003940100001)(4720700003)(33646002)(101416001)(38730400001)(48376002)(2950100002)(50466002)(42186005)(305945005)(47776003)(105586002)(2906002)(36756003)(80596001)(6916009)(356003)(69596002)(4001430100002)(86362001)(4326007)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR07MB197; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD002; 1:q+MPRqpam+MAqLikj6p2wugO/jUTKUp4WgnwV3uY6mlYBsNhbTsTKdMTRB6zSAtPt0U8P8Ybeut15Dd1p8Si9wD9SWxbD+DnURyRQ210FBeem4L0fnsdlPYBDSPxbPEfiPw+lBaLZ9pkIYXukFoPslWF1CG0MBH/5LtQOoczgSWKKC/LgxD83a9B8XfTqKcg9hY0gISY8LLhVYsELnCkEg5PqgG08JNq/PrTL/Tu/4MYe703Idgfy2pJZjzkntxWQks8Awks3zX9rq9BH2cIRX3uA4ffksO3sWqlPb554qXtBobsictv7jASX1TglUQHjbd0g660k+TvQA1wLMk3f6CknjBASLAl5vnhFU7JBy9JAG+sLNr9KxGEO6eBGei8jdRCm0kglKwSfZsEEDHEHkD3o2mmJu8Hozs6xZ/jEYE6k6SV3XRl68pqozoybhDB7A99nNQw3SnEGm1dTDZJWe+Ue6q1jAYq+tp3zpVN1TRjvFRsJ9uMQgMQT38ED7hYVbuCEEQY4UvMCThmKFknS1E5v2q49gHGFqA2TkZ7PQUtEGEV0/j3lN3Sonr7p18I X-MS-Office365-Filtering-Correlation-Id: a5bd85ce-fa7b-40ba-102f-08d422dfe5a7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN1PR07MB197; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 3:K4XJpuCuTF9kceSl5ZuFOuzDWvS7iznTgqV//54hUxTxWJrrPifKrLgwSLIQT6tnC18JM3JGphdSrB86bq6rZ2hSg/ZzBaWemC6gqVOYscT8jHvLtLjPDPWssMVPPPSqSeuWfk77UIxDndhFU2zTIAab0Q0sWTCw8IN878eO3upMyygGAm1asHNxPraaLpOcaE67+Ium29Pg/Uniokh3K68ITq7++ECcnCYsPXEBp0HqqOpnUZIEXV4Kk+0sXYLtYbsgz9a8V64icYT+RDYLUumpG0WSznAlMeMhude++6Os2wZAHka7nDEGNR+CZwhToSRTqS4C/ZlYAO9+hJtdyeiebxhXa9SE1AxgzRh/f4pbKcf/KL8bCd8dD6OWLYCE; 25:xQZ1RPD3BcB3ABSZXrVzz09Z92G495c765j6waGPj7EsyM1GcQwIaklRgkOzTMmRiBgPzkScZzxiAQ8ZWmM6e7if1dm0wEwfnCagzaVM0qbUPcgV4xIxXDaLxCT2W6HqiqaUI1k6hHa3LKawDT1k1nzOpbdEZyvwFNO+OVMkMdU3RU7EybKR/KhnIGvmehkDdE0q+gUMb2x9/TlG9GeQQoveXdteX1fwhw9cThgEcADNX6RCVxRj399dnbMsyC6J1plV5O51Zny4P5n7B5as3NPpjHz9nOBJANYuPbXMduTy5nc4Qq4h4RgW1nuXsyy8Zel3i5vf7TJiIl2i1uEc4MnQAdk+yQhGr75h0qGTr1c+2MEvbWP+xLVrlTSXfO6J7wgy3C8yMpboDTofBba7WYidi3AYqHhxS1higOuOAHpeuc53Ip/nP+VcWvaT4nluMpGg0Lq8PtZK7ZBzBKgxwg== X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 31:k09A+WrUgEQSFp32yBzibl7hOlaS8iClpKTm0P6xzsawQVRVKBV5uWoJq8adbHr5kX3/BpJnZkcZKzvSbg69ZGMzjWJ9HGUbJrgNNAinhwE93FFLEpeALpImG4/gUn1+R8BKYy8nCyHhiYkuvZJ5R3Ae0d6eYjiwpI+ZV87AN4F70AeTwmJiH51OuVEgx/CuKdzTQHSKNWfxe1NYa1+q4PNLVTWZdxYC8R+QRNg+AixFb7vdDY88KVmF7HIUDah5M95T18YrUIm0ZDomsqE73g==; 20:4EH081hU5c2wBZ33NIWHBs504crkfHf/poXUjDMOfKlSgtzG07TonNn+/JwGNDcwXQ6bGL60gVzI+vQMfy9VvsomQA+WJ1gO9vOZSNkKmVkVUP59vb7zKpfcyiJLoNzCzQE+V5LLpsVHSaZXaDgNztaJv9GVwGTzIVhuS5NXCJn0jNDG84n3DU22uyGfDo1AoV0uasM41LYeJ5waaZphdiBeKq6cxWHvv13pXfCIvcYgXEkFSq1ktUyUWA6h7rf5Ha40h7xIMehIRRY3d/C4sAEuL+xGeRfWAak7gUvdMnuQ/VQp7DKwTSA1U5TiMM/WeGlX8lqhq0egMO+/FEKc5WuM1rQ6nPO1HGAYf/sgs0krzsYynTRSJUT9rs/S31wAp9in4dcxl/C8jcqLw3VT+wGFRuF1Y5Niktt3MlVqxjhnOr3FAOSQZ8rmLwd0s+wZBt9sgcJj4oj7Ur895Zi38XFjnpzHcUrMQpnHU3a5N7dE68tFXBb8uUCOH19Rpnq2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13017025)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148); SRVR:BN1PR07MB197; BCL:0; PCL:0; RULEID:; SRVR:BN1PR07MB197; X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 4:vdsw8T4xsK+GvTjDwqnNLOf4yWW5HQj4jxjRXGJi9cvGQZHMEM1VAh3b4wUVt9griXmKiLNjTqOWbxrWDtWbNytfQlrFC016TMBedqmH5T/lde27CimeRUoHd/VA8k+0fADTHfedmCsfKxfzoBW3P8UIEp3tHKo28luiKqcw5hsgIKqJRX0ZpGthcPqWb4TKFX92bLvmHWHKgRI+8l8iB4Y6VHtuMkdH96Z2277uMrht93NbLY41XdcJzt3hIBtUcCBt1JdNkDL01KvHiSnLx37RrNFqYyXMu2uxs1NdQKbl/D4Z8r6gAAnjN/PrEfdFIjDvrE9Bb19lhLkjq5aCVMXM6nFFqXobC97L0+RskxBMmKHqv0onuyU8CfUpCBIKTnEbJa9OM2UrWWkJ64VmcFNdIVLmkZ5P1MLG3vurGSwyslf9lQDBrLuWz4bj2kG61YMSCBhn9sAK6zNGiylrU4LbbPF8ImWXbXDD3jhAyKXo5yaO/ZpJK8CFV0nVxMwEuauMKNGHPVMYVV0P0E5YRtUenhQRwoh/5KSX2HA/39+J7OtnLp5qGsywwVzXmKPsYSkL4GzmLha9+X5dB2txY4s/QcvnFswkbGNuNBJJRlAlIsqbPLppQ74zZIjMVkr67KghnBJaSakCpMDxBkcHlAF+ayWeOaYvQ5LQPoySB/Q= X-Forefront-PRVS: 0154C61618 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR07MB197; 23:HbOSDoL5Eptz3NegpNsqyXuHvGWwrkBd6F6rFDflfv?= =?us-ascii?Q?85jvycYGiaY3/hZ8uHy1+BIZ3wb1fDEUDhZAGf/E5tclMmDDIWQpmuBZTS2N?= =?us-ascii?Q?EspaBy2NL+KS+Wlrxcef1cQ1n9hlXKEShcDHpZUtcydjvL5vH1Pul0b9JYNX?= =?us-ascii?Q?oRFWeHbqS/pCOuzTtbWb+a0JBKh9jjWM9Ui8Ym4QIkQT3FKfVi5nZNJZXM0q?= =?us-ascii?Q?j2Wp6lNChYttNKV54X+4qBEGbYRxyyVbvJ05ydPYlcrJzr/vFXPqljnRiZji?= =?us-ascii?Q?YFHICfz2oFLB+ul7U477Hsp2OHBkEl1+5gph3ha4CH2+nTVph2KJifQZ9pli?= =?us-ascii?Q?amD2qW6fJ6WKCSrrqgUx3wvlDavnhSdKney9LWHJGZ3/65FvFAW7HC2ZBkwy?= =?us-ascii?Q?DvCqNxVXuBgp9kLWXl/JrZ5mIdT2clHUZrpZDBsTsmYnoBqsgWGN5YXczRJy?= =?us-ascii?Q?kP8dEmaSgwoOzxLb3KUg3EBgC/v1kag0JbYF88WibtkAigT7NDaw8c3uiJfG?= =?us-ascii?Q?qMmglB65tqF+I5wePnwb/zhnFNhQIcr5wy/CuUvplxt8FGO4eEdYa22O2VP+?= =?us-ascii?Q?YcXbrGMy0HnLdfOoxclxKxQzRk3a4+tYk/BLRFKZYC5BNoBSbzne2/w4SsDw?= =?us-ascii?Q?Yd4dp6zUyLZkA4R+DBcVj3CPZttqDujrGSdczLD1gN786c+8/KMYeme8sCKj?= =?us-ascii?Q?uSFZoXSEZ2ZfjLKjZqxDdFJbCVB9c8uzae0k7ckXYqmZrEL+PaUxhuMo9H0D?= =?us-ascii?Q?MFpfWgnZdxQQ7fXQpECpd7e4TmvnM/LMcy+oGWegeIOk9WR9bZ443hOhrba5?= =?us-ascii?Q?03DlqWCAa6WhI8LDzKVVLYb94e65hHT92f0TEUp1vB/DmgANnd9++FUhBmNW?= =?us-ascii?Q?7G6kBnOoKMOp35+Lmm9inPExr902MHlX6oYy+x5xTqrgW54jdTaqpRPoTYs6?= =?us-ascii?Q?+53+u1ANo1embra/BYC+Md4Q1cFZ55rc6Wlimp3CRtTHKBSxDWVZNvVv0sht?= =?us-ascii?Q?SwyrRdBlExzXCC7X1UgSK0OW1IxC1UHLOPrASftov2/DFOeOPu/9fN5RVKoV?= =?us-ascii?Q?RcdZ5pQwEaGWOmn+bgaZZxhRt2CFsA/FFvUcajcxPM3+UBgrsPErCFE/Giyh?= =?us-ascii?Q?khb64dCejCry70tiDlPUbqaj5a7XcVbZARcARd8x+GGgxGdjidpg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 6:fKJ2O9WYu6k5WcWjts8dyRB+qY580DNO8Q+cK9bGKwV1jFe1JVWt81CSTAlZAyLZmwwRMCyv6sLMOENrwK5gtRInsZ41HQYtTQdH22vq42uS6TFvyBy3dCVroC4xJKf4gdTXPvgnW+JU2+2DM68mi2ZMl6dN27KArH4SOOWm4XM5mgw7fwSxeg6JNqt5ZeBctoJQpkybbXCTaWy1ycoAAGflXeRGBmho8j2cgh7RVz3hZ5tdy0j44Qksu3foqPysDcRNhmiaIPwOJZpVuEMhYedAZ/Zk6siTJSGjMVMDMQoeoZgJW/94SFoYQA5FGSsf/7F0pm7wh0Y0hqza4Lr8JfzlaccglqaxUJ+aH2ubqOXrMfvf6Bk12a0I0U/tmscvMChb7L0o+0A0aC2hKVvsYG8xkSjUFZcbsbw9kt3rOxc=; 5:8JEHDQO6VbeAR6i9lVus/ZiAI0r9YVsxRQEZglOPvfBwMBZKtGu6VzP3rMyeC3qLoWRZ5I0aLshc8nRdBtrlq56Es5VOPUEbLqxhOIT2uNJ0bvZfzm3JS/Ri/RnveJrn8jfgKh61aHwOXGqsxfy0aw==; 24:csg3u7kfvlnsBYSg7HxI+gktcFT+BAY5SeGazvFKTANCrgmefzuMctrowoKxyJuJTm66yAhd/+R7o0u4aML0ITUbfveogsGXuPfEiGFKuzk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR07MB197; 7:rhUpcNuyQcVpFznc6Ih9tnzuSpipcD6blxvjSDzwSPwbGwBsa9Vdruroi1fsxEkr427hPx4mItJxsQGA3GA6u60tmvAIS/aYMG3S12zY+a2zPfRMISTg+qx+rtBUiODwlM+NPOPNJn8nwpRmbFQJEqsqhPbfeiZYO+77WF3mmfDfM0w1sc++K23coraysXwBKSn9lSXrVVNg/FQjHrc0jfoHPJoEfJmhtZriQ9jFwoHY9O8Jw/3WQlSCuqIWF5K0UdWw7D50OzAb5+jefz90WBpo3uHV0XTx9EupGhYLHmEKn0yXBWQbCHBWvGja3X3gJnsnqxU3DT9+tQSPTU5A3ctDUBlCJ3DUu/B34V4sOlTiPtAC2FUI3dhMWblPwCVDQCFF8kTMRc9QJj31F7Ss6UBr1WVuoiy8DaPpqk2seU23bHw/DsrMCIOgahhVm3Pj5Gyp8+bG3IWfTDnw07TajA== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2016 22:40:38.9725 (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: BN1PR07MB197 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: Michael Hernandez Tell the SCSI layer how many hardware queues we have based on the number of max queue pairs created. The number of max queue pairs created will depend on number of MSI-X vector count. This feature can be turned on via CONFIG_SCSI_MQ_DEFAULT or passing scsi_mod.use_blk_mq=Y as a parameter to the kernel Reviewed-by: Hannes Reinecke Signed-off-by: Sawan Chandak Signed-off-by: Michael Hernandez Signed-off-by: Himanshu Madhani Reviewed-by: Christoph Hellwig --- drivers/scsi/qla2xxx/qla_os.c | 47 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 6ef32c9..d10a876 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -254,6 +255,7 @@ static void qla2x00_clear_drv_active(struct qla_hw_data *); static void qla2x00_free_device(scsi_qla_host_t *); static void qla83xx_disable_laser(scsi_qla_host_t *vha); +static int qla2xxx_map_queues(struct Scsi_Host *shost); struct scsi_host_template qla2xxx_driver_template = { .module = THIS_MODULE, @@ -273,6 +275,7 @@ struct scsi_host_template qla2xxx_driver_template = { .scan_finished = qla2xxx_scan_finished, .scan_start = qla2xxx_scan_start, .change_queue_depth = scsi_change_queue_depth, + .map_queues = qla2xxx_map_queues, .this_id = -1, .cmd_per_lun = 3, .use_clustering = ENABLE_CLUSTERING, @@ -738,16 +741,26 @@ static void qla2x00_free_queues(struct qla_hw_data *ha) struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); srb_t *sp; int rval; - struct qla_qpair *qpair; + struct qla_qpair *qpair = NULL; + uint32_t tag; + uint16_t hwq; if (unlikely(test_bit(UNLOADING, &base_vha->dpc_flags))) { cmd->result = DID_NO_CONNECT << 16; goto qc24_fail_command; } - if (vha->vp_idx && vha->qpair) { - qpair = vha->qpair; - return qla2xxx_mqueuecommand(host, cmd, qpair); + if (ha->mqenable) { + if (shost_use_blk_mq(vha->host)) { + tag = blk_mq_unique_tag(cmd->request); + hwq = blk_mq_unique_tag_to_hwq(tag); + qpair = ha->queue_pair_map[hwq]; + } else if (vha->vp_idx && vha->qpair) { + qpair = vha->qpair; + } + + if (qpair) + return qla2xxx_mqueuecommand(host, cmd, qpair); } if (ha->flags.eeh_busy) { @@ -2509,6 +2522,7 @@ uint32_t qla2x00_isp_reg_stat(struct qla_hw_data *ha) uint16_t req_length = 0, rsp_length = 0; struct req_que *req = NULL; struct rsp_que *rsp = NULL; + int i; bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO); sht = &qla2xxx_driver_template; @@ -2874,6 +2888,16 @@ uint32_t qla2x00_isp_reg_stat(struct qla_hw_data *ha) goto probe_init_failed; } + if (ha->mqenable && shost_use_blk_mq(host)) { + /* number of hardware queues supported by blk/scsi-mq*/ + host->nr_hw_queues = ha->max_qpairs; + + ql_dbg(ql_dbg_init, base_vha, 0x0192, + "blk/scsi-mq enabled, HW queues = %d.\n", host->nr_hw_queues); + } else + ql_dbg(ql_dbg_init, base_vha, 0x0193, + "blk/scsi-mq disabled.\n"); + qlt_probe_one_stage1(base_vha, ha); pci_save_state(pdev); @@ -2965,8 +2989,14 @@ uint32_t qla2x00_isp_reg_stat(struct qla_hw_data *ha) host->can_queue, base_vha->req, base_vha->mgmt_svr_loop_id, host->sg_tablesize); - if (ha->mqenable) + if (ha->mqenable) { ha->wq = alloc_workqueue("qla2xxx_wq", WQ_MEM_RECLAIM, 1); + /* Create start of day qpairs for Block MQ */ + if (shost_use_blk_mq(host)) { + for (i = 0; i < ha->max_qpairs; i++) + qla2xxx_create_qpair(base_vha, 5, 0); + } + } if (ha->flags.running_gold_fw) goto skip_dpc; @@ -6109,6 +6139,13 @@ struct fw_blob * qla83xx_wr_reg(vha, reg, data); } +static int qla2xxx_map_queues(struct Scsi_Host *shost) +{ + scsi_qla_host_t *vha = (scsi_qla_host_t *)shost->hostdata; + + return blk_mq_pci_map_queues(&shost->tag_set, vha->hw->pdev); +} + static const struct pci_error_handlers qla2xxx_err_handler = { .error_detected = qla2xxx_pci_error_detected, .mmio_enabled = qla2xxx_pci_mmio_enabled,