From patchwork Wed Jul 19 18:51:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9853007 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 BBB4960392 for ; Wed, 19 Jul 2017 18:52:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 956DE1FFC9 for ; Wed, 19 Jul 2017 18:52:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8A02C2621D; Wed, 19 Jul 2017 18:52:24 +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 C1FDA1FFC9 for ; Wed, 19 Jul 2017 18:52:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755010AbdGSSwX (ORCPT ); Wed, 19 Jul 2017 14:52:23 -0400 Received: from mail-sn1nam02on0087.outbound.protection.outlook.com ([104.47.36.87]:13820 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754034AbdGSSwS (ORCPT ); Wed, 19 Jul 2017 14:52:18 -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=K4r5aATSV0LRdkmY9536nhMdSTSnL1VoqeZDOMJkLrk=; b=R6WPCtL6qcfg4rLISeZxHYDuHBCZnTH/p/TNUNCgG31nNrFnycLU32QsD+ckQ/h1O3UUo07Pchl4tJAvhRirYJH01DvRDbXEkDp0lxISqRhN7stI65MXK54XTBQFBhfSo7U6YHqtd6Ha9ohIFnG53u6WMNAzvwuOw2RCmS7858E= Received: from SN1PR0701CA0024.namprd07.prod.outlook.com (10.162.96.34) by BY2PR07MB2438.namprd07.prod.outlook.com (10.166.115.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13; Wed, 19 Jul 2017 18:52:16 +0000 Received: from BN1BFFO11FD022.protection.gbl (2a01:111:f400:7c10::1:136) by SN1PR0701CA0024.outlook.office365.com (2a01:111:e400:5173::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10 via Frontend Transport; Wed, 19 Jul 2017 18:52:16 +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 BN1BFFO11FD022.mail.protection.outlook.com (10.58.144.85) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1240.9 via Frontend Transport; Wed, 19 Jul 2017 18:52:15 +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, 19 Jul 2017 11:51: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 v6JIprMj008619; Wed, 19 Jul 2017 11:51:53 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v6JIprAd008618; Wed, 19 Jul 2017 11:51:53 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 5/7] qla2xxx: Simpify unregistration of FC-NVMe local/remote ports Date: Wed, 19 Jul 2017 11:51:49 -0700 Message-ID: <20170719185151.8564-6-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170719185151.8564-1-himanshu.madhani@cavium.com> References: <20170719185151.8564-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)(39860400002)(39450400003)(39400400002)(39840400002)(39410400002)(39850400002)(2980300002)(428002)(199003)(189002)(9170700003)(101416001)(305945005)(72206003)(87636003)(76176999)(50986999)(36756003)(54906002)(478600001)(86362001)(2906002)(106466001)(1076002)(4326008)(80596001)(33646002)(38730400002)(5003940100001)(105586002)(42186005)(356003)(626005)(81166006)(47776003)(8676002)(50226002)(189998001)(48376002)(6666003)(2950100002)(50466002)(8936002)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB2438; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD022; 1:R/TVIffuwgfNpWKcQlb7GSkwUqNwX2BZPqWXtnHszrV6lPHAOpz4SgIZjfX6S22gA5c9ygR8HVZeN0XcEVtXNpDVtUHCI9x9nhbtNxotcbzcT0ETbbqAb0j04ph3kHFv1jTsikGTC8TcVG7TI/cHCB4mDck6zDMctuymRqsKJe9IYB94BJNkORoQsyuqQ6RvN/+HIc2/ddhiifDO8i1r++3LiH7bVFSwSpOacC8sFZWuAYh3kfS4lS5rGphH1kjF65E5sd0Hun6p5kOFm25TaRMG6xrOmwuLAMwoaGEgwmheKrBAAqrNe30QelJlgEJO//OrYRCyqH6HHdEeCiJ1Fplyy9eM4gbU4pslE/9j0aTpqTzF4/6diOGydtu6zvaBQiogkmfW6L2zRdltqvdEASLJroOWODJKmVvV2qIZS2rNbBPiBqGhjp52xvPVtKoFbZEyuubWxabQHsL8njDS0HI+QViMJR3Qzy0tU0+esEZNx8uOL0jYuagRhMFzHUZ3udCnG+Th4Ej9psnC1px87yLgEgDmhckf/p6K1bMskDxq8qMXnGS2l2p1eRinurJ34OPYCLOJ8mYUIF/kU/ZQNBhTQMG9hn7qoQKmjYmngrHdHO/chnNPvWZjvXJdMQLwz9aKOJqkTEO2ZtoFmgx3v2YYfuxp7JMfxauVBUYGgO/qtQDM7XQnulCZm81sVm3hQUAlroY/VSu9EAiJ8vowzTQQC0BxpmVNhAYGBuQkJoHWLHZgau43FBaRm1O0vOmtZPk8ggST7Bh9CmtSlP6bttZMNWlnM6tJ9F1LkxdKKSaRtBCsO1a16zNnhrAwi8q+4q50hpqJpbudGcy7DTKrWccIBb2m/CSEfIRnwapIbEqJW+cNn+3FwtSjowQV510r X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cdb3ca4e-4c78-4ede-8631-08d4ced74685 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR07MB2438; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 3:mMG9py22BZELAro9wQ6wOai2qqDyGdPaAs61dtbnfNGM23Z4ugBTVZ2wJ52SN1LjrJcVun355SNRnF2p3dhwiMgamakvg3kn+fdnhxRVlJ+7Foib027GzTRgacJRpDy4e5tUDfRQzWV1YYCSY1CZQWk0lOH/e4LjKbWHFOv0sS0VuKWt+WsVodUHJ/ObmjsFheaY84KknQ7eIke+QCQ02BBaX8sU+SrLQkadCnnD7B3N5CBaTDHmMF2IVEuXPTZSQVztoDeImHuiaZdCvFKZMFa2NRx00fqvxTELgWNk5SY3XKDOeZ+g6CE6UpTJI5LYQ/xnUoXysHe+qhyKLiIP94BS/ffpBiA0889ZR5jhOwLQzsuqVd8Zpxe2mslZh8dpVO0E3GGwyVZDqFVunbWTBFMHJJE7zVsCAFGm1begRPVloibornV3KJIjjp9yRndz1oZWJsm9QvgPlharys0KXrGU68GHscV2mK1Ky2aaMip94cMRGKEQYK4dnhGpUO+Z8QKzT4aA+7mC/DuOhJlU2hTR9bHkFaNRCnHCLZOst3BFgDM3KfFLZ6hGxDqSegH4oIpYwLaxj8fW1EzSERfX5ZP/ElXnbH7bk/iOkFlfhBKTGtHNakmKktx5FxmM3NFn+P83s2AWMKX34em/9/UFTaZvJzUNekj6IJUtjNEd/+XvjCwMhaUdhHHxhOfmrlFy27UQWpLgUBCuHbXI1anLqcJk3BTnoNTFcapcapVQZRHuZRBEC9tgVZWCiPa/AipHtysS1Q/vHMJPOJax0kpwOh3ih6iFFrFSzLUuTX7MHWQpy9BV5WJoj+vudQ529Q9Lh4lDnO7LAp4XXtR2NMdiA7EVW0c9CL4asFghXe0BbMc/be0GEgJt10FtVkGDHPnm7SjC8Lw/DP8nz5XohCavTw== X-MS-TrafficTypeDiagnostic: BY2PR07MB2438: X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 25:shgkXGcF2Mai/bU9WZaXSO81Nk7VWb1ibqODcLxJvIr6M8pxtSnBMYjAybRa393oiYt+mfk2pk77QE7x0O4KFCw7XKeB82aIoml3ZYVs0yIDNRSbzsbveUDurC8Gi+BtTXu4/HAAdDpAW9kD3h1lhBUnd7KIu/PkrZgLndTBJYdpyGBNfr652GJ3+E2ov4CX0zuzg+fygR/Jj9VPAgjytrUM02ryCEIDtO0m+VAksW/wuj+VjlUIB7ngQzlxXcL7bdRcG1u4lHZvF/4SFWkRDpK691+9ZfEdu1p3rhuTieiTpbknTy3lZ9PqB6gVOkI4odPb8+FZ9VI/ZR1nYz+sEiD0NUah+sPiER1FYE3oZA6MHi84fN2d1m0RHwl9CjJxLJsT5WLL/XkdjYQoZuERlJCLqUE09+pJ8v9IAmwanW2800vuUbDkUfLf9/farPA3t8bEFrd08nds7NQFpU4xGMmHFtPuEPuEjODj1KYfMyptDMYehGavEPcnFEkzTMVd8wf0ZHq1ptNlnHwNkug7FYqS++N5pzcHAiAauYMf3aIoLvwJkbPVxToXFJgrExrGGZvlU0HKNkoPY8xRhlg/0RYTflPZbjy+ZNFYz1eX6wHmGJFomi1TFLBYTk4PG3wRPw6Z8LLvokebI3q2C1GNVlVEMsZcCKzDyDyZ4i2TPjYbbbNLqUrgPrGJ6vnVWMP7SV6kaaxzUBrkZ7qJl9x6N0fRYY83kcTyeMWdkvGX/sYeR7VvSf5knbhSHgslCU7toBAd5emAJfetZNyLhmIR7D2HlWc4ea4Rywh7O7R6r59Gu+s/ejJ+rrTVagkxUf3FMZ/mcPemK5c80jW/6aF3EUmiecintK2hhmmEn/hE79ads65zqfYkjo35qVAvKsa1Ak9V9yW7hFv0VPJd+8IhKsLr726IHSkxAdS66WllX 1c= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 31:QaQ77WpYR1o+MilRpUK3bXjxLehODlLu5pZkuQfYN0MpakEs1aTkJT+J2ws0zGco9VHtziiRdrKi3DE4HA2w/A6BAXXUuTE9GCSKjxhs7qheRWmf3mC8BydoBhSSg1I0YrBMKEXBRb30LtKdRaLJ2W1NwhTCyHShiVM3oD+SlejQi7khAOJX6vqmVRtemQ0nAS68S09WFO4BTkiFvVIvL9oJJ/Z1VeLDFUzci8htrcjXRZdtQmBuE2qQaluJs8CZKyE44PGqnVWAJHHQ65MfuZz29dwMU9iuHdJMBoaYuqZOX89LbUBKqLRBuRxiV4bq3sKbnmzQzCKXAdPUnKkcaRlFvtm2WZ/4UCCFLYHd8BuxwljrE2/3KZqe9prXF7AVrJLczoZzQwWUUXOuxd19IOxCf0LlngNPrzLU1Y8qe3J7SuEL1o4Wm6CceJ+pJNKh+Tx4xnnGFg8Cz8x8jrDwsUMHZ0wA+vgNMRnV4wlJQxyPbpRaxCyqxkAKLWwadepg5LJh/XG5KxTJJz5SdTOPuRTOj84/yrV2D5M7x9nYL5wFH0f+djL4P4vo6JYKskaMciTGUrmJvZw3YIHY/tidzI8hsapihsd3pqa6yKPrY7rbz51638hlOGlB5JK8Br7g232smm8pueGf644dMLZCQFtb7ai+431hTSm1m7xUyegao5hI6MnLOLHeIuYKyoDMf2r6NewbLtRXkiH0X8fJgw== X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 20:8HrOOHj77K31OJQDfknbDTfF4pufWWem78bj72+3NQhWPuhjfJVdFWafPJ7U6lRYWzTd9eUVRGik9L57KHQmwjh4HsFYOc5wObonUwh2JRs9L8PhrAsFJbfh38P2lb0favjpvmA77YL53wHoWuyhFMwwoibJluJko6fy9cvrYI780nwSog8Fv/TKqwdRqus9kabODjp9EDBBb+9/Azpt0banj1gZz7NJKL84Dlanzzzq5Xdr6Eyu8aeoy2EtCpQZPt46JfT5ahmeUn55XJfmoiRoKEtNRUeRm+cLeESDjsHCj+XYzK8vjHsKdBNYGxPtvyddoAJBr620HpnPHXBS8oQW5sj/KDLo/ZwqEQuhktg4UtEFMIX5EmjT0JYor66tUBefy1sAmv+VimVw9C9lw+1+Arvy2Chy6CS2qTTE+MOHFPOqfJzpPQqAQnzHar2YFvnXdRxH8oLU75agCh/v11HTjAbOQHxaU22W2RoE2kA14psTTSHjlT3Ir6ZLzWqb X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(13016025)(13018025)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR07MB2438; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR07MB2438; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2438; 4:vhaEG82lO4XmCL24GqTKhDBY7HWaAFp/U2gwE8lvog?= =?us-ascii?Q?MFInyoEyoa8/2qaPhy81GTq803JEjmMY80RGZe0VMjrjSJmx5hMEin9GyCf0?= =?us-ascii?Q?n4u8VJlu9UgOaJbjBhZocWJpn4DShDkelftvVg9yMRv0gECuHK0acIXG5cpq?= =?us-ascii?Q?I/gWAGFnjUGmYfNoHJ5Qpl0aSZlAmhRNSVCWPjHqFIIOT6GsXLmNbRKb+ZpR?= =?us-ascii?Q?X0Az4ANveJFXRMUwlW3+QtBpOAvPc60klrBioIveQ7tW+PvRRBzcp5JZxcCK?= =?us-ascii?Q?Ej7n0OUCVv16rQ0TggRlrqsn8CiSHNegc9by0G7LMo5wdFfFXupOcfGZQgZ4?= =?us-ascii?Q?n8cX3PKRcY/us7L00o4tJDQKFUOXYaiPeRXrzitigCRDByV00xSmFioNDlh3?= =?us-ascii?Q?bB+d+W+NLpoKf0LT6KIqESEqMINSPMH/bvfK6CDuOJVpN4EV/e+E64yVSR00?= =?us-ascii?Q?lgijmrRQEweZDkD+InLCUWEV3PyCCH5o3VFJ7cIeyRYcv0fsqiUAkrFUcNQH?= =?us-ascii?Q?b0WbDl/KJFXZIcCDL7asmFKCXWzppi1wkYCMzH1nArg3VfRW1MIEYK9AOMTk?= =?us-ascii?Q?xPMahWwVBiNaeHUyKQzCwlE+8g4yU8zE71jXPC+j72VWUp3g+VdqPHe9aYPi?= =?us-ascii?Q?Uo0sb3J4BXTdTcBkwgv0DoDZ3PZr4PBydbNt5ZaQcawlXUh3RH4eMtumCa+b?= =?us-ascii?Q?ZTs09I+V2oxCZtqi/CVf1Bjow4ojOWJKcMjidHznoEY6oWQgq2n9gJHrZyE6?= =?us-ascii?Q?iZLmyAx6X+RswL3z4DHKAaxALKJUFPBzZktr4q0AQfld8tox5EjrcYOYU3hC?= =?us-ascii?Q?Ey2XpoBcRv0Vs/BqYMIrDRW6mE5nZfLE8oFdk68kGFfvyEC26eupwoKD7Ye3?= =?us-ascii?Q?DnRTRXep5q9ym9D/5seCfX/IFGJebBVW4/E0i7+SMYrcr0elPaDM9gCyVV77?= =?us-ascii?Q?kNJrpjO3W3IO6pfmYq4s0AyWMsVNVv4u17QkvnbTR0jJUdEZp8hzmqbpw2Z/?= =?us-ascii?Q?rdxqAHAVnJer9T3oKmOQFpPKlz5csSvVcidafQ2oWg/uzJq6zHNzx4lRAe9R?= =?us-ascii?Q?br1dmtl0vPIqr+WQZnlxyq1bNk7bMX9hOgZefthtALVXPH775biFV7ApATZL?= =?us-ascii?Q?+vpJri41u/tCy4HyzoM6+74O3vnh9TDibUTegI9jFP2+BJhmuzhEpbqhyAbg?= =?us-ascii?Q?8WgCPTgQYNnQ8=3D?= X-Forefront-PRVS: 0373D94D15 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2438; 23:aa65JOJ67xkpsayn9Eurm6BObm1f8EIrEuMzHe77q?= =?us-ascii?Q?vzJHSYYocw2M5gPeOhP9YGE9q/DF8Ptv8TN4vrL5HipLhsrdiBGqK6YbEDek?= =?us-ascii?Q?beSzPd57nVm+k4T3vW9HW8r2j82z+7cLihJN8qg+Of6MGEA4ST3nlhUJ5rW8?= =?us-ascii?Q?NOj8URbg9GUM0BptY3cAEaWss203bFTsiRAJe2cQ97MQUdMf0AlWh3CaCDWh?= =?us-ascii?Q?OiFa4Byzls4G9AlNwjZ7JCNmdgCuRdP/F1PeD9TZ9HuHRDVfMTp24pR90MgS?= =?us-ascii?Q?ZAilv7vE5QB/0WNQ70EwHvWYQ5EFmzBj7Bl6sCbBSkebPLRDa5Cd7cW+/amZ?= =?us-ascii?Q?EihAmu/DZeevx678pYHNWA4oSueRgqbzbznwfMtX0hU3m9LKSMbdXQ5RoVB6?= =?us-ascii?Q?jWG5XpBxQTwt92e0HqFbyWLlFBCERxpz4+KbItZ+BCW/FdkR4r6X9vnc/del?= =?us-ascii?Q?u39UDzBTVbGwhf/zF2m0bBu4Otzoyyj+hEF9xvdLIVhx482reqMtCSWG/LsD?= =?us-ascii?Q?YFhLaAh4ldNWngcHpqMxaJRUN43/cKYyRSjWg74LqR7TR8cyVqlLf9xKIZ4Q?= =?us-ascii?Q?ok+vS56TkHZGn4EybeUEB0/I8VR+0drWAa/zaUDfsZ4DNXAxdUeDnEM32vLK?= =?us-ascii?Q?NrEnXX9QjGSKqSN4u4+xU2eucARmkWErJlKBVonUOedF9jI8Fzno1ssSNOfK?= =?us-ascii?Q?B33haRnN0QK9MJ7cypesSd6YP5Z2iZajFJOMM+9vFSGRInMWXlkqzhYZ+Yix?= =?us-ascii?Q?5hOeQKngjT9eY1uLurRmiBFKTC/svdgHqq07VSlRcGuXzPJ6ktFWRYdbv9Sd?= =?us-ascii?Q?UVSoKf3Jnz9g5UyQJntsp7W5SI4E7PtUEM22zp89UPWL88jPhvbUMVtNVJNA?= =?us-ascii?Q?O6WlZI7sVtGLKXOCrYqWPdlG+nb7zYGwQWTaZ1gL3QY4pOkMb+YEUSdI23hj?= =?us-ascii?Q?Xc97n0OLjxTnB14+MzY6E15Q4CQjMDenhmW2KGDO46518+7J61WUaHfSnxDy?= =?us-ascii?Q?02mAR68aqIe+8bMLsykQqEiXCVrl3X4BTs9+plfRAjVBD7g1QwoiiEok79Pr?= =?us-ascii?Q?BSnK3pR0r+NZtn9axLA5Di3YoMPAls5KOFlJHYyNmEwF/zfIAIov+JHRFJuY?= =?us-ascii?Q?y/P+qcuCGg=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2438; 6:8VkXtMZoQ093N5GXOKvqtBXfMk6Ao4HPh/ga+ovXRv?= =?us-ascii?Q?KnalYNYtJvWLneN2ZxAGEhlrPAdILJN+87YldmStcRJ/4hCCanM8IFemDQpr?= =?us-ascii?Q?9vZ5Y10Zi4TBTDnGF8YZOW4K7Qp+1ROzV+oLtz/Hg+h4gLMpuedEMfAZDflM?= =?us-ascii?Q?NnYv/rLPYIVtV+y+j2rGvKJY+owYWAQhT4sQ4n89JrcPmJcVFXR9odrC84PT?= =?us-ascii?Q?etzU5XJ+SIADxdtdqR0yDrBQ62L/pjdgwQ58JN9HIS9xFoc310BNuJkdBGcf?= =?us-ascii?Q?3/ammzVtxqPuSCgeIwXNWNG4wnc7w0/aoRKK/9ZnCW4ZmbkfbRbe39Hc22Jx?= =?us-ascii?Q?I78WoOOplJAT04TnAEaAMdX/70FUHMiZvdFbGAixItGE5+N56N7ujVFVmm7i?= =?us-ascii?Q?F9QVvvML7JpTflAOl8ee/tl4I/sVXwqo3cKeu2CHjprDC9WigJ2V1q4+yV0N?= =?us-ascii?Q?rdddXwMNugWre8ultJFytcEnoxNueXCsXgOBIUh8PzcDacseRpWClXmLbTxl?= =?us-ascii?Q?hpFxOD5uR8wvNfyENYONzb/pvQgVRemujEp2L13weJVsoioX6X7uEGgQ/L9h?= =?us-ascii?Q?i/aHPyyGpFHUYtb9gD3EUvbL1ImoIoAsFZrS1iN3d3NJ9b0fwxfN6C5D+/Fe?= =?us-ascii?Q?oJwq+oX/U04hklgnQ7yaKb6AlZqoea6ZOl2E3yaMOv5imUNkvwy11LCUa8ly?= =?us-ascii?Q?AZBI8vb3xWGiVfRiFGasYqujW02skj54nd5tUwXseB4Vg75NBq1ojCGzhlHg?= =?us-ascii?Q?7H7/8HPmC7kn2olVrrd+Z7iyoGUkwvv101LaQUmN3nwRQvZFgWOJLYPSqp+v?= =?us-ascii?Q?Yr/vl0n1E7nr+Tm9hmr+F5v3pRptFSkZSQrjKSANx8tjcdTiueHjRq0RrlOm?= =?us-ascii?Q?3Z24bFT+3SM6FChwO2NLNW7K87sfAYlh0Qm7ovmdA9i7npF399sJq14t6fWW?= =?us-ascii?Q?qZbzCMdpQEjUDWjHMr5xO4rUC6MAkkJyXOiqFsKDxPbNN1/lRtsAxfdNxf9Z?= =?us-ascii?Q?Y=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 5:9FcYOAJ9NceQmBnrpddfxBEJyN43Lw/ggU6JuI/MhIPMAeT7e2uRhllfJLDtAvTFIhHM0iCU2u8QLz6EB9n1I4dAvMVsQe4AAAXRzcqLQ/aif+zCJZvCZsGjWOvQzKetGCpYRVNxyyXoI9bsxPmoBQzo2vOH3kW7xhPkZnhJltxvNT2G0Khb2gjsxHH3OHTEQz6Hfim1j9UnEN0LSYK8SMTAOeZ6o/FiBeSoigeSV9QiiMkvWbB6T47exJuI9bqiS0eM6kCiodbZJjldXZcs8thf8FGWQNROh9NUoiG1wjJ8YrGxElT8TV/TUB8b70Lz6ztX0/Y5jNJaCnZolp65rDVxzWYQ2ByjjCjM5+3S9PsshAl/sR88AYB6YGHyQ8PYhgEukWffLLJY9sClOaP9NmSQtiFGoyT2aefjgtKIIO77v9v5ju+JWcJDRiOChHATd5Ha9qRFprmBgm45Cvz2a5BixEqnZRC4puQuAZejYmkzQ3z1DK5p4WYaQkMdcijz; 24:f/k+aMan0nQKemTEAmM9oGqDR/oBJmV+6yzlmE8csdosfa0LvLvsrYSlSINXsN3U7OjzNCK8oTHG1DgdxPAg7KxsB1G9PLxjfR6QAYP+14k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2438; 7:OgLR5caOmmqK/cQ0IiNUV1rd58JJ+pqBGHnU5IV+vwrUae08wR27krkkKel2oKM/ii6YSLvGfW9yxAFWHlaWuzkb+hjBxmRqv1KgxmI5nS+EcIHLUnmRpoE/orZxupDhzFqONzSFjy+aySmhIwsDRbCVEm26Pu/JWAURl+f7Iq4DmNBYRPmmExZUmpF9+00O6agc0BK/uHF0pCSZSqqnVPeGnvW7rPzN74tRi1353sNXjQ2/qccKCRayJ5R4LGY0yxnmwjQTS/McrilxjEQ11jgJuvfVA+sOWEr9ei+VRT+aM+uGnRz1PMIkI+Ji4IiT1gu8J2vTP3tNuWYbfEZ44+v2/5WYWQ4ALYLzlVEvT3Zv5lwe58aMLQ4C5mLVID+arE00TK1QbwVqJd8Q0f6AUQrzKevksYgHvr1KYG/xmOcve6hNiizJkflrwvqP4dJRDZPhu7g/J9qEYBMFXHPHyX7YEi2t2CTHfg+lWF2FB/J7iiZvl1WpVxJ+KMnCRQKpFP4l+h6koBIPI9IkzXjAEBKiL0uDbB0Qmu78SHVED7ACxdGUjHti4al5CS5U0nxFb+jtSUDK+JAB5lpAx31MGhfGFMbALMIEHy90C6I53E+cC486RFx2eo34P4qJ5Dqt/VSihN0KuK32EMg4nvyGb01lsdwW8T9pDh7W/MyRIf51x/ymORem9qx9x/3g2EfEIz7EOns7d3eoP9zjH/2BHIPjDyXSS8lH0/YstoTzfPUMWOSRIXLGm6ocAJzA53sEIMNbdrY7lc/6FxI+C7YOno7tjepxHAsnOhNmpbmIiWk= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jul 2017 18:52:15.9096 (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: BY2PR07MB2438 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 Simplified waiting for unregister local/remote FC-NVMe ports to complete cleanup. Signed-off-by: Duane Grigsby Signed-off-by: Darren Trapp Signed-off-by: Anil Gurumurthy Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 5 ++-- drivers/scsi/qla2xxx/qla_nvme.c | 59 +++++++---------------------------------- 2 files changed, 12 insertions(+), 52 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 015908f99e76..caee4a2b4002 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2304,7 +2304,7 @@ typedef struct fc_port { struct work_struct nvme_del_work; atomic_t nvme_ref_count; - wait_queue_head_t nvme_waitq; + struct completion nvme_del_done; uint32_t nvme_prli_service_param; #define NVME_PRLI_SP_CONF BIT_7 #define NVME_PRLI_SP_INITIATOR BIT_5 @@ -4135,8 +4135,7 @@ typedef struct scsi_qla_host { uint8_t fabric_node_name[WWN_SIZE]; struct nvme_fc_local_port *nvme_local_port; - atomic_t nvme_ref_count; - wait_queue_head_t nvme_waitq; + struct completion nvme_del_done; struct list_head nvme_rport_list; struct workqueue_struct *nvme_io_wq; atomic_t nvme_active_aen_cnt; diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c index 4cb5bd20065a..ccafcdb228e8 100644 --- a/drivers/scsi/qla2xxx/qla_nvme.c +++ b/drivers/scsi/qla2xxx/qla_nvme.c @@ -75,8 +75,6 @@ int qla_nvme_register_remote(struct scsi_qla_host *vha, struct fc_port *fcport) fcport->nvme_remote_port->private = fcport; fcport->nvme_flag |= NVME_FLAG_REGISTERED; - atomic_set(&fcport->nvme_ref_count, 1); - init_waitqueue_head(&fcport->nvme_waitq); rport->fcport = fcport; list_add_tail(&rport->list, &vha->nvme_rport_list); return 0; @@ -250,7 +248,6 @@ static int qla_nvme_ls_req(struct nvme_fc_local_port *lport, sp->name = "nvme_ls"; sp->done = qla_nvme_sp_ls_done; atomic_set(&sp->ref_count, 1); - init_waitqueue_head(&sp->nvme_ls_waitq); nvme = &sp->u.iocb_cmd; priv->sp = sp; priv->fd = fd; @@ -558,12 +555,10 @@ static void qla_nvme_localport_delete(struct nvme_fc_local_port *lport) { struct scsi_qla_host *vha = lport->private; - atomic_dec(&vha->nvme_ref_count); - wake_up_all(&vha->nvme_waitq); - ql_log(ql_log_info, vha, 0x210f, "localport delete of %p completed.\n", vha->nvme_local_port); vha->nvme_local_port = NULL; + complete(&vha->nvme_del_done); } static void qla_nvme_remoteport_delete(struct nvme_fc_remote_port *rport) @@ -574,8 +569,6 @@ static void qla_nvme_remoteport_delete(struct nvme_fc_remote_port *rport) fcport = rport->private; fcport->nvme_remote_port = NULL; fcport->nvme_flag &= ~NVME_FLAG_REGISTERED; - atomic_dec(&fcport->nvme_ref_count); - wake_up_all(&fcport->nvme_waitq); list_for_each_entry_safe(r_port, trport, &fcport->vha->nvme_rport_list, list) { @@ -585,6 +578,7 @@ static void qla_nvme_remoteport_delete(struct nvme_fc_remote_port *rport) } } kfree(r_port); + complete(&fcport->nvme_del_done); ql_log(ql_log_info, fcport->vha, 0x2110, "remoteport_delete of %p completed.\n", fcport); @@ -627,12 +621,11 @@ static int qla_nvme_wait_on_command(srb_t *sp) static int qla_nvme_wait_on_rport_del(fc_port_t *fcport) { int ret = QLA_SUCCESS; + int timeout; - wait_event_timeout(fcport->nvme_waitq, - atomic_read(&fcport->nvme_ref_count), - NVME_ABORT_POLLING_PERIOD*HZ); - - if (atomic_read(&fcport->nvme_ref_count)) { + timeout = wait_for_completion_timeout(&fcport->nvme_del_done, + msecs_to_jiffies(2000)); + if (!timeout) { ret = QLA_FUNCTION_FAILED; ql_log(ql_log_info, fcport->vha, 0x2111, "timed out waiting for fcport=%p to delete\n", fcport); @@ -651,39 +644,6 @@ void qla_nvme_abort(struct qla_hw_data *ha, struct srb *sp) "nvme_wait_on_comand timed out waiting on sp=%p\n", sp); } -static void qla_nvme_abort_all(fc_port_t *fcport) -{ - int que, cnt; - unsigned long flags; - srb_t *sp; - struct qla_hw_data *ha = fcport->vha->hw; - struct req_que *req; - - spin_lock_irqsave(&ha->hardware_lock, flags); - for (que = 0; que < ha->max_req_queues; que++) { - req = ha->req_q_map[que]; - if (!req) - continue; - if (!req->outstanding_cmds) - continue; - for (cnt = 1; cnt < req->num_outstanding_cmds; cnt++) { - sp = req->outstanding_cmds[cnt]; - if ((sp) && ((sp->type == SRB_NVME_CMD) || - (sp->type == SRB_NVME_LS)) && - (sp->fcport == fcport)) { - atomic_inc(&sp->ref_count); - spin_unlock_irqrestore(&ha->hardware_lock, - flags); - qla_nvme_abort(ha, sp); - spin_lock_irqsave(&ha->hardware_lock, flags); - req->outstanding_cmds[cnt] = NULL; - sp->done(sp, 1); - } - } - } - spin_unlock_irqrestore(&ha->hardware_lock, flags); -} - static void qla_nvme_unregister_remote_port(struct work_struct *work) { struct fc_port *fcport = container_of(work, struct fc_port, @@ -719,12 +679,13 @@ void qla_nvme_delete(struct scsi_qla_host *vha) ql_log(ql_log_info, fcport->vha, 0x2114, "%s: fcport=%p\n", __func__, fcport); + init_completion(&fcport->nvme_del_done); nvme_fc_unregister_remoteport(fcport->nvme_remote_port); qla_nvme_wait_on_rport_del(fcport); - qla_nvme_abort_all(fcport); } if (vha->nvme_local_port) { + init_completion(&vha->nvme_del_done); nv_ret = nvme_fc_unregister_localport(vha->nvme_local_port); if (nv_ret == 0) ql_log(ql_log_info, vha, 0x2116, @@ -733,6 +694,8 @@ void qla_nvme_delete(struct scsi_qla_host *vha) else ql_log(ql_log_info, vha, 0x2115, "Unregister of localport failed\n"); + wait_for_completion_timeout(&vha->nvme_del_done, + msecs_to_jiffies(5000)); } } @@ -773,7 +736,5 @@ void qla_nvme_register_hba(struct scsi_qla_host *vha) "register_localport failed: ret=%x\n", ret); return; } - atomic_set(&vha->nvme_ref_count, 1); vha->nvme_local_port->private = vha; - init_waitqueue_head(&vha->nvme_waitq); }