From patchwork Thu Jun 7 05:19:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 10451137 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 A7DA760375 for ; Thu, 7 Jun 2018 05:19:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 97B57296DB for ; Thu, 7 Jun 2018 05:19:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8C8D429769; Thu, 7 Jun 2018 05:19:39 +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=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, 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 B7223296DB for ; Thu, 7 Jun 2018 05:19:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751631AbeFGFTh (ORCPT ); Thu, 7 Jun 2018 01:19:37 -0400 Received: from mail-by2nam03on0061.outbound.protection.outlook.com ([104.47.42.61]:55840 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751318AbeFGFTe (ORCPT ); Thu, 7 Jun 2018 01:19:34 -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:X-MS-Exchange-SenderADCheck; bh=VQMHX7QCw0fEYFkXOTIO0fmXQPQ0quwpHndBTOVmADQ=; b=kFKE6E25EBQk+BuSUCqhnBfHvS9yzHEkn84e2dHEVW8kUFuvc2dLRQdA5AofyFgIfmAEQN5DAq/1JnwbBhe3G+aEUiV608sxaT4uvObx23YMJ494+aYK/8tpwPwxaxkDfKosbd1c0wy+LRy1FYgLMhFvw6MOjDVjpqNvspAiY88= Received: from DM5PR07CA0105.namprd07.prod.outlook.com (2603:10b6:4:ae::34) by MWHPR07MB2832.namprd07.prod.outlook.com (2603:10b6:300:1d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.14; Thu, 7 Jun 2018 05:19:33 +0000 Received: from CO1NAM05FT060.eop-nam05.prod.protection.outlook.com (2a01:111:f400:7e50::202) by DM5PR07CA0105.outlook.office365.com (2603:10b6:4:ae::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.841.15 via Frontend Transport; Thu, 7 Jun 2018 05:19:33 +0000 Authentication-Results: spf=pass (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=bestguesspass action=none header.from=cavium.com; Received-SPF: Pass (protection.outlook.com: domain of cavium.com designates 50.232.66.26 as permitted sender) receiver=protection.outlook.com; client-ip=50.232.66.26; helo=CAEXCH02.caveonetworks.com; Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by CO1NAM05FT060.mail.protection.outlook.com (10.152.96.178) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.20.841.6 via Frontend Transport; Thu, 7 Jun 2018 05:19:32 +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, 6 Jun 2018 22:19:27 -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 w575JQq6027983; Wed, 6 Jun 2018 22:19:26 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id w575JQY6027982; Wed, 6 Jun 2018 22:19:26 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 02/12] qla2xxx: Fix login retry count Date: Wed, 6 Jun 2018 22:19:16 -0700 Message-ID: <20180607051926.27940-3-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20180607051926.27940-1-himanshu.madhani@cavium.com> References: <20180607051926.27940-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)(39860400002)(39380400002)(346002)(396003)(376002)(2980300002)(438002)(189003)(199004)(86362001)(16586007)(72206003)(1076002)(446003)(51416003)(8676002)(5660300001)(26005)(11346002)(336012)(186003)(2616005)(59450400001)(486006)(50226002)(44832011)(126002)(8936002)(36756003)(81156014)(476003)(76176011)(81166006)(47776003)(4326008)(87636003)(478600001)(42186006)(69596002)(356003)(80596001)(48376002)(110136005)(54906003)(50466002)(305945005)(2906002)(106002)(316002)(6666003)(106466001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB2832; H:CAEXCH02.caveonetworks.com; FPR:; SPF:Pass; LANG:en; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; CO1NAM05FT060; 1:6jsm1Ws95m++PmuJdTxFh4Wo8Y5Eu0dPs3bl6IDpyAqT7fNZNSusva1NCqvhwe2wZtnjxxMEPbaWP7WwtuTcL1iqWveC8104ItxcoO9LkkAFyBckXBmX4gcq9gIjIGPz X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4608076)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060); SRVR:MWHPR07MB2832; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB2832; 3:1nwsz3KraVpRl88RauLa9cvuvINZDhdzn9scuf/it6suUwSBYfCUK5hL3fW7/092ZYUwYb2OdAJaIHpaNQboc+eMyFpGltPMjRF+7BXXynArSrmJB9Dh0+WJSZEdj1xCt2mVJHB6qBx8/HSs2PfttLzedv4TXIhDRHFoa0ykvtf9YKY2xOnKEpxqmag7vxGYRis1v8jJZwkECunZnNyYhxxF6DZme63x4M9o+Yw4mfFB9n2Opyt/w14g6KqDIjqc3acHClaVYhCoXyeIas5tRvn7GF5uxE5uTgJIUSTrkCvdzRUuTremAKr6UCSOemao/j8eFJ/pyegxIswVaCYDyD+N4Pi13eY4PMhjXRVzKxE=; 25:BxqymYOgFfhZZEAqd4mDNLBKjPuEX9cLsT5gxRbpcKHmncddI0wGxKh3F9IEv1um8z1CvbYEuhoIuFu0SI4U3S26oNEs4Ajm+2UJoEGgiCEme6lLz26EW32ltHj29/c7V6TDZes7Cg+D/RtT1G7K6mlKrm1Xl5lr4Tg8u3aab98hFbqxi/M5bsWCgKTdWgiKj8iFoH3rd8A38SysVCsjk5y0GbFw6jyk2wrDvmvig6M3qahcqJhdtbzNMXxxH/kTgsKu57a62SUDbBPjxCX0VGJrLWZfUqCic8++lHRY8KBYyTXP8UdhhN+D3G+qZTZ9lqbcUik26Pzwirtwpmcz4g== X-MS-TrafficTypeDiagnostic: MWHPR07MB2832: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB2832; 31:3bj4GuiWi9OC3WmiWmd7QZAQF1UpA1x+Y6OC38fqEdXosHcBUEQ0oFgkTopAJbO5CKd+6FZbGnr2X9VeqYFRRAGAkwMzUwXwcJ7rbTfhNoR/y4zFm48DQnn8WnchoP8toLTrJ+gOWNoZI6qxy+2Jey8D3WCwwEaeZpkEe5Vb4ia3OPmuN8E+Sx4/CkgCfVAWK+40Xk0c8TtdsIXTasE6jV25pgbF3bAhEXPud4JB4fE=; 20:rkMMfr8F/f1XmiunNnJSnwEq9bN/HuBv+vk1LqclB+q5d9rWT4G0iNeQS14gHgL1vVsBajvJaY9QCfmZozXshl2uM40/pmOcNJ1Y3AFG/vVRd2a6SMvWBXPKQbYjMvthDk21FVzzHUIRN/+lkxV6ZwJGBsqyAW0G+8ibpWM0ufZQK+4vaqzNZhIgLGNE2ra1FtOc1nL3KD2UF6zaOZooQAC5dJUvhYJRuN9r2qJp46NoT2VCByQ4JavV7mh27GPhBxZECle8m/vQMuUy9YGMT+MKC/LGs5pVnoh5RHKHAKILOm153hbz5PEpvdyvi8DE8OwGvgZV0edDCRXp2i5Mu3Y2Nwek+NM/3XhVz0UvRJHp0xJLUNX2js4tr9VCCR2Yx/VSwS4hIT/bYPf90bWJqN52nS+2b8a6t6970CbrhCEW3bsjPjoFMNmGvm+tdqY79ulI2ABZ4UTPaqyUoZBsqeWtWgvsvXuVLviz1MiFqZsdAdSSOcEi/NOPatVgcvtp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93004095)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:MWHPR07MB2832; BCL:0; PCL:0; RULEID:; SRVR:MWHPR07MB2832; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB2832; 4:o/Fi4xym9arZWsXW7qK9KP1M01hZ5QSul5KJTwl1s+VbZCwLX+j4WyYmrRL/FVXE3J/o5LTDmL9hG7BLDp2TNvzOlJlnWJ3ifi41x8sw7kY3IHYt65e9Ln4mKzi/4SDhSJf+kDhVZKnG4XxpugfL3kUtP1+nNC9QhRAK/rXLGepvu7NE5uO7OfkrHiS/YN9vd4XVTqrLmVUKOyVTQU2OdLGC3mV4ZUkx+JXX3x495eL1TajzNZ3dBjsajhx5cuhQlXtVYTrwQidHNx2d67lB6Q== X-Forefront-PRVS: 06968FD8C4 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB2832; 23:OTWLn3YdnC9f6xVXs6QqjWIY5qY1sQ0ToPGbV5XQO?= =?us-ascii?Q?/pxRwUfas6UNS4rabDyHTB9kqVtKgZp9H2MCTEF6KcJgaFNw/3JCJwMccCb8?= =?us-ascii?Q?YjNueeGSVS3Q17J4NM/0pRmkscK9TS9TmMFCS1gFhthmLFV+MVBmQdtVO+e8?= =?us-ascii?Q?XMY7cD9cWBzuFMb3cQjdZsBf6ca/8fZE2SNtiSxMJt+y62esd3zqqz2mT9p0?= =?us-ascii?Q?qHaTYfebQQ9JXjr/qXKlRG7nJ24xJ5GdDTSm52FFUhM21mvZ5gq2BZ688wjq?= =?us-ascii?Q?+KMW2H1zROXVHzcPQwhiCvYpJ88vehcyJq24+WrEH1mhC7bTzXszeCtIFk2v?= =?us-ascii?Q?hH37JeILRrTU9/4BBypVzjLz26djlT9fLg1uJkEmBWRzi90rLDRDw3QjIwSN?= =?us-ascii?Q?PCin2x4HpTmt9dq1jIHZIVHzaQKKmMopmsY1KSAJmVH6thaluv/G0g00IM59?= =?us-ascii?Q?/+tHRXEtyMIyyLmxodYyyYGxybG5i37Ag6STo+lrm8fOqYWBCkhgxIJ7zaO3?= =?us-ascii?Q?DX4SSsfewBDiZv4LBtMuon+u7hm10nHI187rCWw3gyvRhCBEfG3x38j32PaG?= =?us-ascii?Q?4eauvQ4dyj68D8FqIKxrgIf9YECRb8FTduIiYomwstMa1+UImcu3bGUkAELD?= =?us-ascii?Q?YjRd7Kj2A1Uel9a4FMKhLPJrqvAZzCDrCfMyz+Alg+seVlHb5JDJnEbpzoc0?= =?us-ascii?Q?zxD03s2a+luZMzNTtByTscPTxdS2+jLpeZ0peTIGAjytOTydFplcdtBQLrhT?= =?us-ascii?Q?yy9XslWCTO1K+OS3Y4qIW3KrjE7UfujYi/7HJN0Q/Z7JBgmIfiENXofNKlez?= =?us-ascii?Q?aHVfPZjPyoO+ynKz+nduBacBnkc0R4gUPSQm2D3XOEs4fsuXAcqrHCq48q3a?= =?us-ascii?Q?+GMaZUcEHRErEUaBC0EwzV45bJyBOKM9UmKFhY2vTVQINqcw8rHFCrBswxB7?= =?us-ascii?Q?h8Yc1MzK+WnCLjrNwfIBeYlVxCJivUUMku8npb/Y07JsmDGSCQA3tKSuOgsq?= =?us-ascii?Q?T2fP+XsALJGZUUdOdqX7JnIpVWLmEhsOf+FKhBLQxzwmmpWvox6NWCTX9LZL?= =?us-ascii?Q?vRBYzPN/xvDD47aShTS4dqBWfz7iKB/rUDvWkyYWGGhrrWI9vORyjze4PImw?= =?us-ascii?Q?e+OGEXWQpymehEVRw7A10LEmeyVp0Nx?= X-Microsoft-Antispam-Message-Info: EjJXkYz51WqHe48qAH5JhP2ox4Kvb5dNALQuQxISBJo9lX2C2mX0TF8l7sUbmxTbdTMdZxrp4KPUYfYvhA7e39ySlA3hDGNJxWOq16CSyk1+659eHwlnmWXr6W6gBjQGscZpZNXNO8iXcBaAEjHsGdDKsbPcXS97AJa2TqLEmb5Ylj2bEbetgx6NgqURQDPR X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB2832; 6:3FikVB57XQlFKaZ6zcLWs26eN7PsDQgQb31Bbb1tICTgtkumGwU4VerqnU+9E6xC96hBB4AbMPMR6PNNLRpGR5ZO3lcVFM15aNjxr2dIxUNSy8Xloc4ejek55USb/Rz3SXakTIyfGVQ+bJ/kSlB9EZGLeLGCH0427FzHQPDlztCNmd4dK3dmrFxwqJZ4yb5K5qTlCsNR10AZghLqMXV5t5EnRUrCBCOhMfdSVIZIe8OkiSHkkbezldNHZP2aPzU4kSP5OxmxdLnnyUj+y+JQiJmrIquNdD3t9rDz6z6V7OED+U0Ha9uj3wSnpaJhbRjp5mOMA3V6Kz6KpYQ6A81mUI89BsIzm8z9vuvL81s2s/F6WtW7enVTypqII5P/suVFi1JauRATWZlgR6RQCfbW334qGN2tVDkbDNnzBC8GyTYxQBmTQNN1/2w2/bCr/+Q5bTsEC5iMiaS3x7c6rOTudQ==; 5:Vd1KXUv3NHHFRaZCNTzv8/1ckphDh0Zf7LiYNgxCjMmZ1X7/nptv8sS/gYChM9PZN6LhRi6bTsD0oQpebK5T+qBbT+shRPiXPUj2p9323jri0zagmzCN6tNsFJsD7SeIcX/iXPMicwtccCAcZVyZQS2DX3x5yHZjRrDsxqotJSU=; 24:uDBgUANvsIZRza3wcPAmTMwB93mfyQIIR5e7mIWabiMNuIruW64y/8jv/ITriplT1uSTJfSkzL80V9W9Z6lh7QbmZkphDRL8dA9PGa9JoqI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB2832; 7:WW7pqMe09vc0rcy4UlMlOyw4wOJjxoNKlyKvyZJaIvjvXpXmG4GsKFDrjoEXRj9OlYi0RIkBjyF5Dmyy1Gkwo8T3kHr2TRRPjgIDZlTXo3M9YSfXrBiLYSEQ3ifwL5U+bdgZOTxC59VbWm2MxcxgbtAvyz5l4w6R/j1/3Jib7Z3bakIlulD6raucuS7TZkFQAcpy1fixNRsOZFJEW8eOpWOwR3qM3/LpoJxV8rlzFEvkoXusUVZmh17gMTvfIIuF X-MS-Office365-Filtering-Correlation-Id: e8b11429-4476-498f-8629-08d5cc3640ca X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2018 05:19:32.7607 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e8b11429-4476-498f-8629-08d5cc3640ca 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: MWHPR07MB2832 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 Login retry count was not properly decrementing, which lead to endless login retry. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_gs.c | 16 +++++++ drivers/scsi/qla2xxx/qla_init.c | 23 +++------- drivers/scsi/qla2xxx/qla_mbx.c | 1 + drivers/scsi/qla2xxx/qla_os.c | 90 ++++++++++++++++++++------------------- drivers/scsi/qla2xxx/qla_target.c | 3 +- 5 files changed, 70 insertions(+), 63 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index 4bc2b66b299f..5139a3577bb3 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c @@ -3475,6 +3475,14 @@ void qla24xx_handle_gpnid_event(scsi_qla_host_t *vha, struct event_arg *ea) fcport->rscn_gen++; fcport->scan_state = QLA_FCPORT_FOUND; fcport->flags |= FCF_FABRIC_DEVICE; + if (fcport->login_retry == 0) { + fcport->login_retry = + vha->hw->login_retry_count; + ql_dbg(ql_dbg_disc, vha, 0xffff, + "Port login retry %8phN, lid 0x%04x cnt=%d.\n", + fcport->port_name, fcport->loop_id, + fcport->login_retry); + } switch (fcport->disc_state) { case DSC_LOGIN_COMPLETE: /* recheck session is still intact. */ @@ -3967,6 +3975,14 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp) } else { if (fcport->rscn_rcvd || fcport->disc_state != DSC_LOGIN_COMPLETE) { + if (fcport->login_retry == 0) { + fcport->login_retry = + vha->hw->login_retry_count; + ql_dbg(ql_dbg_disc, vha, 0x20a3, + "Port login retry %8phN, lid 0x%04x retry cnt=%d.\n", + fcport->port_name, fcport->loop_id, + fcport->login_retry); + } fcport->rscn_rcvd = 0; qla24xx_fcport_handle_login(vha, fcport); } diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index b85c7d311376..c58a6886fc43 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -213,8 +213,6 @@ qla2x00_async_login(struct scsi_qla_host *vha, fc_port_t *fcport, if (fcport->fc4f_nvme) lio->u.logio.flags |= SRB_LOGIN_SKIP_PRLI; - if (data[1] & QLA_LOGIO_LOGIN_RETRIED) - lio->u.logio.flags |= SRB_LOGIN_RETRIED; } rval = qla2x00_start_sp(sp); @@ -485,7 +483,6 @@ static void qla24xx_handle_gnl_done_event(scsi_qla_host_t *vha, if (ea->rc) { /* rval */ if (fcport->login_retry == 0) { - fcport->login_retry = vha->hw->login_retry_count; ql_dbg(ql_dbg_disc, vha, 0x20de, "GNL failed Port login retry %8phN, retry cnt=%d.\n", fcport->port_name, fcport->login_retry); @@ -1258,11 +1255,10 @@ int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport) return 0; } - if (fcport->login_retry > 0) - fcport->login_retry--; switch (fcport->disc_state) { case DSC_DELETED: + fcport->login_retry--; wwn = wwn_to_u64(fcport->node_name); if (wwn == 0) { ql_dbg(ql_dbg_disc, vha, 0xffff, @@ -1275,6 +1271,7 @@ int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport) __func__, __LINE__, fcport->port_name); qla24xx_post_gnl_work(vha, fcport); } else { + fcport->login_retry--; qla_chk_n2n_b4_login(vha, fcport); } break; @@ -1291,6 +1288,7 @@ int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport) break; case DSC_LOGIN_FAILED: + fcport->login_retry--; ql_dbg(ql_dbg_disc, vha, 0x20d0, "%s %d %8phC post gidpn\n", __func__, __LINE__, fcport->port_name); @@ -1305,6 +1303,7 @@ int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport) ql_dbg(ql_dbg_disc, vha, 0x20d1, "%s %d %8phC post adisc\n", __func__, __LINE__, fcport->port_name); + fcport->login_retry--; data[0] = data[1] = 0; qla2x00_post_async_adisc_work(vha, fcport, data); break; @@ -1388,17 +1387,6 @@ void qla24xx_handle_relogin_event(scsi_qla_host_t *vha, } } - if (fcport->flags & FCF_ASYNC_SENT) { - fcport->login_retry++; - set_bit(RELOGIN_NEEDED, &vha->dpc_flags); - return; - } - - if (fcport->disc_state == DSC_DELETE_PEND) { - fcport->login_retry++; - return; - } - if (fcport->last_rscn_gen != fcport->rscn_gen) { ql_dbg(ql_dbg_disc, vha, 0x20e9, "%s %d %8phC post gidpn\n", __func__, __LINE__, fcport->port_name); @@ -1884,7 +1872,6 @@ void qla2x00_async_logout_done(struct scsi_qla_host *vha, fc_port_t *fcport, uint16_t *data) { - qla2x00_mark_device_lost(vha, fcport, 1, 0); qlt_logo_completion_handler(fcport, data[0]); fcport->login_gen++; fcport->flags &= ~FCF_ASYNC_ACTIVE; @@ -5188,11 +5175,11 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) if (IS_QLAFX00(vha->hw)) { qla2x00_set_fcport_state(fcport, FCS_ONLINE); } else { - fcport->login_retry = 0; fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); fcport->disc_state = DSC_LOGIN_COMPLETE; fcport->deleted = 0; fcport->logout_on_delete = 1; + fcport->login_retry = vha->hw->login_retry_count; qla2x00_set_fcport_state(fcport, FCS_ONLINE); } diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 5a87577af7b3..6e80c9fe71fd 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -3904,6 +3904,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, rptid_entry->u.f2.port_name, 1); if (fcport) { + fcport->login_retry = vha->hw->login_retry_count; fcport->plogi_nack_done_deadline = jiffies + HZ; fcport->scan_state = QLA_FCPORT_FOUND; } diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 86f974d9ac17..e6b65933fbbc 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -3838,14 +3838,6 @@ void qla2x00_mark_device_lost(scsi_qla_host_t *vha, fc_port_t *fcport, return; set_bit(RELOGIN_NEEDED, &vha->dpc_flags); - - if (fcport->login_retry == 0) { - fcport->login_retry = vha->hw->login_retry_count; - - ql_dbg(ql_dbg_disc, vha, 0x20a3, - "Port login retry %8phN, lid 0x%04x retry cnt=%d.\n", - fcport->port_name, fcport->loop_id, fcport->login_retry); - } } /* @@ -5096,7 +5088,7 @@ int qla24xx_post_relogin_work(struct scsi_qla_host *vha) void qla2x00_relogin(struct scsi_qla_host *vha) { fc_port_t *fcport; - int status; + int status, relogin_needed = 0; struct event_arg ea; list_for_each_entry(fcport, &vha->vp_fcports, list) { @@ -5105,47 +5097,59 @@ void qla2x00_relogin(struct scsi_qla_host *vha) * to it if we haven't run out of retries. */ if (atomic_read(&fcport->state) != FCS_ONLINE && - fcport->login_retry && - !(fcport->flags & (FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE))) { - if (vha->hw->current_topology != ISP_CFG_NL) { - ql_dbg(ql_dbg_disc, fcport->vha, 0x2108, - "%s %8phC DS %d LS %d\n", __func__, - fcport->port_name, fcport->disc_state, - fcport->fw_login_state); - memset(&ea, 0, sizeof(ea)); - ea.event = FCME_RELOGIN; - ea.fcport = fcport; - qla2x00_fcport_event_handler(vha, &ea); - } else if (vha->hw->current_topology == ISP_CFG_NL) { - fcport->login_retry--; - status = qla2x00_local_device_login(vha, - fcport); - if (status == QLA_SUCCESS) { - fcport->old_loop_id = fcport->loop_id; - ql_dbg(ql_dbg_disc, vha, 0x2003, - "Port login OK: logged in ID 0x%x.\n", - fcport->loop_id); - qla2x00_update_fcport(vha, fcport); - } else if (status == 1) { - set_bit(RELOGIN_NEEDED, &vha->dpc_flags); - /* retry the login again */ - ql_dbg(ql_dbg_disc, vha, 0x2007, - "Retrying %d login again loop_id 0x%x.\n", - fcport->login_retry, - fcport->loop_id); - } else { - fcport->login_retry = 0; - } + fcport->login_retry) { + if (fcport->scan_state != QLA_FCPORT_FOUND || + fcport->disc_state == DSC_LOGIN_COMPLETE) + continue; - if (fcport->login_retry == 0 && - status != QLA_SUCCESS) - qla2x00_clear_loop_id(fcport); + if (fcport->flags & (FCF_ASYNC_SENT|FCF_ASYNC_ACTIVE) || + fcport->disc_state == DSC_DELETE_PEND) { + relogin_needed = 1; + } else { + if (vha->hw->current_topology != ISP_CFG_NL) { + memset(&ea, 0, sizeof(ea)); + ea.event = FCME_RELOGIN; + ea.fcport = fcport; + qla2x00_fcport_event_handler(vha, &ea); + } else if (vha->hw->current_topology == + ISP_CFG_NL) { + fcport->login_retry--; + status = + qla2x00_local_device_login(vha, + fcport); + if (status == QLA_SUCCESS) { + fcport->old_loop_id = + fcport->loop_id; + ql_dbg(ql_dbg_disc, vha, 0x2003, + "Port login OK: logged in ID 0x%x.\n", + fcport->loop_id); + qla2x00_update_fcport + (vha, fcport); + } else if (status == 1) { + set_bit(RELOGIN_NEEDED, + &vha->dpc_flags); + /* retry the login again */ + ql_dbg(ql_dbg_disc, vha, 0x2007, + "Retrying %d login again loop_id 0x%x.\n", + fcport->login_retry, + fcport->loop_id); + } else { + fcport->login_retry = 0; + } + + if (fcport->login_retry == 0 && + status != QLA_SUCCESS) + qla2x00_clear_loop_id(fcport); + } } } if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) break; } + if (relogin_needed) + set_bit(RELOGIN_NEEDED, &vha->dpc_flags); + ql_dbg(ql_dbg_disc, vha, 0x400e, "Relogin end.\n"); } diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 54e6c8f3e86d..c5c96e698799 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1057,7 +1057,6 @@ void qlt_free_session_done(struct work_struct *work) sess->disc_state = DSC_DELETED; sess->fw_login_state = DSC_LS_PORT_UNAVAIL; sess->deleted = QLA_SESS_DELETED; - sess->login_retry = vha->hw->login_retry_count; if (sess->login_succ && !IS_SW_RESV_ADDR(sess->d_id)) { vha->fcport_count--; @@ -1161,7 +1160,7 @@ void qlt_unreg_sess(struct fc_port *sess) if (sess->se_sess) vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess); - qla2x00_mark_device_lost(vha, sess, 1, 1); + qla2x00_mark_device_lost(vha, sess, 0, 0); sess->deleted = QLA_SESS_DELETION_IN_PROGRESS; sess->disc_state = DSC_DELETE_PEND;