From patchwork Thu Nov 30 03:40:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 10084189 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 05C02602B9 for ; Thu, 30 Nov 2017 03:41:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EFDAF29935 for ; Thu, 30 Nov 2017 03:41:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E362229B02; Thu, 30 Nov 2017 03:41:19 +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 1C47029935 for ; Thu, 30 Nov 2017 03:41:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753380AbdK3DlR (ORCPT ); Wed, 29 Nov 2017 22:41:17 -0500 Received: from mail-by2nam03on0076.outbound.protection.outlook.com ([104.47.42.76]:32160 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753275AbdK3DlM (ORCPT ); Wed, 29 Nov 2017 22:41:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Gk3T1v6aDtAIPLgdpTO75yIZLZVZ05M6nyEzZsWh7y4=; b=OH3EC7wLMw/8wf6obkpdTYlNCdlwZBG5oe2x4guW+UJezw2FE9XdPC6xfR9l99cKAuLScd/7beZYDhIIIPGbWW/oCT7CC6XW6kUVfu+Mj4Hs/MvNMpgNb8ecWUL9ZqMEP8PIa+6AtR3TOrS1wEIC4q7+PIA3jKNBE2U2FNYHsLI= Received: from BY2PR07CA0095.namprd07.prod.outlook.com (2a01:111:e400:7bff::48) by SN4PR0701MB3821.namprd07.prod.outlook.com (2603:10b6:803:4e::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Thu, 30 Nov 2017 03:41:10 +0000 Received: from BL2FFO11FD049.protection.gbl (2a01:111:f400:7c09::147) by BY2PR07CA0095.outlook.office365.com (2a01:111:e400:7bff::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.282.5 via Frontend Transport; Thu, 30 Nov 2017 03:41:09 +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 BL2FFO11FD049.mail.protection.outlook.com (10.173.161.211) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.20.218.12 via Frontend Transport; Thu, 30 Nov 2017 03:41:09 +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, 29 Nov 2017 19:40:50 -0800 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id vAU3eovD015150; Wed, 29 Nov 2017 19:40:50 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id vAU3eoJ9015149; Wed, 29 Nov 2017 19:40:50 -0800 From: Himanshu Madhani To: , CC: , Subject: [PATCH v2 11/22] qla2xxx: Fix Relogin being triggered too fast Date: Wed, 29 Nov 2017 19:40:36 -0800 Message-ID: <20171130034047.15070-12-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171130034047.15070-1-himanshu.madhani@cavium.com> References: <20171130034047.15070-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)(346002)(376002)(2980300002)(428002)(189002)(199003)(105586002)(356003)(5660300001)(54906003)(33646002)(305945005)(80596001)(110136005)(16586007)(101416001)(81166006)(81156014)(36756003)(316002)(50986010)(76176010)(106466001)(8676002)(69596002)(50226002)(50466002)(2906002)(47776003)(8936002)(189998001)(4326008)(51416003)(1076002)(42186006)(87636003)(6666003)(86362001)(478600001)(48376002)(2950100002)(575784001)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN4PR0701MB3821; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD049; 1:2qQZSgGaMsfASX97b/NZ8Asjjaj7nBKSKt37KffSr+nRxC2Dge7koQF5baiNVVJXB0vZyMrH0TpwN8RzqUFfc24N/p9FO1kKZEh3fn1LvjCmlxupoZiRGVomMz+viC4L X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 18a56bf3-d0ed-4555-b625-08d537a431eb X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603280); SRVR:SN4PR0701MB3821; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 3:PatMiMSlzuR+7tt4qx+Sq2YyzYTN0t9/DbZvt0+sG/Wt4vq2fg2+eH6ZC3ORf/Zoe2ofuokJQitcx0ZsD/7u9facLqblOyZ2gjfrd0oxWN3vrMIBhk4jvI1QPv4IaMH2V4WfJiWJ2SbTe6lXRLdrPPsOX9Y/S/8OYZuTUIIqm4m9qDDZta1kFwcwFmf+qso6uiSiWQt57t881+TbnpQJWoAtHhCDE05Q6UVMq9QNMCNVUjT6wkvXFLy1HgPNk/9Wi2aJIbdgYOTvN8I74RqiORA93py/hs7epXtdG/Bm8A7xTDgqccUD9BERJ55XMiZhWVeYXgebXjQeeSyWXmHYFHN4MMajaCf+FAnr8igSKw0=; 25:RW65gLaLtzZYvEYjzq1M6oSAGvuMWOnovqjjoWOOfaE15OI3UYq1OT3NSiSUAmNLBIXJCIioXC+ir2Mtjb+VhTWzdeBQTZzwYkZGKTrunagv8JrsJMFNbRqsAvU790pcc7twoamIdEbHNtQg2Dmfjr+VaU0laLrCZ/OZPJjO7TLDd2rDhIClZ4uNi7VvSp/dIpm+utFe92rPodw2AnCSMWTOAd7t9iK51nH9yJHhiF/S4KVcr+oUcWdBDE344uwYKbWPjHPLuzXZ8sokM1HlsVlz/Ok6gJ6adU5wodNuyu4nU5h7c8XSI3z3R9VlKULSNTiduPU7PLu0I8K5AHWIZw== X-MS-TrafficTypeDiagnostic: SN4PR0701MB3821: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 31:cGPdWhQ0JEYojOGQdlEynKX8G/Aq+gBQaZ9l1h1dXlqHZ0KSy7uMNR/vDEpOF/IaMHw3DQvMat2rfyU2sdRTkCwzsdoifGEFrsajZuwTLrRe7+KJb6lUB6QfBAq6G1NO83H/BXTt4wqCxx6JNyK9jbn5Ul4U9Uhk20JxIGnRbo0T1Zms4MiYLOtRmhD07oFwqv2hgBsh9IkTeGsFAbpcWHIWEE0da0o9S6KIGfTEYWA=; 20:dxaDzwgTpSH9TgXuiLuyZ5ZwxR12A/PVi3ZKs0tqSnBNyeyJME565TSD7XjPr3ZVHL1QN+8cHtQ90B6jSXeyVEos8CWZ6/92b0du9DF+YdDTEy3/tBpR02qosn3ur8zWPX0jTjOeg044+njC88XhELgxdSo0bf6iCd+XBYSmhjqFCAt5H040ojagj1/0vyBrZfnCGnBYh2oG4hFtGaxidz0OeNPfBzM2MHSXvWQvBSfHYc/7ivh6hMKJJxY1Twk3PjH4EimOF3IMU8wbxIzbob7VzHURGia1jewOI6vMICubk2nJjYCaIU/O9g2Ly3xzvultRtlBnxt7+6LQiFslXQHDPUUtLzPlI12/W7/fwnWBl9alPAS2M8G+7Lhu7iq5W9Doh7sxkDcVQ1JRtKCcGCidH9DYQHsAPCrHhFsed1WdDYy46zfc6nhfAdQ17/9F1idxfjRCUK2GgHY8uMdIRTCTZBayCHs74U5f8t8QfJYlFEvHB3HApPfBCasJ4Uji X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(3231022)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123555025)(20161123560025)(6072148)(201708071742011); SRVR:SN4PR0701MB3821; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SN4PR0701MB3821; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 4:BQHvROCZ067/I0hO8CET0qQOIBu6zR4aamClEKWoyT90hCgzFhVLYxtx+165kaa7VGJb/JomrqeuYllEHhlo+dmwISPNMWXv9O+fUlJCWvyNhKfYaccIzMm8sRv4KlXM9KP9neTcmv6LszNeDyY6c18mJ7oucxqDAN1bSl79wlPVBESkY18/RwSTqh1c1ZnTM+VdmN9QTLSjuvA0/bDQeWfbik0eOrGHsVbHqAF+ezPvGDtvbVztVn6hcw8Fnm7KIUgxlNxbPePDg/imSIajSkHGuO8CJeOkHQGywMmxxdrf340uj3HNQYCZPRoNFZ0d X-Forefront-PRVS: 05079D8470 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN4PR0701MB3821; 23:AnnS2EJ08oR0jkIRJMRn5ps8DWe07VXtMfNfDm5?= =?us-ascii?Q?cHRCJd1rPu1lFg4oOHQYhXXZZZq+nwT2tb7SB0PSY4oTv8dlb7O2Ox5tfvVV?= =?us-ascii?Q?YoqyOCWCU5uI6CDCAzViG7D1HOdqVKUbZF6v9JW6h6xRoiQBZHo/wCxE9t4y?= =?us-ascii?Q?NQAzqBR/g6g5ZuR9CvP1WCXiT+0CYlLsDHOxqV7ZWvrDFr7XtZKm0HqQZgVV?= =?us-ascii?Q?OSWlS8j0OXwy7KFo50/nS7UYG9gUBp+LOugEq92cci7DHT1eqCgNsBG/QW6E?= =?us-ascii?Q?lnLaEUwCCRPaC3uD9CTVhvp9DZ1YHftoEkoU4sLnhq600rDmSlyxca56PHXZ?= =?us-ascii?Q?lz2wzXm2QQTtVI1Ew0z3uMFL4EkyQyk51FhRPrdiS6nmEIgkZvB8M4XZOqxk?= =?us-ascii?Q?mv9IHD8QPS8nVLK1Cp+Jc16ErbVOv8GhEL050G5D96WWIun833pHL79tpKjy?= =?us-ascii?Q?BDeDZ/TBsJUbHYKkKBG9pN3qWVWGi8VVr0s31TOdfGs9j1Gy6N0N3GynRrGC?= =?us-ascii?Q?KTPMR8UKojlthG6r7sEXMdmT97sI7XWAqEyZPB3aYJHZz6tTsWSLL2OwE3xF?= =?us-ascii?Q?ztVNq8bNOrpq8bqTd9IC3mmFq9FKjYIrI86IFKcC2p7eFItcdzlnkG3nC4O6?= =?us-ascii?Q?zd/rjP5HO2MEZnMAjjUADVjozo+cWiY7z651khl8S1Kc2UHY+cHHoQNy2uCD?= =?us-ascii?Q?sjnzaAGNlb10VKwHGX1URUruSN7gefIRmGYnE1EjEyg+fM7I0oG6XxRfjAbF?= =?us-ascii?Q?LIn6v8jaOK8+EapRMx1DcPcWVObcp/US7UBFcttBJ4A4kcrdBB3pcHEkt3N2?= =?us-ascii?Q?02mGnd91zDCTLXCkJKAenwGnEn6hSfoEHD+mY/tcemV/5d1kh1scKfxDcx+d?= =?us-ascii?Q?azz59OUJzP8f8mMZ7FBknGjwvSZ5wVtECsUas4QVUWWH3A9DxI86HOANvwe2?= =?us-ascii?Q?P+b3txJRF0MeoVfIogIYJeu5gmxZcYXJtYHWqNVD5zb5A/p9Qinde5xsf+MH?= =?us-ascii?Q?n0VRwKMhrnmQTBeUCNrjIFCkK6w0soBB4iUJ3kF2QS+eb1Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 6:RyaGCNwWeDxfXilriem3RAyLDvTN+CyzCcPujDVvp8rWAwnqWEDwQc6YjETWVLQIdej9kmKgY1TeqFkGpAjQhfMtcOxgaK6mz086gagY6+RqxQT8rgCmgsstFmpnaQnuSBCSY7NosNohjzaTYL2ijw/6TLMtUPHE3NRbjvzG74j52fhT28TCaKpuNagP7qSh4Oylq1Rz8eUY3bUTFPXIRqa34ImYIIRyf3C4iZM4ZhCBFN4TAytWgmmYedsSH7ABuxmw5Lmd/IJ9Bmh0NN8fN1hqswVhPEVYDUlWgy3BAhdXPwmx0ID3HzmjieoAyUvHCJxVT+SUi5rQr18K8j0L4MT9R4y/F5XzaaRiFAvaV5E=; 5:3Px4r9mcBhl8W1Y424GYSjNut5U8TXXUeY0aaMrgz3HNt0DUdThUv5R0D/+PTblW2zRMYxR6GuuYQ18ELUbX4pilhDXBkYZcoTPguZGMseTIDCaLQW6NdO7WOnzGIqQXs74eUcH6cpaEpYIUC/QGda7q4pdSc70FsfjfMv+cErM=; 24:T8vo3PaIxIV17t1PLPrPj3qosCOikii5HjkBRuiJF4Lv6k0LEMj4eBMFF8oRdhtFV+7CNgKP/P0HUgiCRh0DcEw8jr6wRwAQ8ryOosOuVWs=; 7:OmDjZFNYkhj5ShaUm9rIAbKVA06fT33pqXPVsL1sTuQTU1CJdJqybBM62rN4/5LuWlOOlzQLcq/vhfQhoXYfe3g5evkyzP0mQAWgOwUrmmNGDNdiQcIbf/Nei56rhwGzZVjOxO4K+BxEDRnkWBMOFbsK0GKnddDkU+Sn3S+BUwGvZTycZM9m827mwebvTsh2WAVSqeIuxRtZnqTHWHC8yFnxsYCt/b37x2gjtWVuxl4GzTCY9uJBuoDh9AaLIKe6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 03:41:09.0901 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 18a56bf3-d0ed-4555-b625-08d537a431eb 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: SN4PR0701MB3821 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 Current driver design schedules relogin process via DPC thread every 1 second. In a large fabric, this DPC thread tries to schedule too many jobs and might get overloaded. As a result of this processing of DPC thread, it can schedule relogin earlier than 1 second. Fixes: 726b85487067d ("qla2xxx: Add framework for async fabric discovery") Cc: # 4.10+ Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani Reviewed-by: Hannes Reinecke --- drivers/scsi/qla2xxx/qla_def.h | 1 + drivers/scsi/qla2xxx/qla_mid.c | 24 +++++++++++++++--------- drivers/scsi/qla2xxx/qla_os.c | 22 ++++++++++++++-------- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index d9b4a0651a0f..93ff92e2363f 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -4110,6 +4110,7 @@ typedef struct scsi_qla_host { #define LOOP_READY 5 #define LOOP_DEAD 6 + unsigned long relogin_jif; unsigned long dpc_flags; #define RESET_MARKER_NEEDED 0 /* Send marker to ISP. */ #define RESET_ACTIVE 1 diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index bd9f14bf7ac2..618ca272d01a 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c @@ -343,15 +343,21 @@ qla2x00_do_dpc_vp(scsi_qla_host_t *vha) "FCPort update end.\n"); } - if ((test_and_clear_bit(RELOGIN_NEEDED, &vha->dpc_flags)) && - !test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags) && - atomic_read(&vha->loop_state) != LOOP_DOWN) { - - ql_dbg(ql_dbg_dpc, vha, 0x4018, - "Relogin needed scheduled.\n"); - qla2x00_relogin(vha); - ql_dbg(ql_dbg_dpc, vha, 0x4019, - "Relogin needed end.\n"); + if (test_bit(RELOGIN_NEEDED, &vha->dpc_flags) && + !test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags) && + atomic_read(&vha->loop_state) != LOOP_DOWN) { + + if (!vha->relogin_jif || + time_after_eq(jiffies, vha->relogin_jif)) { + vha->relogin_jif = jiffies + HZ; + clear_bit(RELOGIN_NEEDED, &vha->dpc_flags); + + ql_dbg(ql_dbg_dpc, vha, 0x4018, + "Relogin needed scheduled.\n"); + qla2x00_relogin(vha); + ql_dbg(ql_dbg_dpc, vha, 0x4019, + "Relogin needed end.\n"); + } } if (test_and_clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags) && diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 820d1c185beb..2ec77b9f78b8 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -4905,7 +4905,7 @@ void qla2x00_relogin(struct scsi_qla_host *vha) */ if (atomic_read(&fcport->state) != FCS_ONLINE && fcport->login_retry && !(fcport->flags & FCF_ASYNC_SENT)) { - fcport->login_retry--; + if (fcport->flags & FCF_FABRIC_DEVICE) { ql_dbg(ql_dbg_disc, fcport->vha, 0x2108, "%s %8phC DS %d LS %d\n", __func__, @@ -4916,6 +4916,7 @@ void qla2x00_relogin(struct scsi_qla_host *vha) ea.fcport = fcport; qla2x00_fcport_event_handler(vha, &ea); } else { + fcport->login_retry--; status = qla2x00_local_device_login(vha, fcport); if (status == QLA_SUCCESS) { @@ -5898,16 +5899,21 @@ qla2x00_do_dpc(void *data) } /* Retry each device up to login retry count */ - if ((test_and_clear_bit(RELOGIN_NEEDED, - &base_vha->dpc_flags)) && + if (test_bit(RELOGIN_NEEDED, &base_vha->dpc_flags) && !test_bit(LOOP_RESYNC_NEEDED, &base_vha->dpc_flags) && atomic_read(&base_vha->loop_state) != LOOP_DOWN) { - ql_dbg(ql_dbg_dpc, base_vha, 0x400d, - "Relogin scheduled.\n"); - qla2x00_relogin(base_vha); - ql_dbg(ql_dbg_dpc, base_vha, 0x400e, - "Relogin end.\n"); + if (!base_vha->relogin_jif || + time_after_eq(jiffies, base_vha->relogin_jif)) { + base_vha->relogin_jif = jiffies + HZ; + clear_bit(RELOGIN_NEEDED, &base_vha->dpc_flags); + + ql_dbg(ql_dbg_dpc, base_vha, 0x400d, + "Relogin scheduled.\n"); + qla2x00_relogin(base_vha); + ql_dbg(ql_dbg_dpc, base_vha, 0x400e, + "Relogin end.\n"); + } } loop_resync_check: if (test_and_clear_bit(LOOP_RESYNC_NEEDED,