From patchwork Mon Dec 4 22:45:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 10091711 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 B87C3600C5 for ; Mon, 4 Dec 2017 22:46:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA3EC29387 for ; Mon, 4 Dec 2017 22:46:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9F25E29446; Mon, 4 Dec 2017 22:46:02 +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 DC1BD29387 for ; Mon, 4 Dec 2017 22:46:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752486AbdLDWqA (ORCPT ); Mon, 4 Dec 2017 17:46:00 -0500 Received: from mail-sn1nam02on0051.outbound.protection.outlook.com ([104.47.36.51]:44697 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752377AbdLDWpq (ORCPT ); Mon, 4 Dec 2017 17:45:46 -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=6o9c+Q9TO2S8K547CaIbwv1BHqxjtoFA7c0C3svOs5A=; b=I8N1YOHEecbHd3U9is00I12fmc+gBbIpQOnxrrtCPXW771Pb6rz9iRQ2MRhQOVQ2ACrrTLnkZTOIPMF+NjE5vo8YIHuiBq3Sn0eBeyF42U/bt2MqFnliYEMncDbL9bXlaQSOobucFnYWG6+vxMqSLXXscKixzdrh+b1OWQ3OVr0= Received: from CO2PR07CA0066.namprd07.prod.outlook.com (10.174.192.34) by BLUPR0701MB1937.namprd07.prod.outlook.com (10.163.121.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Mon, 4 Dec 2017 22:45:43 +0000 Received: from BL2FFO11FD054.protection.gbl (2a01:111:f400:7c09::184) by CO2PR07CA0066.outlook.office365.com (2603:10b6:100::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.282.5 via Frontend Transport; Mon, 4 Dec 2017 22:45:43 +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 BL2FFO11FD054.mail.protection.outlook.com (10.173.161.182) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.20.239.4 via Frontend Transport; Mon, 4 Dec 2017 22:45:43 +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; Mon, 4 Dec 2017 14:45:20 -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 vB4MjKd3003489; Mon, 4 Dec 2017 14:45:20 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id vB4MjKud003488; Mon, 4 Dec 2017 14:45:20 -0800 From: Himanshu Madhani To: , CC: , Subject: [PATCH v3 11/22] qla2xxx: Fix Relogin being triggered too fast Date: Mon, 4 Dec 2017 14:45:06 -0800 Message-ID: <20171204224517.3409-12-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171204224517.3409-1-himanshu.madhani@cavium.com> References: <20171204224517.3409-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)(50226002)(76176011)(54906003)(110136005)(1076002)(8936002)(51416003)(356003)(8676002)(305945005)(5660300001)(72206003)(2950100002)(6666003)(16586007)(42186006)(316002)(575784001)(81156014)(81166006)(86362001)(36756003)(101416001)(50466002)(33646002)(80596001)(69596002)(48376002)(4326008)(87636003)(478600001)(106466001)(105586002)(189998001)(2906002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1937; 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; BL2FFO11FD054; 1:Z/N31zmQA6TWteNEc/WUJ1JMOKZSFYwAkSalvlvtDdDDb4+Ddp+IX7YHs3mBZtVisljUva8tbxShGPzd53KAecM+Cs0h3LmbPFITp8AoNeq6xfdV6TkT7/HVgp/WmgFA X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2ba1a529-c39f-480f-e455-08d53b68c08a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:BLUPR0701MB1937; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1937; 3:VXIXJ1y/YStJbDSXWxNg6q2frjjGgzhJ8/ZEBJlHrszl9h542gIMsyahKrY486hlTbefe5F0b1nCkJ94R6JkCSxJfP1r28P5VkZ08S5iPXGr8kpLk1fFgHTmLeShDcg2Td6EdyEtyjce7un3bmvLLAt5s4eVvQkrtNVGXyn9g1saAFGdkqP1jha/eKXfVBeE0Umjk7tz++f4+0ihsiKqDYceKWMB0o5elia2EeWp+uqSKXwlKdLKNBu6ccKEm4+LDf2N76f7SOXruhyHcGyky1WSDdNd/EuevP3ne9SIrvcYUDyYW2ZIR7Jw92FGktqIWev4plnBO8xkzV55myyuQzRbILvxvbwqNB6mUBsp9E8=; 25:o24cqE+HwQD7HNQKOWgxO7vagYXEY8AWj5JqW+CABFtsjesrKZK/gXJ8PyX//GQI41MkBjsPFE/gS161/vK2ygu7r+C6wK5I7hC9Nzj+9rz2HID9cQqPg8fzGJaumxKrnfcrhCx1LX4MgF9BRP70mBX19BYktcTBmOnDjFe6Zvys1i30VxgSnjOg1Rm/gKo5BDO93dRvwVBb4A4ARKFFGm5nwFp7Z31Th+oJe5SVOAlFOhid5JlQjRoXL5eVXrQDJZZG+QUQy+aWLIKBxjvASuEXG87C6KoGtbRbuvFqx3FAeHLqTQzgP0CmmqgyOtnhzb45w02PRsIji0ATEi7ezQ== X-MS-TrafficTypeDiagnostic: BLUPR0701MB1937: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1937; 31:HnJGPA2w9KQIxlpgCB6b3kSd3K/ec5nzjwWkm9CJiRYD/KbcNgzmbChPJa2ZsUCrF3kGOR3zB2xpBrPrZ4ecZR5sRDmtFFlrFx9YdYTIx9bQ4JJM64PcN/e9lwAnLP1yjo7m8UYCVhvzp5fw727cmciJBvb9W3Iqjy+xiqkum6m+PW86Az+0jt38u0Dw2wNYLwANdkEN/JnybtqAlZklF/luAk372WN/+ExU9mFa2sg=; 20:hZbde1uehqUUa1L6/j+ypzOVFPyrIFsl6aifsE95+Q0wz1A2AQADp3JsItrhldWpcAdWxOguQhEXPBLSOpL2/2lBBR3PSjEBTiGiB544Z4D3eS1hJMbPf5qdSpJw3c5FkjbJ20sbcsVUfSnyXeGtcCUN+/evaF4ip/2nj7dRI4VabnlOsr0NDwE/EP6Oz5ARYkXhny2AkYAh1PYU8EJ9flfyQq3yICQVAIB7oyXO3AkX0faVBkiLkFlmz5klJYyHCKaF4cDUC4DDrci2dy9QgZ/cg6V21tSMCQFHHVykcJl+37bVV2TBdG/WWT0rxpqaWHfnfnQeEisMQnCb9Z+DFARModGnJPByLwcj8cLe2a7B30ZUi9OoGyp3EMvbR0qj2nmKW6CpiGZEYKGR0ZCFIquwbsWn+yjQ0iu2UH84+JTL9F6KfzSOEy3jlKPc3oEkAotiRAdTszsFIvBjNgpf/d4tEQQVgKY/9lBw0NqYkRatoLARyemJGItMeV9Rx7Fi 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)(3002001)(93006095)(93001095)(10201501046)(3231022)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123562025)(20161123564025)(6072148)(201708071742011); SRVR:BLUPR0701MB1937; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:BLUPR0701MB1937; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1937; 4:1/F811Tn3Rwzp7eLAV/Ddmsif5+5y8905vjrHsCBTb3XokNFqjxgBppKzt5lKoRki/PJ5rpHOH2DslcaXGzd33Vc/jbdWGZZXhn+eYssr2Auzh7nw0sA6Yl/uWOzFnwfJu/Aw/tvKGatgp5GvocOtkimmcUCs5VkPRONVl3bqUyE1tTr5ZQaj1ms5HGFqs8AOCWO7u8jV3Zo5J7Z/vC3DM1JIm2JnjnkXehswbycDCAKc3GU4FO6fF4RYUeurcbLbHyR8/YeecJ7osn8XZes8ZApR00wxA6S3rWxfrLnwKPtVvrzYTiHAkk+1Bkx6zDC X-Forefront-PRVS: 051158ECBB X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1937; 23:9IPvpJ//ds7m5UcbHBhxInMV09hgqzJnDmoZkG6?= =?us-ascii?Q?4B/B/yTaKp/rg70SUdYBSlVhuyBnRagM1yIhi0n3BSeN/hx20N0pFnpawdhO?= =?us-ascii?Q?+blQ8JCkAWTblHGGhqoLT/b5XWOYMrSMtDDDHvFGhqsPTBaiAb7lC+ICLzB2?= =?us-ascii?Q?vq5KT8XrPglzPwgkxrJo5RtfvceIn2p/EFtUV1mQojg1JwttjbkYbioCS/dG?= =?us-ascii?Q?fnfQmVQjU0GTLDOgOiqpEhPnWyF6AspLzYCFefhiyMhNgsd7yHrWmnvwhUpm?= =?us-ascii?Q?vKiolpST4lyYtR8TuT2DKXE61yBK9loiW1tyd86bDIC8QRIVbkBusvsjNBiJ?= =?us-ascii?Q?bLth83dOyEafYegBgRoieXdPs5FFGUaJ30KO0JSqBLver8w5Rbngm/xBfpuR?= =?us-ascii?Q?6TEzg0nnNF2QfKvYWkJZUXYl5YE/mGWs+Gf1IATu6UFXAHAmOGyBlMcarpUH?= =?us-ascii?Q?RCI/L9feKUYLgcUIcO4u6RxqhxOHYee7UvCrFVGvUWL0VpXNG9n/my30sHNs?= =?us-ascii?Q?6/j5NXT3t0QEGVF7mX4vatza09wbTmls8QPuwbNPJGGHApqgzV8zmYtlYmd8?= =?us-ascii?Q?HLIe1DHNhk7ElGHrwV9bQOwZIKSS1MMpo1Q9xNkIDxjV5srMfo4HZZcAQpQi?= =?us-ascii?Q?zVMFe0yH82SLZl7jOfyYQUj4j4UsI7GhqWwKUQUBCXKFrOfLhyQLgVCJhcfJ?= =?us-ascii?Q?Zsy/w2MIgzZjikZUu8Lay5crBGmdjI0mHwABFI5JzN4pUT8Prqfzzy+byhUY?= =?us-ascii?Q?MAovHQkUdHlIyyzX0IAjpBvxdconLKBokLQnuR0RKtcJv6U7/KXFdQpYSisU?= =?us-ascii?Q?Ine6SnMi19QJ55n97JQOpPBzaRQr9mbxSpLbFqtmvFRxN4zrliDIBnTJ5WKL?= =?us-ascii?Q?0sw1zgGe4U2nFchPaEKBLEHclLu4LQtOjAA05BDvO4f/4/I7duoVSZ1IKcJX?= =?us-ascii?Q?27zlcQ+fH4CYHQsn80dElVPdxfNwk2cDBSPKu5EOuehMzsEtTtIyQGn3E1T3?= =?us-ascii?Q?OExqFGd6Esxnv8Mbh4RJ30pxn?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1937; 6:KjAqidHAYHNdcnr9f6suh9DFUhbKphVSm4LZBkgG+YE+r2YGAB3zejH590biT/MI/HOHDQ9CFy1JHGKxJnJ0jWQfEvR8+e+F8Ty2s8ETdqYbw61NfryT+TgUU0yokvL2qa+QB7DvctVNmRkXiwmIU2UcatdCeNNiJ3BkEp+5ownFMjDOVPt+rtSXnLQwRuSZf+NiB/ceZ9N2/A/JaL79suI4VBtXM+M6fTYdQnDUMlKtcP/sHZXP3GtF7nYEw1nytk/EdBw1zUb721TWzf89HEV+0DO81IzSBI27keKW+FSSkS67s9zZ2RA4abkuOl7c+l9hm0X1eQ4KZyJ13/Qkv7FyFZz65SjeheMZ0Lexn6s=; 5:DitPTucW++xNPM/pJ/fZ8Qksf94txKfQijhbTbA774RbHQTHDRc2hdQ0hmtBrIajavRigrTD0VTe78ewk4A6HE2x5cuJZDJD6ObFvB2+2RyvQhJ3R2YI+xsZ9BpVrZK9YcwVHTL2na6jX6IRpInNxt+qQvVgr5lDsl9T8OqI13g=; 24:sq/rqwCbW88f1UIesmlHx176dOXph06BrsCtrjoPMfivqK2GMS9zu9EvK+q4E07WJAl5WdHJawD+ZSCXSu+2plVkRG2lhW6glB3O3XbZ9r4=; 7:T5F/evi6oq+bi8nFJGo7LGmJ48iOlS4LwrJMDK9Hj1ItmCSrOZ/htQ5UXod7097fafziqD1lu4ckB1BFBSQ7Lyeq5NV+wlteMtkliGXMkdmWFhlIvBEixhgWf7NcB2uWd6A5jiZEPAxMe97dWKsd4gPLtPj0hejjj6gFB+H2ZZS4m11jQjm9ftkJyOJKEBnKUoTHUbQu/dimBE/JGpC0mcqKNjwZWdrVP2sj8k7Kc4z4UN/9ZZirkZV1Nd+oxLV7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2017 22:45:43.2482 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2ba1a529-c39f-480f-e455-08d53b68c08a 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: BLUPR0701MB1937 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,