From patchwork Wed Jun 7 21:43:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9772913 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 C27B960350 for ; Wed, 7 Jun 2017 21:44:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D08852847A for ; Wed, 7 Jun 2017 21:44:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C53C5284F4; Wed, 7 Jun 2017 21:44:08 +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=unavailable 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 B53A12847A for ; Wed, 7 Jun 2017 21:44:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751728AbdFGVoC (ORCPT ); Wed, 7 Jun 2017 17:44:02 -0400 Received: from mail-by2nam01on0056.outbound.protection.outlook.com ([104.47.34.56]:59434 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751659AbdFGVn4 (ORCPT ); Wed, 7 Jun 2017 17:43:56 -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=GqRrDvniSfnDVZAZjKIfuxmqy87lxTLlM0guiD9wHgY=; b=JoquOD9uRAui3lP7EGjItLE1cQa2acpLgUfhDUCJCDpWelksye2Jqg6AjrwiN9I+hpVtAgBQe9yQMzBUrWDu3wmd8WNX4ZW1vLjgxuZ8nWNcF2I412FxA1yIb7t7QcqlZnZDT+fwhpIvsfWqvwc7mzHChCxPlojZXFUM04LKEK8= Received: from BY2PR07CA0089.namprd07.prod.outlook.com (10.166.107.42) by BLUPR0701MB1012.namprd07.prod.outlook.com (10.160.34.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Wed, 7 Jun 2017 21:43:53 +0000 Received: from BN1AFFO11FD028.protection.gbl (2a01:111:f400:7c10::185) by BY2PR07CA0089.outlook.office365.com (2a01:111:e400:7bff::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12 via Frontend Transport; Wed, 7 Jun 2017 21:43:53 +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 BN1AFFO11FD028.mail.protection.outlook.com (10.58.52.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1101.12 via Frontend Transport; Wed, 7 Jun 2017 21:43:52 +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; Wed, 7 Jun 2017 14:43:41 -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 v57Lhelb023173; Wed, 7 Jun 2017 14:43:40 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v57LhelW023172; Wed, 7 Jun 2017 14:43:40 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 07/15] qla2xxx: Move fields from qla_hw_data to qla_qpair Date: Wed, 7 Jun 2017 14:43:25 -0700 Message-ID: <20170607214333.23110-8-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170607214333.23110-1-himanshu.madhani@cavium.com> References: <20170607214333.23110-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)(39450400003)(39850400002)(39400400002)(39840400002)(2980300002)(428002)(199003)(189002)(9170700003)(189998001)(2906002)(105586002)(48376002)(42186005)(1076002)(5003940100001)(575784001)(5660300001)(86362001)(50466002)(356003)(8676002)(80596001)(107886003)(101416001)(50986999)(81166006)(305945005)(72206003)(2950100002)(87636003)(478600001)(38730400002)(106466001)(33646002)(6666003)(8936002)(76176999)(47776003)(50226002)(54906002)(36756003)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1012; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD028; 1:Qq8VoQRJk3Z3JI25siI6xJvNUu1OC4S/OLczOVUJKLLBvRsIxZgUOye/aA1r2zzBXwTVr3SgXisY/KkO1DhDWoOhYQG/vPrTbOwDGj7+q6ZQ79Io6CiuUlw4g6wmDQvYocqSWX9RVDfT2UKoAZMZtR2n/q5JNOPqcJfpfQdM0oLFQUIVrbn1IRfhdbInvp9HEd6ce7U6SRljvA2qlF+nukCrdXLQT1NgPI7QWRnn/pi3FN8/3qZpSZeG0I4jRezlaKIUdxeNiBM+RQXZV0SiQ/j0lhJx2OuHFqK060KfjvIqx2Qa3pqNhMWSfgiMb08GasELvEWicpxHkgSM+kvXJCfQ8TpuPhCM4vfQJaMSgctvTODwQsf81BAqOyneIRcbGr1ySkhblto2QDtFroMjk5xGHIfUpyYlPLdtXVsWXwRM7sT6vh+voOTNjbRPNOsJeTRj0Fgi3aY9BbVvR2X4+tJCtuu0iAfv3NUswRSzcHydd/rwA46xDvaC+rSLfgzj X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BLUPR0701MB1012: X-MS-Office365-Filtering-Correlation-Id: f569211e-da3c-4eb2-15e3-08d4adee4ab2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:BLUPR0701MB1012; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 3:2klj7ptwiykA9F+onH/RRCQg6sgTicMob37cm+a+zWJCCiKXBMJEiAjRdvWw+5AMly5xs3WjIsLc8oecd2c8OJLKqsoJ9ZEMLxZUWjRj9yJbSBiFEc8AWORPH2Lf6l2r+eFrRB5dLJF/WMz3GEQtZuvtuMRsWq902q/VLSxyMvtruStkhuJFctLR9WpggLqCjfbiC1mVQOmAp39QPDiLI02RrLwlFxlqsK63ftLu83i3d+CsIwwW9sI6BuKOOlHjv2BALO7S6Bogj6Tjin3quKIEmK6VF40VHm75jHqtr2Q60CHR43ocKV0i4PiFYRmFJHH3kIYcTP9hmvM5fOF+zcMy+RXn9ZQ9jMqehbSYYLdTrmtmIk2+VguOk+zjsA9i71saz+TdlSXCqQ8f75j9RQreVMJFbuMap9bD92TWsSV8btatxpurkFh/WDkHI4aNxjq29kCnk3A2aTQoZe22aQ== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 25:qGfay94ddQU255qFrwuQi27s2Cl0zXB5eYKNNAXMD1hu83dR9IkWpxY/LaTSV8kZ0lzeQVRy9JfcfoYPJa6WuXqIrZZ+6sSJfgfSBa25yxgYJ3GFVq/JC1PXsWQMLHw9lUVTCkSFc9+DsUBGoH/oSXh2islS/ew7pwSyXf0tTSIBbutu4ELPKVPPpvYeDNbtW7fK9qnhmlMvWBsvxQ9KSOh8tFzQi/9qwfgQAxJ4iJ6Q33TkjnnMP+lODnAM5V3RT89AVnmW5uecNdJ1uE/7Ax9hbqLzVyyHPDbNLLOPtHz9EXxjokKa0zDXErEWwrhzIdwTPHn0YQk3CtDfbS1Z6r90s8g23Dy0wZ6Sz5f186y5BbrbTxPo2DxoW6YiaVY9wNTe834E7vltak3RxRu0QW/vcHoGFT5VO62iviialK83Kopyphq8IoD/aF3/9DNyg9Ve9tt1NEOa95CdIWAdMQ3VUI657nBMcdE8zGd2nU0=; 31:TSIYRB8kjzepuKPcWnHMU8Qu+7xqaBACPpBdCE7tvef/xg3dhiFGliUNDWRDW18e25DZHgrpSt5TfqXNWemNyOfxFwZzD/bc06FiObMtpxRFZYj6KSQUffT070c9pzvNr6hk36eeU2WkiDzFuIVjMJbWAfu1HmUuulUUemd6DI99L5WIsz4VJvIox8G/jE9qLivnXdzmAzMulJm0w99ffwN6H+O1GMB3f0jbScfgmC/RPDxe0KJbgufuMF84cS8WUO+eg6g7CZS7Y7iGjRom6KneuE4KipSn9ugGcZAFyMk= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 20:fwfCTZRihJUcKUyBodS18qF88ECx7qZHloJ+3G11yAtPPTMfCL8ZJj2KYCGMecYKVDQWTwyR0jOmF/EhCfOVPbopkXCNgWPNACI/3OaUlxmWK5qToqqEw93+N1pxQzw+90GBe/mb9NGwvx8oNFvWJ0ZfaT5EKA7YPi6BxHJI1wgupfiURvyQI0E3OVCSCky4PrCJzE2J02rzEcWZyyNrN9KsUA4SFnJaesHUUgUByv85rB0y2rzc2AWU3GTbiftctBm/iu410MvzIUzNrWdQwF1L6NvZmKN3qSOea6U32OyVrTxGhLpGNADfFeJTx5ahf5afesdG4/78/K3k//xm3q5He15ONFoia3v0dN6xP2So2eAL+5TwTPIQrvWgBFsFBS1xggRv+lj62IywfmNkE1Jwy1rUyx5xp59tVQaKhTSgAo/9VYGY+N3o8PM2Zx3QM/5fFiMKZTd6c9rKFHML6QfqnwwetiX8JW3lALsCS9fxQ4DOk3pZGehoplr3QTjb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(209352067349851); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(13018025)(13016025)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123560025)(20161123562025)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1012; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1012; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1012; 4:XlCqanvArXFlXC5uD79FVCZv1iRb5WFbOWC6wYmB?= =?us-ascii?Q?EzK5wUOrUw3gGKXzqZUYS0/FNoUGW31x3iPjWeax5cKajA5oENtd9Rvpk0aa?= =?us-ascii?Q?+umx5x8YlxporYihPoe+9UjDRB92bAPbIU+LT/A3kteVUVoXEO5O3eF/uhF8?= =?us-ascii?Q?Z1Q7Yt9tTsYhz62Fhp3OGGOJA9k45bTNSv3lNHL5SnVl898LjT2nu2jk4jRo?= =?us-ascii?Q?RAwieU87/mO9DskB4fdB+ctVtp9431HcV3ZQyVWDpGLfAFuyo06kqSvlReqw?= =?us-ascii?Q?/x3phDZLvCg4NLadwttQ+4sNdUDIaDmPADKAm7V9DqOP7+qVuvi4NTpxYgq5?= =?us-ascii?Q?amWpa7ccEGVAlGZ8VDGUNDDK7JVatWpmiDjMoxvz6v/rkVSFj59TFtSuHmNa?= =?us-ascii?Q?5JyBLHU8lU2zVwqouJ7vjtuYPrSfseeD7meNUdMljkFbC8UTLfOI+P1I6QPg?= =?us-ascii?Q?Qn6V5zrfl/znBKNWL1HrVsmqGxzuFF+gx2XjcB3XSH6q77AX3g1HS7TEtEyz?= =?us-ascii?Q?0ZGLwj7i1+cglT/JolBB507ZVHozgibUueLwJ8/+HHjOAsrHyqnhm9S0sIZw?= =?us-ascii?Q?G4FIAjrgh9huSNpi1PbHdWZ29iDhF0RxYQ4+vSspq0Llo0O7+FcVaOs7Gcso?= =?us-ascii?Q?LXVCDAnRSZmAkmBueIs+jg9V5GuJnOPikBlFoxpIj6JfqzN6SeDF8DC9F2sQ?= =?us-ascii?Q?JwIa2twvsZcaA1NNdKStlKeJYcUXat/FEgOVHbRUh7oX0Bu3y5eeVyJvlzzy?= =?us-ascii?Q?97urNBPhCH5BNFaZ8GFLC8O5tYzlW9eGUdA+efa6lZ7dyfZOrPbjC7yqSaSO?= =?us-ascii?Q?qY3FtrR+2U0pHVx9XWDTAdLdRyrRLzkWu8veaXR31txQferw/f25BliLs03P?= =?us-ascii?Q?lLRr0iJkGcl9az+LvV5T2Qj/wD6tvKp5rmN1FDEKSX+rgLm+xOTdNqAXJJ8o?= =?us-ascii?Q?Mignc4KabTRoNYxD6lXRs1VkAdhW/k480vwIlPRJHgP0yLYYbrvzcUw+/RBI?= =?us-ascii?Q?DVxHeWKD04uuLboTnWeue1YihJhxiu+zTDf8knjQP9/d3bOTnz6opHMDivyP?= =?us-ascii?Q?tQdgUYoP4BkZO8fCtdr2fnP2gdJ3YkuaSy7Mq6w5qTG3+Top4KILgrqvwTGu?= =?us-ascii?Q?ZE1pYYGCVWpRcpOyyEk+OpKNGSlJuw9kOPNy6wO6w72Kxz3cZuHzK2V/288i?= =?us-ascii?Q?ZoK43KcejCKkRwKcDngsXry3jxMuIJtrkk6MjSk2bxoDw9e7ucLMWucGJw?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 03319F6FEF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1012; 23:GYRnlqgXe3ZpxBgc9Bq4wfUZldheBuWQEFft87r?= =?us-ascii?Q?3vH6RIQ5P9u/AHFv0xAK7wywxfUL4z39Xa4IzC7Z9uZKDb4AvrVexSdfR8PA?= =?us-ascii?Q?FBeJY1d8EG5l9L4uHlU8HqXsjYxTg8aB7KBQ9Zqz9l4hdwou7+fzMSSl2QaJ?= =?us-ascii?Q?S1Aroa+1788cGdfjaLnuH5iPCKRbtujanMLK+E++BXTRbnxeHg6dXtsThEec?= =?us-ascii?Q?sjvoacfmXwwvUHll/h7aU+185GVCn/EDb7/WdugZyd2Cb4RHKVdme85EVSwp?= =?us-ascii?Q?6dm88+SsRGokhK82/b5Li9Z057O3jAbXH1NgNR4MNIiigbV65SWTQCnEruD9?= =?us-ascii?Q?POguNg+OnAjDVP4rxbQjcEna8bxapdOwyU5AHTiGc9PosKBLZ/3gRV9VT7pK?= =?us-ascii?Q?lJugNn+wJskFygbTigg1mZCORo5clrWIA6QD+++9/JZBnfZqy/+nFXowbbiF?= =?us-ascii?Q?/TvjPNEfFdZn/3glS40FhB/IRDUyqFk5p9g+0rRqdEXmXHBi/khFs7hQPPqy?= =?us-ascii?Q?4YDaxtA2uFVhYH7psPZEByfZkXJ2a/rPYXBkL2HeMprutSkmZm/fbvX2cuTK?= =?us-ascii?Q?X7YVwg1HoH3sJoTojrAzxvm6tUgN6r3UMekaMKN+zuEsxSxCNd5v8ryiH0Hn?= =?us-ascii?Q?ZFoamcMUWNhs+ZdI/aGlnWKynge2pMMYbvWd8mE4oLnHCy5IE/4J1WI6F0j8?= =?us-ascii?Q?q9Y+gXkwtAXi2lRvgAzXUHsauuZuZiAV6JQc9BT+aXHV3IKARU8gh2xmZqMa?= =?us-ascii?Q?m9J7WgCTyvHfrDfeIYagstSskBhgiRxeYQEjI4AwCDQ2ytxVFqT3EViIbyiL?= =?us-ascii?Q?XE+28EpZupvQMnEoqkR8CcPgLIMBol9QaivNoFPZPipffRhT1KbiNDmC18eO?= =?us-ascii?Q?Psvw44XZJFhlnEjqzYB9Ahth4+8fWEkQ0ya74lazVkU5EuvHpmJJuc7lSS65?= =?us-ascii?Q?RZ5ciLhBhlAoTD3QhVlxyEU04TzepoKfS8mxaV/n3NjHY2oMSvUVnXLk06fK?= =?us-ascii?Q?rVzKOKuRPii2Csacr4pL7xnP4JX8W5fMEVG3cU+oQBHajaFH4XMBlZKR4X0g?= =?us-ascii?Q?hQ07ASfT4dtj5U0TmaUWMduyqX5PqFKJRCnA2bFiMMuTtf9igcTqXD9Nj5tY?= =?us-ascii?Q?KKq6NsB0YWL12nhXEh3FML4xjKwj8Kbq0?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 6:Y5hMgsjb2Fuu1RsFXLrdsNrZQJwT5lnlxlyOmxU1g55w3TK39ypTVN25u0yN723e2SqlSaPIWvLdCFpEduWuyWI5KoVF4lHaKqsgQAquojlrebhYVqxDEQRvht4C8Vev8jfXdPq1+feCgwdQUF607rjVNt3yyEDm2ytiDe7ygRE7HH6KhwK/i+SsgXm5miDKuwAcNYRGH1tSvs/CTY981Zy4E1h1SJNz2hbZmRYteSDNbOXLl+OG1LTZlcYw6GF7FMswSUF5puC4dXBBLY6yqFL32xTw1p7cK5HJ1G/3tafyH/YmmxLJOpxUGWKj3RF15nTdR75NKx+z5u7Jos+8s682KgnQP2u3JEbHHMketU1zbyfZTVwBQUsbGyogNLzvHI6HatKuInCfDVv41bEYXmMnNVt6P2QEGP4RxwbnN1JDWiN4SXCJMPGX4C8DK7zHOB5J5CxIavlCCCfC79/M+4aqv+i2dMkSjNbs9OtNuUoVz6dfStqu9Df7aBtDZjmwhfsJgTBXEBvuYGAz+xV80w== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 5:+AhHSdoNEgdaSuNdlo6MLHBlBy7xciPjv+BVOAkP6OL01QBt+urCHhXZKFBTmRdXVcF8KrN6cOQv6022Np5zJxN8qrJf2bH8M+6TV3S5jjE+d7vzq/XFHNKBwv/RK+VeOeEqKQmQMQgmI4y3OdTAajN+2sw9J8tDgnG9A1UJEsImSd78B7l1AgtyO8ExtHixxPNnKRKh1dkavnRUTfvw5E/Y30j8Mg2YGqUbvKzoDdpBHs+EPRPJIrLHO3vl0jZv765Ya8IVSCSK9QYdgrAQvv1mtplEVG09mjgT+0RnDdvpbY/wMmdgXCEbQvWn1nw5+JIo0AEhaaVAEss9KPXKu5xV5xFTC0kZMteq4f0BjmI4Jj3qBV9uPxXBPXwmHHolRjO0BgCFh7cItb0v/bTpPM38Q6R404qvnmMNBj5FcGePnndzPMsA6AjP01xDxene4PQgHX0KFXjCJHKjQfQ5M4P01CoVsqMC39QigrAIqcSfnYgb6ciXWbr0t523kyRo; 24:fzOenjQecN3kKz++52WeiM5wpNRuvclrSSSEAyTARMvssT0V3IA37fR5wbTDXoyZpsO18LbbQmJZUbsoRfK9HRlUYb1lBbkJiEi4hRCv4oU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1012; 7:crE7oDdQ1RnOj24px/u5ETATIEULRJW7TjPlonlGM8R7KArmkUQH2fQu4Ce5YengsJTapocqVmQMYP32ywCJtH0FMM2BDa5yd4no1S6Y+Vmp5S2ENbUv9SmQZ8fqdXtjzeDulpHl/7SLeytABYVJ5N9SBXwbxZPJ8O0CC/fJ04AUyRI/jXop36idkvJl6M6cq6bGLu+TZloufQgu8px3kWPJI/xz2zaclYx2FLkPO5/szlnSx1jyNPRU5avxbATgjPqToKFBd9Xw5jx3BYRMKgkwTj5Y8ZaEhqvcDutatvBe9tuGZ5hj9zJCR1p6AeoU+ymLTMCV9RtNUZL1mBJSaw== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2017 21:43:52.9657 (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: BLUPR0701MB1012 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 o Move chip_reset, enable_class_2 fields from qla_hw_data to qla_qpair to reduce cache thrash for target MQ. o Optimizations to reduce unnecessary memory load for good path io. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_attr.c | 2 +- drivers/scsi/qla2xxx/qla_def.h | 25 ++++++++++++-- drivers/scsi/qla2xxx/qla_init.c | 14 ++++++-- drivers/scsi/qla2xxx/qla_os.c | 2 +- drivers/scsi/qla2xxx/qla_target.c | 70 +++++++++++++++++++-------------------- drivers/scsi/qla2xxx/qla_target.h | 3 +- 6 files changed, 71 insertions(+), 45 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index f0f16d313faf..6dd984203666 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c @@ -2289,7 +2289,7 @@ qla2x00_init_host_attr(scsi_qla_host_t *vha) fc_host_dev_loss_tmo(vha->host) = ha->port_down_retry_count; fc_host_node_name(vha->host) = wwn_to_u64(vha->node_name); fc_host_port_name(vha->host) = wwn_to_u64(vha->port_name); - fc_host_supported_classes(vha->host) = ha->tgt.enable_class_2 ? + fc_host_supported_classes(vha->host) = ha->base_qpair->enable_class_2 ? (FC_COS_CLASS2|FC_COS_CLASS3) : FC_COS_CLASS3; fc_host_max_npiv_vports(vha->host) = ha->max_npiv_vports; fc_host_npiv_vports_inuse(vha->host) = ha->cur_vport_count; diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 0dec148a4580..dfa001357110 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -3252,6 +3252,7 @@ struct qla_qpair { */ spinlock_t *qp_lock_ptr; struct scsi_qla_host *vha; + u32 chip_reset; /* distill these fields down to 'online=0/1' * ha->flags.eeh_busy @@ -3263,6 +3264,8 @@ struct qla_qpair { uint32_t difdix_supported:1; uint32_t delete_in_progress:1; uint32_t fw_started:1; + uint32_t enable_class_2:1; + uint32_t enable_explicit_conf:1; uint16_t id; /* qp number used with FW */ uint16_t vp_idx; /* vport ID */ @@ -3296,8 +3299,6 @@ struct scsi_qlt_host { struct qlt_hw_data { /* Protected by hw lock */ - uint32_t enable_class_2:1; - uint32_t enable_explicit_conf:1; uint32_t node_name_set:1; dma_addr_t atio_dma; /* Physical address. */ @@ -3954,7 +3955,6 @@ struct qla_hw_data { struct work_struct board_disable; struct mr_data_fx00 mr; - uint32_t chip_reset; struct qlt_hw_data tgt; int allow_cna_fw_dump; @@ -4247,6 +4247,25 @@ struct qla2_sgx { #define QLA_QPAIR_MARK_NOT_BUSY(__qpair) \ atomic_dec(&__qpair->ref_count); \ + +#define QLA_ENA_CONF(_ha) {\ + int i;\ + _ha->base_qpair->enable_explicit_conf = 1; \ + for (i = 0; i < _ha->max_qpairs; i++) { \ + if (_ha->queue_pair_map[i]) \ + _ha->queue_pair_map[i]->enable_explicit_conf = 1; \ + } \ +} + +#define QLA_DIS_CONF(_ha) {\ + int i;\ + _ha->base_qpair->enable_explicit_conf = 0; \ + for (i = 0; i < _ha->max_qpairs; i++) { \ + if (_ha->queue_pair_map[i]) \ + _ha->queue_pair_map[i]->enable_explicit_conf = 0; \ + } \ +} + /* * qla2x00 local function return status codes */ diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index e6a1f9ca0e95..360abede3f6b 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -1322,7 +1322,7 @@ qla24xx_handle_plogi_done_event(struct scsi_qla_host *vha, struct event_arg *ea) ql_dbg(ql_dbg_disc, vha, 0x20ea, "%s %d %8phC post gpdb\n", __func__, __LINE__, ea->fcport->port_name); - ea->fcport->chip_reset = vha->hw->chip_reset; + ea->fcport->chip_reset = vha->hw->base_qpair->chip_reset; ea->fcport->logout_on_delete = 1; qla24xx_post_gpdb_work(vha, ea->fcport, 0); break; @@ -5524,6 +5524,7 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha) struct scsi_qla_host *vp; unsigned long flags; fc_port_t *fcport; + u16 i; /* For ISP82XX, driver waits for completion of the commands. * online flag should be set. @@ -5549,7 +5550,12 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha) ha->current_topology = 0; ha->flags.fw_started = 0; ha->flags.fw_init_done = 0; - ha->chip_reset++; + ha->base_qpair->chip_reset++; + for (i = 0; i < ha->max_qpairs; i++) { + if (ha->queue_pair_map[i]) + ha->queue_pair_map[i]->chip_reset = + ha->base_qpair->chip_reset; + } atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME); if (atomic_read(&vha->loop_state) != LOOP_DOWN) { @@ -7624,6 +7630,10 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos, qpair->id = qpair_id; qpair->vp_idx = vp_idx; INIT_LIST_HEAD(&qpair->hints_list); + qpair->chip_reset = ha->base_qpair->chip_reset; + qpair->enable_class_2 = ha->base_qpair->enable_class_2; + qpair->enable_explicit_conf = + ha->base_qpair->enable_explicit_conf; for (i = 0; i < ha->msix_count; i++) { msix = &ha->msix_entries[i]; diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 13e4d2428a9a..44be2c8237fd 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -387,6 +387,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req, /* 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()); if (ql2xmqsupport && ha->max_qpairs) { @@ -2708,7 +2709,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ql_dbg_pci(ql_dbg_init, pdev, 0x000a, "Memory allocated for ha=%p.\n", ha); ha->pdev = pdev; - ha->tgt.enable_class_2 = ql2xenableclass2; INIT_LIST_HEAD(&ha->tgt.q_full_list); spin_lock_init(&ha->tgt.q_full_lock); spin_lock_init(&ha->tgt.sess_lock); diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 8e855093740c..66bb4825339f 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -577,7 +577,7 @@ void qla2x00_async_nack_sp_done(void *s, int res) spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); sp->fcport->flags &= ~FCF_ASYNC_SENT; - sp->fcport->chip_reset = vha->hw->chip_reset; + sp->fcport->chip_reset = vha->hw->base_qpair->chip_reset; switch (sp->type) { case SRB_NACK_PLOGI: @@ -1032,7 +1032,7 @@ static void qlt_free_session_done(struct work_struct *work) sess->login_succ = 0; } - if (sess->chip_reset != sess->vha->hw->chip_reset) + if (sess->chip_reset != ha->base_qpair->chip_reset) qla2x00_clear_loop_id(sess); if (sess->conflict) { @@ -1162,7 +1162,7 @@ static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) static void qla24xx_chk_fcp_state(struct fc_port *sess) { - if (sess->chip_reset != sess->vha->hw->chip_reset) { + if (sess->chip_reset != sess->vha->hw->base_qpair->chip_reset) { sess->logout_on_delete = 0; sess->logo_ack_needed = 0; sess->fw_login_state = DSC_LS_PORT_UNAVAIL; @@ -1917,7 +1917,7 @@ static int __qlt_24xx_handle_abts(struct scsi_qla_host *vha, cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd); mcmd->sess = sess; memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); - mcmd->reset_count = vha->hw->chip_reset; + mcmd->reset_count = ha->base_qpair->chip_reset; mcmd->tmr_func = QLA_TGT_ABTS; mcmd->qpair = ha->base_qpair; @@ -2146,7 +2146,7 @@ void qlt_xmit_tm_rsp(struct qla_tgt_mgmt_cmd *mcmd) spin_lock_irqsave(qpair->qp_lock_ptr, flags); - if (!vha->flags.online || mcmd->reset_count != ha->chip_reset) { + if (!vha->flags.online || mcmd->reset_count != qpair->chip_reset) { /* * Either the port is not online or this request was from * previous life, just abort the processing. @@ -2154,7 +2154,7 @@ void qlt_xmit_tm_rsp(struct qla_tgt_mgmt_cmd *mcmd) ql_dbg(ql_dbg_async, vha, 0xe100, "RESET-TMR online/active/old-count/new-count = %d/%d/%d/%d.\n", vha->flags.online, qla2x00_reset_active(vha), - mcmd->reset_count, ha->chip_reset); + mcmd->reset_count, qpair->chip_reset); ha->tgt.tgt_ops->free_mcmd(mcmd); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return; @@ -2568,20 +2568,22 @@ static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, struct qla_tgt_prm *prm, int xmit_type, uint8_t scsi_status, uint32_t *full_req_cnt) { - struct qla_tgt *tgt = cmd->tgt; - struct scsi_qla_host *vha = tgt->vha; - struct qla_hw_data *ha = vha->hw; struct se_cmd *se_cmd = &cmd->se_cmd; prm->cmd = cmd; - prm->tgt = tgt; + prm->tgt = cmd->tgt; + prm->pkt = NULL; prm->rq_result = scsi_status; prm->sense_buffer = &cmd->sense_buffer[0]; prm->sense_buffer_len = TRANSPORT_SENSE_BUFFER; prm->sg = NULL; prm->seg_cnt = -1; prm->req_cnt = 1; + prm->residual = 0; prm->add_status_pkt = 0; + prm->prot_sg = NULL; + prm->prot_seg_cnt = 0; + prm->tot_dsds = 0; if ((xmit_type & QLA_TGT_XMIT_DATA) && qlt_has_data(cmd)) { if (qlt_pci_map_calc_cnt(prm) != 0) @@ -2592,7 +2594,7 @@ static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, if (se_cmd->se_cmd_flags & SCF_UNDERFLOW_BIT) { prm->residual = se_cmd->residual_count; - ql_dbg(ql_dbg_io + ql_dbg_verbose, vha, 0x305c, + ql_dbg(ql_dbg_io + ql_dbg_verbose, cmd->vha, 0x305c, "Residual underflow: %d (tag %lld, op %x, bufflen %d, rq_result %x)\n", prm->residual, se_cmd->tag, se_cmd->t_task_cdb ? se_cmd->t_task_cdb[0] : 0, @@ -2600,7 +2602,7 @@ static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, prm->rq_result |= SS_RESIDUAL_UNDER; } else if (se_cmd->se_cmd_flags & SCF_OVERFLOW_BIT) { prm->residual = se_cmd->residual_count; - ql_dbg(ql_dbg_io, vha, 0x305d, + ql_dbg(ql_dbg_io, cmd->vha, 0x305d, "Residual overflow: %d (tag %lld, op %x, bufflen %d, rq_result %x)\n", prm->residual, se_cmd->tag, se_cmd->t_task_cdb ? se_cmd->t_task_cdb[0] : 0, cmd->bufflen, prm->rq_result); @@ -2614,7 +2616,7 @@ static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, */ if (qlt_has_data(cmd)) { if (QLA_TGT_SENSE_VALID(prm->sense_buffer) || - (IS_FWI2_CAPABLE(ha) && + (IS_FWI2_CAPABLE(cmd->vha->hw) && (prm->rq_result != 0))) { prm->add_status_pkt = 1; (*full_req_cnt)++; @@ -2625,17 +2627,17 @@ static int qlt_pre_xmit_response(struct qla_tgt_cmd *cmd, return 0; } -static inline int qlt_need_explicit_conf(struct qla_hw_data *ha, - struct qla_tgt_cmd *cmd, int sending_sense) +static inline int qlt_need_explicit_conf(struct qla_tgt_cmd *cmd, + int sending_sense) { - if (ha->tgt.enable_class_2) + if (cmd->qpair->enable_class_2) return 0; if (sending_sense) return cmd->conf_compl_supported; else - return ha->tgt.enable_explicit_conf && - cmd->conf_compl_supported; + return cmd->qpair->enable_explicit_conf && + cmd->conf_compl_supported; } static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, @@ -2644,7 +2646,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, prm->sense_buffer_len = min_t(uint32_t, prm->sense_buffer_len, (uint32_t)sizeof(ctio->u.status1.sense_data)); ctio->u.status0.flags |= cpu_to_le16(CTIO7_FLAGS_SEND_STATUS); - if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 0)) { + if (qlt_need_explicit_conf(prm->cmd, 0)) { ctio->u.status0.flags |= cpu_to_le16( CTIO7_FLAGS_EXPLICIT_CONFORM | CTIO7_FLAGS_CONFORM_REQ); @@ -2654,7 +2656,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, if (QLA_TGT_SENSE_VALID(prm->sense_buffer)) { int i; - if (qlt_need_explicit_conf(prm->tgt->ha, prm->cmd, 1)) { + if (qlt_need_explicit_conf(prm->cmd, 1)) { if ((prm->rq_result & SS_SCSI_STATUS_BYTE) != 0) { ql_dbg(ql_dbg_tgt, prm->cmd->vha, 0xe017, "Skipping EXPLICIT_CONFORM and " @@ -3064,8 +3066,6 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, return 0; } - memset(&prm, 0, sizeof(prm)); - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe018, "is_send_status=%d, cmd->bufflen=%d, cmd->sg_cnt=%d, cmd->dma_data_direction=%d se_cmd[%p] qp %d\n", (xmit_type & QLA_TGT_XMIT_STATUS) ? @@ -3095,7 +3095,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, ql_dbg(ql_dbg_async, vha, 0xe101, "RESET-RSP online/active/old-count/new-count = %d/%d/%d/%d.\n", vha->flags.online, qla2x00_reset_active(vha), - cmd->reset_count, ha->chip_reset); + cmd->reset_count, qpair->chip_reset); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return 0; } @@ -3132,7 +3132,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, cpu_to_le32(prm.residual); pkt->u.status0.flags |= cpu_to_le16( CTIO7_FLAGS_SEND_STATUS); - if (qlt_need_explicit_conf(ha, cmd, 0)) { + if (qlt_need_explicit_conf(cmd, 0)) { pkt->u.status0.flags |= cpu_to_le16( CTIO7_FLAGS_EXPLICIT_CONFORM | @@ -3232,7 +3232,7 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) ql_dbg(ql_dbg_async, vha, 0xe102, "RESET-XFR online/active/old-count/new-count = %d/%d/%d/%d.\n", vha->flags.online, qla2x00_reset_active(vha), - cmd->reset_count, ha->chip_reset); + cmd->reset_count, qpair->chip_reset); return 0; } @@ -3978,7 +3978,6 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) { scsi_qla_host_t *vha = cmd->vha; struct qla_hw_data *ha = vha->hw; - struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; struct fc_port *sess = cmd->sess; struct atio_from_isp *atio = &cmd->atio; unsigned char *cdb; @@ -3989,8 +3988,6 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) cmd->cmd_in_wq = 0; cmd->trc_flags |= TRC_DO_WORK; - if (tgt->tgt_stop) - goto out_term; if (cmd->aborted) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf082, @@ -4196,10 +4193,10 @@ static struct qla_tgt_cmd *qlt_get_tag(scsi_qla_host_t *vha, cmd->trc_flags = 0; cmd->jiffies_at_alloc = get_jiffies_64(); - cmd->reset_count = vha->hw->chip_reset; cmd->unpacked_lun = scsilun_to_int( (struct scsi_lun *)&atio->u.isp24.fcp_cmnd.lun); qlt_assign_qpair(vha, cmd); + cmd->reset_count = vha->hw->base_qpair->chip_reset; return cmd; } @@ -4390,7 +4387,7 @@ static int qlt_issue_task_mgmt(struct fc_port *sess, u64 lun, } mcmd->tmr_func = fn; mcmd->flags = flags; - mcmd->reset_count = vha->hw->chip_reset; + mcmd->reset_count = ha->base_qpair->chip_reset; mcmd->qpair = ha->base_qpair; switch (fn) { @@ -4473,7 +4470,7 @@ static int __qlt_abort_task(struct scsi_qla_host *vha, unpacked_lun = scsilun_to_int((struct scsi_lun *)&a->u.isp24.fcp_cmnd.lun); - mcmd->reset_count = vha->hw->chip_reset; + mcmd->reset_count = ha->base_qpair->chip_reset; mcmd->tmr_func = QLA_TGT_2G_ABORT_TASK; mcmd->qpair = ha->base_qpair; @@ -5201,7 +5198,7 @@ qlt_alloc_qfull_cmd(struct scsi_qla_host *vha, cmd->tgt = vha->vha_tgt.qla_tgt; cmd->vha = vha; - cmd->reset_count = vha->hw->chip_reset; + cmd->reset_count = ha->base_qpair->chip_reset; cmd->q_full = 1; cmd->qpair = ha->base_qpair; @@ -6643,7 +6640,7 @@ qlt_24xx_config_nvram_stage1(struct scsi_qla_host *vha, struct nvram_24xx *nv) return; } - if (ha->tgt.enable_class_2) { + if (ha->base_qpair->enable_class_2) { if (vha->flags.init_done) fc_host_supported_classes(vha->host) = FC_COS_CLASS2 | FC_COS_CLASS3; @@ -6747,7 +6744,7 @@ qlt_81xx_config_nvram_stage1(struct scsi_qla_host *vha, struct nvram_81xx *nv) return; } - if (ha->tgt.enable_class_2) { + if (ha->base_qpair->enable_class_2) { if (vha->flags.init_done) fc_host_supported_classes(vha->host) = FC_COS_CLASS2 | FC_COS_CLASS3; @@ -6871,7 +6868,8 @@ qlt_handle_abts_recv_work(struct work_struct *work) struct qla_hw_data *ha = vha->hw; unsigned long flags; - if (qla2x00_reset_active(vha) || (op->chip_reset != ha->chip_reset)) + if (qla2x00_reset_active(vha) || + (op->chip_reset != ha->base_qpair->chip_reset)) return; spin_lock_irqsave(&ha->tgt.atio_lock, flags); @@ -6903,7 +6901,7 @@ qlt_handle_abts_recv(struct scsi_qla_host *vha, struct rsp_que *rsp, memcpy(&op->atio, pkt, sizeof(*pkt)); op->vha = vha; - op->chip_reset = vha->hw->chip_reset; + op->chip_reset = vha->hw->base_qpair->chip_reset; op->rsp = rsp; INIT_WORK(&op->work, qlt_handle_abts_recv_work); queue_work(qla_tgt_wq, &op->work); diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index 22c783e3e38f..5f497311d7b7 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -881,6 +881,7 @@ struct qla_tgt_cmd { struct se_cmd se_cmd; struct fc_port *sess; struct qla_qpair *qpair; + uint32_t reset_count; int state; struct work_struct work; /* Sense buffer that will be mapped into outgoing status */ @@ -906,7 +907,6 @@ struct qla_tgt_cmd { int offset; u64 unpacked_lun; enum dma_data_direction dma_data_direction; - uint32_t reset_count; uint16_t loop_id; /* to save extra sess dereferences */ struct qla_tgt *tgt; /* to save extra sess dereferences */ @@ -980,7 +980,6 @@ struct qla_tgt_prm { int seg_cnt; int req_cnt; uint16_t rq_result; - uint16_t scsi_status; int sense_buffer_len; int residual; int add_status_pkt;