From patchwork Tue Nov 28 19:34:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 10080959 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 EC2D2602DC for ; Tue, 28 Nov 2017 19:35:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DF73528329 for ; Tue, 28 Nov 2017 19:35:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D426A29638; Tue, 28 Nov 2017 19:35:45 +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 09C2928329 for ; Tue, 28 Nov 2017 19:35:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932179AbdK1Tfm (ORCPT ); Tue, 28 Nov 2017 14:35:42 -0500 Received: from mail-cys01nam02on0048.outbound.protection.outlook.com ([104.47.37.48]:32352 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754127AbdK1TfW (ORCPT ); Tue, 28 Nov 2017 14:35:22 -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=FUrQUxhbVVyRvgpG4ODSpEyL4S9WfHrinilY54yRB6uZGunSc0fF6Akv9coMeXDEirIcIOlU/Ju3z0dP9eAm7YHnu8vepEQxG3GlckibxW8wI9e2GXFAfe5xjx0Mi28rQ7dzdHrhttxSmTvNyHFA+CHS/YX5mS0mYFHTM1rzUuk= Received: from BY2PR07CA0085.namprd07.prod.outlook.com (2a01:111:e400:7bff::38) 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; Tue, 28 Nov 2017 19:35:21 +0000 Received: from BY2FFO11OLC011.protection.gbl (2a01:111:f400:7c0c::139) by BY2PR07CA0085.outlook.office365.com (2a01:111:e400:7bff::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.260.4 via Frontend Transport; Tue, 28 Nov 2017 19:35:20 +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 BY2FFO11OLC011.mail.protection.outlook.com (10.1.15.22) 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; Tue, 28 Nov 2017 19:35:20 +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; Tue, 28 Nov 2017 11:35:06 -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 vASJZ6fY013774; Tue, 28 Nov 2017 11:35:06 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id vASJZ6v9013773; Tue, 28 Nov 2017 11:35:06 -0800 From: Himanshu Madhani To: , CC: , Subject: [PATCH 11/22] qla2xxx: Fix Relogin being triggered too fast Date: Tue, 28 Nov 2017 11:34:52 -0800 Message-ID: <20171128193503.13695-12-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171128193503.13695-1-himanshu.madhani@cavium.com> References: <20171128193503.13695-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)(376002)(346002)(2980300002)(428002)(189002)(199003)(36756003)(105586002)(72206003)(50466002)(106466001)(48376002)(33646002)(87636003)(478600001)(5660300001)(51416003)(1076002)(305945005)(54906003)(189998001)(76176999)(110136005)(50226002)(8936002)(42186006)(50986999)(69596002)(16586007)(6666003)(81156014)(2906002)(81166006)(2950100002)(575784001)(86362001)(8676002)(47776003)(80596001)(316002)(101416001)(4326008)(356003); 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; BY2FFO11OLC011; 1:2dh4Jza99xmpNRf3yzMzj9cCyvBUQqxPYCVQpopkFdE7Wrrx6aic+xYlAqEZoyRt8qsCFhG28hAu70CDtN/wDNm/vbnRPKo97CHakmYL4No2dTcESqaoARoLAe2olFbT X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c815a859-4dc4-44b7-8abb-08d53697298a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258); SRVR:SN4PR0701MB3821; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 3:t4NmVQ79Hd0w4DlcyTGGWgnC16YbTfdEIf5VjLB6K6G4WHf2qHZ0nAnOEN0zsRllSXw7P4pkMH5sCrxlK6/J77IcmH8TGjYtMxg7MN2vrCZrTst6XNHVHGSmM2rEPDdS07rHeGK8NgD3+pvRroWnT+ptm20WiU0Y+Nips/DIGueCOLfTJ9CNtOrEWFLJPdNPIF9AQ99EN7E17vmZtIoHk8x8L1c7uImphPJaCeaYCwKismY8ssxrgX8X8iiRMAYzciiKfSNu6GJ+BdmiGpL0t0C3Ggaar1117gVTmAH1RMHWDLib9C+npvPq/ffeoJdYNlCpOrSwcXGKa8Kxx6aAJY6bst0qiBvUUDm5klUCSeI=; 25:vRY2ViSBtgc3IBdDFGwzfdV2NTNdECdegYnQN89/uHggEZjEfJ+5V1VcQUHgTs1FlpyI2mB7NuPW/WMW2wrajnf0YZzVCrLcLUuOQENFJ16lunajHcXGimqd+QUBxEQ62/h6m4l3EFrxN7/bzevuBO3CYaeAh5iLY4+cWMYPrleLPyFGzSQ0ijcJhHQmxQPy+4BYk+q+Y80J3LT423VKkAr83VJRjgkk7kRQNEXW37lyh6Dy8a+Gz+zhgne4mPHkEeM0uv5nxFlOESY7hx3mdLADyqXFdG4SDTRzFIzRJ461j8SsD/Q1gzu4nJzWA90id4rePfpzfDnxJ2VPaU/yVA== X-MS-TrafficTypeDiagnostic: SN4PR0701MB3821: X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 31:As4AiOpf6ukd/N8Scc7Tu50yWcizP6YMfCdneMFEbV83S4G0mq/0wY8T+NcLWzD6W0jOxAihR3wqmwDhN9iwFVnb+9tep3Lz7oKZfq50HFLAOttwzgfVt+1cVmwaqDb6mBsvn62uqheG7EpWge8AULLa7vHKFozx0NA3inbh1AjsxJO+OV1rHMWC+Qz6GGEZzfSAqCWNUqlNwGH3qS+TUGtOSqctAfd5bEQNx9oi61Q=; 20:aHIuDAKXMOUZpZFnpXd4NHtm7MhSycLOMIa1fRp9kClf2CPyu5cj3CUHVYMsqUzUWYbvDEE/06sF+0Py2SYwkfjj4s1PgW/cHmG+7G1zJK+GB28A31IDVNqJxJFuz6pOX2RgbG7rJo8pqob59JTHNY+bTfXVQMYiNCOKo7XDdC0vXcqvFopTJ2pVKdAm4xSjQNpTD1fmY2/Q6UsZA+/CPWwPKWlxFoFLAHbeivXdOVS08wtlBPv96JElSmFmJdf6H8jurMLASlQuDnPNEiucnwAB1WzWytC1L5llHtL3zVqclEXcJFf+Z+RpYfCzVj97pbW3lQXmd3Jtlz3/1kVgvX5igaNN5abYDh+HjLt5kgK0abor3Tg/Q8gzQtWEd6l20drFMB6eyfnC6BnVyzoYPCj2iLl3odmruTVdhYsnAlw5Kz5n0GVBAwidotO0ivtnkW5QPYUGVtW+QGYxXKkkScuhsGOysSE15cozXUGdhzx2U32McEwSIL1Jf4zKFGfW 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)(10201501046)(3002001)(93006095)(93001095)(3231022)(6041248)(20161123564025)(20161123555025)(20161123558100)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN4PR0701MB3821; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SN4PR0701MB3821; X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 4:P0M/elBJUOl9WHbuvFA08RFVZg+uZ1CELUHA4NxnAWI9HjA+45uLaAqQmaj2ZwNH5kt0A3w8+4DoTmay2U39d/aiuNDu28roqsBuiky2hPYjHm1/KhM8WPfZYj/gi+r+ZPVvSKnl3Suos94jwjA7vbngu5EzFwyysb/DX9Yep1i+5w7L/gOBPup41pYAwuXIHA/ISXgYgiEfOcl0zw2f/0Q48cEICttHzWoMLAkWQEHj7ra/LeEB85He6FA4oBerTZ5L4ImQW6+wWOJRW50RySSjqn+xnr40ArxP65GscBVbo3luysh0N6m4awz67XgZ X-Forefront-PRVS: 0505147DDB X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN4PR0701MB3821; 23:LYPTsA4AQpt7p1y48CFDDnLtdsbhXEWztQCp6Q3?= =?us-ascii?Q?gziSbNMyyIaj045qExpEGVRT+zqEZIVFR1tzjcGbKbD57849JiLYK9ge2Ucd?= =?us-ascii?Q?GqEcYdAyI5mqN+bd1ARCMS03u7YeFJxa0sUBuWomZOttNf/b6DXsQKdl3B1p?= =?us-ascii?Q?GtVLLalN4OhdKFJJxeekmfpptgqIJsC7GuHvKSYI/dTHSXrUjyK3YB30lLJd?= =?us-ascii?Q?mqi0VCb6vP/UOE4tsaCJotHzLNZo68ah3/6+5eHfh5N4Xx4Q9qf4LsDJP0p6?= =?us-ascii?Q?27IMIBRtPogHoY/wPxqzHC88jchSAuO4QDhJlJGaXBxsCoGIAL46yhDd4mxW?= =?us-ascii?Q?bKNWcWY4wLNLbYCcqA1iyAaLkTLY8r8F4+0DTz+xvIyXM58JuQEfMNp0/XPv?= =?us-ascii?Q?ME8bCjo5+U1MhDZpYNLK3ycx6eQ4sJ1r4sTXF1QwdOwRZM4wCDrTE/XmNmeS?= =?us-ascii?Q?IbHqvVhQlKnVPwGg0PL4yJibteQcp53fl3YFUa79T8vyNw+ygC5fUaytegRJ?= =?us-ascii?Q?AAE4lkWFVwQgtqIcOs+cdiLAmLdEMoMI7kyQc9OJYTZlx7uLvLC88sKVzCeo?= =?us-ascii?Q?0SpoixXhvFgwcTVBzg9OVFW1s0+o/n/93yi5kD7wZWRZyr+GlR4sNL/03jpu?= =?us-ascii?Q?iAtr67X0mWfHNJmO0U1ISC5SwQlgVZXICkl8lqAEhQK+hweMfEqavJ9wSpeD?= =?us-ascii?Q?7MdjKmfrSeIZZBHlB5+kwUWwNLhr88MmiIk5QgSTOuflHglGZGpaLO7EPy0O?= =?us-ascii?Q?8zOZmH9YQG86pufzkkhm0qG1xE7gxwKE1uYLye5qm/AB1jabyPgVf8n7dmIM?= =?us-ascii?Q?2rikjWp+VQGLCIB6sz8rDLGxsdQ0HTvWwWpRQm5JCdsMvCbX4d2ohly7rrvQ?= =?us-ascii?Q?q0B4+A1Njh8eK6Fk5tus3nb3Zk+9/4XESANvj3KIe32R1Ye3lMKgB0F566Ti?= =?us-ascii?Q?tLe2jPSD8yFvEkXsAps64CXxXSvenWJ3R5qCOkRD19jxrZX3itqL86bWDlXT?= =?us-ascii?Q?sH0ZNOT22Bs4crUJzsT0gUIg/kQOo3zHz2Hu8GsPQxSRCDg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN4PR0701MB3821; 6:/AXIP2NWc8OLQW/ldj2Kv4kUy+/+DpxOy5//ktiSmOw9FHayGvZ9bh8KIs0xGYDSrZl50v8Eee1Ye+ogV0bsr9OwIshGk1uofXCgX/n5UIgGYNPijkvu0DogkvXfuxaBm1sXRgymkoLC2xaTYzHrR4tsxO+A7CHbY14x0Qu4x0+5HFeTCyRctGBGYgwg3WeiepYRRELBfChWcL4RbbokZGbjbfk5EGB1qXM7hzAhzXDT5/6XlhJ1lc6M9hnRSIfwfwjDIqGnlvDshDffc7L5Po2DziNwSze+vEsoocPFUcdnV+iam9rIdlz6GLFgDGjQ/SEjJHiiwtf7ACEQQltWnxYJv7rWnshIAIC4rY6VXPs=; 5:SOIEf7MSHbAXmnRuE9eB/yY/gkWiMnLjXhGP76gMbGLpzDMbApkeudY9oyc4CzC2iN4E5CtCvXwA7tQxDG20H1DCXrCdQIXfHsVOvAXtCRIdMCDpcJmOwvZGzMXD+inNctKQ+2wfmZQGSbCT43eLBcIgdiUgWMAf8SeWWiEfdxk=; 24:BzOCk1Te/QaIxu5WWxHZgb7ZLXvuz8avbB9vbP6VgMuV1KEIf3/57NuscXWSnmwvRaYf9ukIk0qhmHV/JG96Kp+uB6DLufYPAjPQPm31aAQ=; 7:CE1f3LNKy3XvIwfsg3buv/m4ulNFLTP3MQLaOvv/M1sH456BIYUZqo7ZWnKHVqOIwgb6fOfzW2Fz6ZUWDPNn9SonBKMFwJIdMhAaLn8kIwdSS8yf7Px3d9ULKKiuP25G1AXVxJHwhXmyrjDIExTvU7wjkJ9mg1mr4iD3xm8ty5oC7edfXTgCahIs+RKAT32/AvaOI031poIOkNsfj7rW97sUJ/DgjKcJqDPnwO7etDxDTPNoFnMMj4jyQeeTm3pp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2017 19:35:20.5516 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c815a859-4dc4-44b7-8abb-08d53697298a 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 --- 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,