From patchwork Fri Jun 16 22:47:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9793797 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 7D47C6038E for ; Fri, 16 Jun 2017 22:48:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6F72C2867C for ; Fri, 16 Jun 2017 22:48:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 64402286A0; Fri, 16 Jun 2017 22:48:04 +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 8C0952867C for ; Fri, 16 Jun 2017 22:48:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751898AbdFPWsB (ORCPT ); Fri, 16 Jun 2017 18:48:01 -0400 Received: from mail-bn3nam01on0044.outbound.protection.outlook.com ([104.47.33.44]:58842 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751901AbdFPWr6 (ORCPT ); Fri, 16 Jun 2017 18:47:58 -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=WX77/9Z1zAXF0YgCK/tkoPFEWs4Tj5R6B/JjYAE1jys=; b=adjj1jsjh3pjt/KWd5rk+WQ1j86a5/qdiiOumEtEUZjhko7iwCOQvnzCW9rE9EAOXHU/pyfYJiUnQHG8yesIPMYuMCnEUTEybxpwQONCTl17/CvuCaNYZ/GkiEOgYZuuSnK7A+dvQt2MvxU6J7Zk3uLhFfyiS66XSuWI79bMwQg= Received: from BN6PR07CA0043.namprd07.prod.outlook.com (10.172.104.29) by BLUPR0701MB1009.namprd07.prod.outlook.com (10.160.34.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14; Fri, 16 Jun 2017 22:47:56 +0000 Received: from BY2FFO11FD035.protection.gbl (2a01:111:f400:7c0c::194) by BN6PR07CA0043.outlook.office365.com (2603:10b6:404:a3::29) 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; Fri, 16 Jun 2017 22:47:56 +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 BY2FFO11FD035.mail.protection.outlook.com (10.1.14.220) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1157.12 via Frontend Transport; Fri, 16 Jun 2017 22:47:55 +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; Fri, 16 Jun 2017 15:47:51 -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 v5GMloGL003732; Fri, 16 Jun 2017 15:47:50 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v5GMloet003731; Fri, 16 Jun 2017 15:47:50 -0700 From: Himanshu Madhani To: CC: , , , Subject: [PATCH 2/6] qla2xxx: Add FC-NVMe command handling Date: Fri, 16 Jun 2017 15:47:40 -0700 Message-ID: <20170616224744.3681-3-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170616224744.3681-1-himanshu.madhani@cavium.com> References: <20170616224744.3681-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)(39840400002)(39410400002)(39450400003)(39850400002)(39860400002)(39400400002)(2980300002)(428002)(189002)(199003)(9170700003)(6916009)(76176999)(38730400002)(5660300001)(36756003)(2950100002)(101416001)(42186005)(4326008)(6666003)(356003)(8676002)(2351001)(81166006)(1076002)(105586002)(54906002)(106466001)(110136004)(48376002)(50986999)(80596001)(305945005)(47776003)(86362001)(575784001)(50226002)(2906002)(50466002)(8936002)(87636003)(189998001)(33646002)(107886003)(478600001)(72206003)(5003940100001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1009; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD035; 1:PioFp58e39KD/0Ek4LKB7SHU4Nbv5X+EfDhXQcmh1Nqn7oIciSfW/xz2nc3rwgtSKhHmpvNnOG0rFnfixNfszhkz808jyl85foLu45x1MVjkfLZzA2cx/P0x75agyMA7UkVxUODsk8d/t81O9KtmUj7A+XLcqQbeEg6Jrfhi3vT6TAtRDzFngZ3ZdMBQVWgo4PvPjd/iKWmDz/JouNsdsLi8kG2mVmRZiBH5lbIkgFet+B5qt+1hd1lxxBMdAswAuX7lSEn4/YzaM8Knn/TUfeLZb5UYgVTXFEiCj1Vy8sDS5cVXgJb2pvo4aewzSKFx0p3LtTJ9Aw21GYPF/dyVwP5iBRqQ0ZZiXov+NgUw+hb1pZZ0wLrlzzDzOOl/N1M+i/9tElAmNiHYnL1S5U24c4eHb00/ft3oWEQJoxCflE3k/cKBd+ffxaLWpuBc0JH9FRu51aMLTUQzRs9CqijPp9Au/ZmRMkvQr4j0kV7vohx81d1mKQp3gCLKUUAZsWfa9/D5XoIlbLzJjdnwKQn5OA== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e31a73e5-1072-4fc9-cc5c-08d4b509bac7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:BLUPR0701MB1009; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1009; 3:vvRmRaAnJMmk5cGREsCc/aOLcbXE35zQWjaC57+PVTICKioWtW3N7A75OjRfgQgRYbdmgusvcGHoq0wQI1Fzbu0GoBD08TYfNF/+bR8IG32jPTZsZLnW3Q0B1RhP/RgHtCekFJSSzVXIUARpvuqzNtKPwt26LmVwwYTz0rekh22i3MvV9UjwgQoooQdzeeJlPXLn809zWKc07lzz/bXWwx409YwkhgM+85L3W6x6Ozt3cUKUMOBsKai8OTAsymw6X4eE9YDshcHpf41IWFNUgbVJM3iAa73ioqpuSZo6Yz2YFXs/Abu1mVy6xAfGPNqPwqEj4dIrudSUOf5vNHzAByXT0aHG1IZ1F+5E8ah5ZZXWPe82UbB/e7pFsZYIjqStyeSwvX2TF5ANzYX98IoDP7XnWjBMlTKcelCQv93Wvr5C1401mRz4JpxMd1NqpnirPQK9JRh1Nba6D4IjxB58iw== X-MS-TrafficTypeDiagnostic: BLUPR0701MB1009: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1009; 25:4CLjs4s9ZUBiYgaYSXOXF/mLa0hQ7dXJ8RmyOn7kAtyL2Qvth657np/7bejqlMXf3a4YrjOKagjDA8f+rK5poAehGclrqU/y8w468xQkjT466OeEJa8IfHSJBMOxxJR0is50S1fd2sLo2SKDpM7fRSYGClKnY4iVrcAO7o2QDb6m584pX39KlN7/hyErly+LqlHGfneGxF3xhMktnVxaQOzI6yniBHYO+gYaVUdUhJpfR+kbVsu8Gc4LiuuPRrbbWeTEBjF6xMgV0FIrQhdjsSpzUQAXi7AluQleEJwSAT2W+D/bofLbVbKOrtwUIKrgiBhJq3BUif+Iyz0pcJXsvlKeo4mduh1JEJWLD0pxm2aFW55FFmAaZNO/2t3CUv9ew5IljdylkkPZH/V1s6D2b+hWmkxwR4oyC6IYvi5Tn9567hqpFVWWoPtNpADy7tXYchtLL+wRBSRCh9uHevNOXSp3JliZy7bKZO+wmGIj5+w=; 31:iBn+mTOVr1GlUvYbAGMAkmLbSw7gL+K4TB+ysWhsOtCtFVI4ZnbxDZClViR0rvJSopyCNfKIcqOYmbL1ygImUmOLBPdqKiclR0rNb1awJKGdDnlwJrFDb0wMe7YxNbtAdBdfrd0CSCgqzwII0zXJjnVs0LvL5glbfsJwdkTU0/I7F3zUUOg2t/56ZK8UdBCx2I7NFunC6AVpPic1GMWD+QoeZxN3OJ4NQ6rYYJvNpkBRkxjwehiuUacCHpCgDbcvf8nkQ67vfVkeXf+/IkPaIOrsDSil58p4yLJQiCKX3ms= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1009; 20:nAPKvUQQl9q3Ow7u/4xKvW6O2Not/jMhj2ArbQ3wwwvD61ajOlYj+PLFtzY+rDTZz7AV2lfigxk5rFDMYMqPyIjSNF7XzJNRmvoZroWPXW1YejZoVVQ7dsDq8yIlXkJ6+/RFDWflFSXaGo6q6YFANK2pj/A/TBV+uAaWGK5O3uf35ddpWDLIZnsqxO8jNfpNha/8T6VHK+nn8CcIglfiDbZFTUNl3qhCoBB5sq+VvHvnK4O8XgRklqftJM2vqwp/gLBXdB1jgmF9zYjGDj0mlXGxUv5E8JVJpcP3xihiUJGADDsnrK7atmq2EsYDKK68laiDUUVzs/6BS2LNv5hvGgy4M9bmnif87PdeixKXgFj+C+L1HE6feUSClJycctHsafK48z7OA4FVFLYpG8Z2N47343fAST8h0tWBr2DLvPGT+gDjAHt896dOHf6dVzccjo0Ml1KRdxZNKvf0xsKTvecdVskOYk5kOI1NGo5ck8FPKPbEUMOK9KI9F8uQoFCD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13016025)(8121501046)(5005006)(13018025)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1009; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1009; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1009; 4:dKy9ziShSQ56qaHeRHSRIcoYUgbT73GGhbYrVShV?= =?us-ascii?Q?aiAEqwVo6lTRimeGbQJMefhg7pbOoW0sbqdNIuAc9Al08OpRToLbJzuDxwTv?= =?us-ascii?Q?R+7Wa7dPbC2W3IXt+koZs70mku1EhaIYOpk3WgSVqOm4fISZMWo8YDSaWJoY?= =?us-ascii?Q?/A9i4bfl9oAGjIKr+O2i9VGhfV8YSeOn/tJFxGNYmRbmFIof+gYt6Nek6HQs?= =?us-ascii?Q?whhEtSoRF2gk+sHc+lS1aXQ2eIb2B7GfkmPxiVStXb7lQHe2/426WZI2/Lw7?= =?us-ascii?Q?YwKAmrV+7pmTDU4/ce+EjHzxeybjorHlp0szM/BMO/gEylii18zHv8UoKrdf?= =?us-ascii?Q?8kYBReS6D2n7hiOyB+qXxbLR8ZUtN2PKCZ9lTrni2Egcan5n2o9vLaqsrYDn?= =?us-ascii?Q?lvXKjJaR/GQO8Ycc4cRcryiEfWelzD7DZWSLhAqm3dNM3JssoHshHU5vC5I2?= =?us-ascii?Q?uMrnZpIYmNx61idNZ66A2CvW3fc90gca3zyClPo2zMf18LCyD+SPtabG1zVh?= =?us-ascii?Q?z7kkYpinnKZs+8CRzQovTRvWonpJ9trNA+AD8qoRh7D45iK91dMdFY5gtQq7?= =?us-ascii?Q?DYM5YbiCYM8WdAblKp02sTuLC8vbBpj+6dMaoWSLx8L8tGDSdMbqz7pvms70?= =?us-ascii?Q?wMK/k2xk0r3yHBfKTe/HwtBnom/UUJmklrY1o1/U9AUnzuQHQ5CnD8KDqClE?= =?us-ascii?Q?3SULJB5hfPzBGYaX9KQIB350uYTaD1WNA9Q2IN4gIvU45NPBBFTbqtFKunZ1?= =?us-ascii?Q?h7WeuW7KU04vKxWewx/dxNA9dhwBQiaDzpjpeekLzjVvcY/iJEmhS4/FTl79?= =?us-ascii?Q?3b3GP4VP7KxKLNYvheI7WCYlRrE8qKCOn/YQ4JptA9p8O2At/1OhXdRnH5b5?= =?us-ascii?Q?3tpJb7X+qOaWZ9DqOTVuVSSCiE8HmsvdbyrQD8HGSu1UU7gk6YNN/U21CF1+?= =?us-ascii?Q?NuCvrvpg8H0MjwahHm3E1GlEvq+DVqv8I/qOn7Mex1dBvRFIMhPaOyEB0BNM?= =?us-ascii?Q?gY6NnoXPiaELZ9Muse5vf7Qg1od+2XdjDZ7GFrK9tFPNoT/RjRJusvHlJD2b?= =?us-ascii?Q?qy0Mr9nnYm4LxYxPVi7Gckfl/9dmMeuPMsRgYAwyCNY8bJeQagLqDyKpEf0X?= =?us-ascii?Q?aWZ8cHVuXbjblmmv67PglKSUdMwG+KyDLtNvLgz2BKMdffdBiZkTqobdTuiM?= =?us-ascii?Q?qMtlMBQK/Kez4Sygwq63M6Qj7B3JRvG+s0MnXYpqpznmr6t+6l7BzXl0Rw?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0340850FCD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1009; 23:G+XhY9enqIOdgFCRvfYlH24mwbMQowp/IpUryCr?= =?us-ascii?Q?jDF+kAbdaKFGnnUElxO/Q666Do0MLOJKHYhtQe3cnHinwCeMvfvf6IDzfy6r?= =?us-ascii?Q?hhF+PG4hJuuqa3sQ/aAR8TVF2qb1KPywKIGeH2s5m4pbEnhiEi9A2MMoKnCx?= =?us-ascii?Q?uXM0AXH2YZkaprk6dCgxNZwDLkmOc2pciGI3Bsx+oQ08659jmbCYuluwm8H6?= =?us-ascii?Q?rUxmCUBkpdUwTBxagbFrMBxvJxHLQErAhXPPyD0ffHGVdO/3KWFy/LpEWh4L?= =?us-ascii?Q?0WVGWh/eiJZViL36Oh+XXQp9aKzz3UybV+N/B0fZZ7Ot941XRd0Ou/3+Npob?= =?us-ascii?Q?pG1KBlv1jqsIYtOO9dWjGnqMoTLrQ3xiKdD0HldqkJaad6cjvMz5H6+i5roO?= =?us-ascii?Q?Zzz9cpVEU0iOLARWFxZnbJn2GlZ9mnUZ85Bd1c1d+H6LONh0DagdXXlLbhl2?= =?us-ascii?Q?guZEzwAxRR6HinTMGVS8+5sHiLOLw7MprS0lY97H243shGjHhsk2XkyxXKCd?= =?us-ascii?Q?GlmaggI+cf/5CRYcmZQMvCEPHv/+lPo5HGSvB5TBIiYTh1JBTKmJMCuu2WAh?= =?us-ascii?Q?JtRFvUlKY0BG3Gb/dlDaVyy+uDagrxMDgeNCymHr3awkPpNQlzGLMqdb7sIe?= =?us-ascii?Q?s9w6hRgeRF4JbJG6Eq3AnTooH/9oFD6dll3+ZstZ/eJfgKwfWClcFKzG4TLQ?= =?us-ascii?Q?L8sa33mQ2YW6wQZQZpH0pEFns4VyILm/8rOU4LzwuON0UVQbAZWeCwqIKFEB?= =?us-ascii?Q?prT8aRhZPjOaMiSI6Mb7NwqbPiDWIieGiC27OIJZt99xNa4V+JgSu4ZwUHXG?= =?us-ascii?Q?ml3JNdAoxCY+HrCCJ/DaKzeYogvPhBd+VL8lGG5xDgxASYx+fhqPcffUX5gN?= =?us-ascii?Q?mx4LrA7xrLC4Ru0DIWcX7Z11TflWGDpoivUVQrJJHq0lniH0v04gW8lcijGk?= =?us-ascii?Q?K89qElKLsrgzK7rwFiPCJnIf6SVoZ9Ku40vdsBzeW4ZL+IIjN59WLOieiJ85?= =?us-ascii?Q?xBQEkxkh50L4aLw5iiR9Z/YqMriANV0kXoqpRVXk8mBMDTcWe4sP73ltexdX?= =?us-ascii?Q?lexy66qcnGjW4NUDynb1fVXVsm1IC7jnr3YjRanuzkRdtES/vL5+My8LbomC?= =?us-ascii?Q?hLN0EU/PocudtTPGQFJ8gFc28EMoNi2zc2d4gOjG5XRRCt1gUC7NYDO5XFPF?= =?us-ascii?Q?nb5fNS6mlhlT4alBjZe1LhTV14B2sVd9/hTdEETAVTE/wTzPRL4kehAipeQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1009; 6:he5GCEpm2GQ+RBR3cAZsFN0HQ8lS3gAfkObpKy0c?= =?us-ascii?Q?amONG9CJ2+VMFduJHTBqKNzJFa1OFq9AgPcGHD729PyCnou9eCHy+GPpf0nS?= =?us-ascii?Q?J+fA7a2x7MAXbDB+G/zUEpiOt2DdUGEI2wVfQK/pzOgtgAXXykaRINA9tKeT?= =?us-ascii?Q?SrMpZ1NPeqCuGfVOeht3dleBjWkygq3Fzga7jsLnqd5Af+0M8G5tsSIJ4FPa?= =?us-ascii?Q?n2wlHVE9Yf373ajZ8Bd99nQmgsHlC2LRIuvzkJjU6V0qyUaQifiFJc5AnA/u?= =?us-ascii?Q?wgn5EfliRskf9HxpNglBqzLmMoGojuAY73GRTqI0tOHYle6jgtoZxki0ewhN?= =?us-ascii?Q?6sGRB9uUK3vIoZK120QzkKjoNLyf0Op/OENcBHEFVP73LBvDN/xNwbuHylPR?= =?us-ascii?Q?XBYGn6CB/xQe+8Njt3SmVR4+VAC/OH9rdXX4BaXDeUocy2eFUNHelWutP46g?= =?us-ascii?Q?CtK0P8uNytKpMS/joDeiUnksGagATdf/xNl59h/h/e/WBOCAzHsB8puGWEz5?= =?us-ascii?Q?1OJU+t0+6Vxftmo/GaK/e2FzJ/zfwcergYUvPW3srVMYZGwJSxjKjSqFhTi7?= =?us-ascii?Q?YDaz4/wpY1tJ1mvT68ZGplrIjGCbHx+KdbEuhM+r9qH+rVrFJeQJPHEGlUtI?= =?us-ascii?Q?ljM91dOSJt34MfeH9gztiX8xglRxnBCliW70wiSW8LphgPKgbEs3Z2u9NN/7?= =?us-ascii?Q?LMAPRwsdaO1RBOLBx3/1BtYRqIQMszEHf6HFUO6IfZChZKlcAYkfLpbP3XfL?= =?us-ascii?Q?8IsyQ2hsEOPN+1Y6hXFMg70xP3CKX0v1G3pTUtT3eFNHbYWLFyldBV6RAqO1?= =?us-ascii?Q?VSzvvXMcxYHBx+xE4tzLy+Hsx4PvZhLp30xc7h1c8cWMCjXU2lhPD4wKBQk5?= =?us-ascii?Q?EriXYj5gG+CJQRMgdbc3DjNgQAXbD7Jo5rG0X1xVzc4t6bDoXLzQOdLW9IKA?= =?us-ascii?Q?W2ywrAYE44hgcFWht3AgPMgA2Z1iARbAEzNUJVisT+MuIaO9NKsbOpb8layJ?= =?us-ascii?Q?fTY=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1009; 5:kCblLTsVqSTL9/EjOmpGWSafM0I5uJKoHjAf/z9joypwMzSF6Aekg6RBw2Uaql94UqMr6XTfbscsWtRHX/I23KPsaBqcqVaA+TJghOjwdhLRJipAInCF9H9zq2eiGie1EYzI2fMF4iP/gdRdQQlQ78on6hO/LnvaC5za2R+zduhsCgtLEq0Xki9WnCXu/dijzrczy4Q93xA2C7MpC87fhLY964JrNE7mqPaLZJ/Yx/EQnXN/fDtobqGRPTT7OkC9gf9ijvr75PvjN9lbqzQyByXCXHdQEqxtj8oxN2B3AfaDQZIT5mINW93fkFqE7eOkV15lqk8z6uyrPktaYAY0uapEnPGE/QxRJWP736KWRHjniR/wu3aGzS0aOlTCE+vXpjY+UwPX/L/ra1GhRDgt8ob4be86p9NNQBD9F/G6lG5sYgXc72UG0TW3xwHwAkor8jE5grpO8bJBHVgixuK2BU5FNXN+DlQjyxTmJ09FkFO7PeDxHPpEc6mPn3pRrsI9; 24:G3xtjOkzasVXRDO84rKefn7RwUhyYtV/wZZZii/vz6BOV8qbDbmCxvTwTKyFC/QmE4U00HQOCCa6h3rwGr+P0u+ple1mPZUHFh+lxYY8bTs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1009; 7:qEazpxaOjC12drh0p8r7ffzVv1GTovaHeQJRS//VMMoLeD+2R+oAUJBX+TkNX0h1GOVJsyCojLjEd9qJVIQFTnEb16gdQIcbhucaeuX4sPyc+bZtv+VP1G1fZWq6B4OAy2VBl+iw0Ua9voyMORhF8bDbv/oVun68cZflEKhgYtYwZVtRdNNvV0jIDSqc0f7tpXFP3IONq1bQ1xwoanlTkvmh7j9Pa0Bh9oqYRc9FhRa696zJ4miLXNtMSOD4c22ntR6O9Tb/DmntUQSCM7lCSAxJj1pt0aVTFjsJXY3KiTIAfE4XoVu6sjA1FgBRm8acH/NIAPspfrgTUohYmbbrLHKY9DtEnicDVdAjYK4lpLXQeG503tcpKGY37bYal+/BrXlyL6DMmUSvExZ0W9mGQCbDs1fAg+Y5Dzk16OxCvmee/YUgvlb5zqw/GeScygYYs/vHKuAavHCqq/L8RuA3e00nqRDRmK+tfRCx062betgGvjpGcFvuYO/OBqPnChU6MVvdSC3gn+E9SR73u5bgzHJuUFBJ7H9RH8bVEhcH51u4vk1NB5Mt/5vQa3I7W1EFezwf1tT7ajRZhsdwO5E2EesL8A99uvr7egFSOckBSlzzp8uPch7WLk40eY9r1sK/dKAN5G5ypTl9qMAzJE2WhzlzHaKGzMF9sM651VKEbMpDN1ICEWTpnoHnErtvzReHSyl97977j9j1QkxgPsEVH7SWWJyk/+ik6F2pMglgpkfxAXdZLgbOpmnY4jp9NVx+kQs/9vudz5eWdUBKlAB/j/UzYCLMq++mYUp+WFqRb1E= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2017 22:47:55.7043 (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: BLUPR0701MB1009 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: Duane Grigsby Signed-off-by: Darren Trapp Signed-off-by: Duane Grigsby Signed-off-by: Anil Gurumurthy Signed-off-by: Giridhar Malavali Signed-off-by: Himanshu Madhani Reviewed-by: Johannes Thumshirn --- drivers/scsi/qla2xxx/qla_def.h | 17 +++++++++ drivers/scsi/qla2xxx/qla_fw.h | 28 ++++++++++++-- drivers/scsi/qla2xxx/qla_isr.c | 86 ++++++++++++++++++++++++++++++++++++++++++ drivers/scsi/qla2xxx/qla_os.c | 18 ++++++++- 4 files changed, 144 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index bd1b3fef95a4..693c42392886 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -412,6 +412,20 @@ struct srb_iocb { struct { struct imm_ntfy_from_isp *ntfy; } nack; + struct { + __le16 comp_status; + uint16_t rsp_pyld_len; + uint8_t aen_op; + void *desc; + + /* These are only used with ls4 requests */ + int cmd_len; + int rsp_len; + dma_addr_t cmd_dma; + dma_addr_t rsp_dma; + uint32_t dl; + uint32_t timeout_sec; + } nvme; } u; struct timer_list timer; @@ -437,6 +451,7 @@ struct srb_iocb { #define SRB_NACK_PLOGI 16 #define SRB_NACK_PRLI 17 #define SRB_NACK_LOGO 18 +#define SRB_NVME_CMD 19 #define SRB_PRLI_CMD 21 enum { @@ -4111,6 +4126,8 @@ typedef struct scsi_qla_host { struct nvme_fc_local_port *nvme_local_port; atomic_t nvme_ref_count; struct list_head nvme_rport_list; + atomic_t nvme_active_aen_cnt; + uint16_t nvme_last_rptd_aen; uint16_t fcoe_vlan_id; uint16_t fcoe_fcf_idx; diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h index dcae62d4cbeb..7d9a076c4667 100644 --- a/drivers/scsi/qla2xxx/qla_fw.h +++ b/drivers/scsi/qla2xxx/qla_fw.h @@ -603,9 +603,14 @@ struct sts_entry_24xx { uint32_t residual_len; /* FW calc residual transfer length. */ - uint16_t reserved_1; + union { + uint16_t reserved_1; + uint16_t nvme_rsp_pyld_len; + }; + uint16_t state_flags; /* State flags. */ #define SF_TRANSFERRED_DATA BIT_11 +#define SF_NVME_ERSP BIT_6 #define SF_FCP_RSP_DMA BIT_0 uint16_t retry_delay; @@ -615,8 +620,25 @@ struct sts_entry_24xx { uint32_t rsp_residual_count; /* FCP RSP residual count. */ uint32_t sense_len; /* FCP SENSE length. */ - uint32_t rsp_data_len; /* FCP response data length. */ - uint8_t data[28]; /* FCP response/sense information. */ + + union { + struct { + uint32_t rsp_data_len; /* FCP response data length */ + uint8_t data[28]; /* FCP rsp/sense information */ + }; + struct { + /* nvme ersp hdr */ + __u8 status_code; + __u8 rsvd0; + __be16 iu_len; + __be32 rsn; + __be32 xfrd_len; + __be32 rsvd12; + uint8_t cqe[16]; + }; + uint8_t nvme_ersp_data[32]; + }; + /* * If DIF Error is set in comp_status, these additional fields are * defined: diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 40385bc1d1fa..0d60fd0da604 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -1799,6 +1799,86 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk) sp->done(sp, 0); } +static void +qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk) +{ + const char func[] = "NVME-IOCB"; + fc_port_t *fcport; + srb_t *sp; + struct srb_iocb *iocb; + struct sts_entry_24xx *sts = (struct sts_entry_24xx *)tsk; + uint16_t state_flags; + struct nvmefc_fcp_req *fd; + struct srb_iocb *nvme; + + sp = qla2x00_get_sp_from_handle(vha, func, req, tsk); + if (!sp) + return; + + iocb = &sp->u.iocb_cmd; + fcport = sp->fcport; + iocb->u.nvme.comp_status = le16_to_cpu(sts->comp_status); + state_flags = le16_to_cpu(sts->state_flags); + fd = iocb->u.nvme.desc; + nvme = &sp->u.iocb_cmd; + + if (unlikely(nvme->u.nvme.aen_op)) { + atomic_dec(&sp->vha->nvme_active_aen_cnt); + /* + * Needed right now since the transport doesn't cleanup + * up AEN's IO's on remote port delete. + * they could have gone away while we still have the *fd. + */ + if (!atomic_read(&sp->fcport->nvme_ref_count)) { + sp->done(sp, QLA_FUNCTION_FAILED); + return; + } + } + + /* + * State flags: Bit 6 and 0. + * If 0 is set, we don't care about 6. + * both cases resp was dma'd to host buffer + * if both are 0, that is good path case. + * if six is set and 0 is clear, we need to + * copy resp data from status iocb to resp buffer. + */ + if (!(state_flags & (SF_FCP_RSP_DMA | SF_NVME_ERSP))) { + iocb->u.nvme.rsp_pyld_len = 0; + } else if ((state_flags & SF_FCP_RSP_DMA)) { + iocb->u.nvme.rsp_pyld_len = le16_to_cpu(sts->nvme_rsp_pyld_len); + } else if (state_flags & SF_NVME_ERSP) { + uint32_t *inbuf, *outbuf; + uint16_t iter; + + inbuf = (uint32_t *)&sts->nvme_ersp_data; + outbuf = (uint32_t *)fd->rspaddr; + iocb->u.nvme.rsp_pyld_len = le16_to_cpu(sts->nvme_rsp_pyld_len); + iter = iocb->u.nvme.rsp_pyld_len >> 2; + for (; iter; iter--) + *outbuf++ = swab32(*inbuf++); + } else { /* unhandled case */ + ql_log(ql_log_warn, fcport->vha, 0x503a, + "NVME-%s error. Unhandled state_flags of %x\n", + sp->name, state_flags); + } + + fd->transferred_length = fd->payload_length - + le32_to_cpu(sts->residual_len); + + if (sts->entry_status) { + ql_log(ql_log_warn, fcport->vha, 0x5038, + "NVME-%s error - hdl=%x entry-status(%x).\n", + sp->name, sp->handle, sts->entry_status); + } else if (sts->comp_status != cpu_to_le16(CS_COMPLETE)) { + ql_log(ql_log_warn, fcport->vha, 0x5039, + "NVME-%s error - hdl=%x completion status(%x) resid=%x ox_id=%x\n", + sp->name, sp->handle, sts->comp_status, + le32_to_cpu(sts->residual_len), sts->ox_id); + } + sp->done(sp, QLA_FUNCTION_FAILED); +} + /** * qla2x00_process_response_queue() - Process response queue entries. * @ha: SCSI driver HA context @@ -2289,6 +2369,12 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt) return; } + /* NVME completion. */ + if (sp->type == SRB_NVME_CMD) { + qla24xx_nvme_iocb_entry(vha, req, pkt); + return; + } + if (unlikely((state_flags & BIT_1) && (sp->type == SRB_BIDI_CMD))) { qla25xx_process_bidir_status_iocb(vha, pkt, req, handle); return; diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index b2474952f858..59f2d5d8009f 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -695,8 +695,10 @@ qla2x00_sp_free_dma(void *ptr) } end: - CMD_SP(cmd) = NULL; - qla2x00_rel_sp(sp); + if (sp->type != SRB_NVME_CMD) { + CMD_SP(cmd) = NULL; + qla2x00_rel_sp(sp); + } } void @@ -5996,6 +5998,18 @@ qla2x00_timer(scsi_qla_host_t *vha) if (!list_empty(&vha->work_list)) start_dpc++; + /* + * FC-NVME + * see if the active AEN count has changed from what was last reported. + */ + if (atomic_read(&vha->nvme_active_aen_cnt) != vha->nvme_last_rptd_aen) { + vha->nvme_last_rptd_aen = + atomic_read(&vha->nvme_active_aen_cnt); + ql_log(ql_log_info, vha, 0x3002, + "reporting new aen count of %d to the fw TBD\n", + vha->nvme_last_rptd_aen); + } + /* Schedule the DPC routine if needed */ if ((test_bit(ISP_ABORT_NEEDED, &vha->dpc_flags) || test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags) ||