From patchwork Sat Aug 13 00:10:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Reed X-Patchwork-Id: 1666022 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=vI20xmEP; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M4LYh0Khzz9sGQ for ; Sat, 13 Aug 2022 10:11:18 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1oMek7-0007L9-Fn; Sat, 13 Aug 2022 00:11:07 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1oMek4-0007KF-1g for kernel-team@lists.ubuntu.com; Sat, 13 Aug 2022 00:11:04 +0000 Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id C14953F139 for ; Sat, 13 Aug 2022 00:11:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1660349463; bh=uOYYjD+DV/2QpYTk/s2woQYoOtS3D2cMX1U3IucActc=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=vI20xmEPpauJa3Ovj4gkMqf8IkPPKKLShnipunGpUA8Ny/NefvHPG1j3aReSdLR0N ObmfrVg3BFpqjal9VzusEJwka+7Vo3PLBv7V8+PYafwZ+3SLFLtNvZGgOBo7Ox0L0G l4sEQk4ra09+rdVhf5nFBdSkBwr4tLQ2136WnqyTqT5rRw06k8NhuYXN5vDXQOvMn3 9LOQ7RU9Y+Jll4cestBJ+V5z47U5L8PaKEaHJrBRp4VqOQUzAnzt06Yx5SteXim2Dd s1jGBF53WBWkKjV6I0DscZYMSGhdss6omQVczvF6uJl8KPbJb3Qw/XN6dJNFZDGRu7 t0AU1zTWpYv4A== Received: by mail-ot1-f71.google.com with SMTP id 102-20020a9d04ef000000b0061c50a3c031so827937otm.18 for ; Fri, 12 Aug 2022 17:11:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc; bh=uOYYjD+DV/2QpYTk/s2woQYoOtS3D2cMX1U3IucActc=; b=sHqrchq+a/liiDPstQHgpPpkoLghrXSZVr2M7s1EeB6RXE0TSX9NRTfvONG1doESL4 84Zor2vNwjoML7yu13MFNlHJsw0lP0zKLessHauixhjk9TIQFG/dGbCxAcsvFWKKlz3I YkqIxUOOu/Jnx9aWvYm1w3AUD86kODWvF1t7QMmbLb/4gvkUaXEss3KeGhykdN7K38Te zcYvSpryIwJL7k86Np/EmTaI6jd0cCgEXCJe3EN2XGdCGSa1FFEAI1yNKD39GHhF+r7l s69iH5aOexvzKVLHKjK7Wz+DD6MX/GvIgc2Q2FYNtQNvuqvd0WocXqvbTqiXRgW4vbgm H+Og== X-Gm-Message-State: ACgBeo2q8TMWkcx+h8F46Yg8A7e4oblmVkbkFHhqz1pGWvAq+m9rzchc ThnHQ6hTvDzyqCWKyb2GSif0cEgVThuw1jPoe94rkr46OCeLX5VdZ+SE/r8hBtsvakuCoMwiVEx 11VxP9c+v5Nm7jHZVJerE7Nh7Hy8EFGmKE+UGuU/Lkw== X-Received: by 2002:aca:3309:0:b0:343:58ca:6e20 with SMTP id z9-20020aca3309000000b0034358ca6e20mr2728471oiz.218.1660349462560; Fri, 12 Aug 2022 17:11:02 -0700 (PDT) X-Google-Smtp-Source: AA6agR47ByduP6cHyBAaix4Xj2h+ToJhkvaEyoKuSbUJM6sH6hxU+uEAHtImP6tGYeaFBYQBkYGTJg== X-Received: by 2002:aca:3309:0:b0:343:58ca:6e20 with SMTP id z9-20020aca3309000000b0034358ca6e20mr2728461oiz.218.1660349462210; Fri, 12 Aug 2022 17:11:02 -0700 (PDT) Received: from localhost ([2600:1700:1d0:5e50:51b0:150c:5b8d:e224]) by smtp.gmail.com with ESMTPSA id c9-20020a9d75c9000000b00616d3ec6734sm639102otl.53.2022.08.12.17.11.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Aug 2022 17:11:01 -0700 (PDT) From: Michael Reed To: kernel-team@lists.ubuntu.com Subject: [SRU][F][PATCH 2/5] scsi: fnic: Avoid looping in TRANS ETH on unload Date: Fri, 12 Aug 2022 19:10:54 -0500 Message-Id: <20220813001057.34877-3-michael.reed@canonical.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220813001057.34877-1-michael.reed@canonical.com> References: <20220813001057.34877-1-michael.reed@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Karan Tilak Kumar Avoid looping in fnic_scsi_abort_io() before sending fw reset when fnic is in TRANS ETH state and when we have not received any link events. BugLink: https://launchpad.net/bugs/1984011 Link: https://lore.kernel.org/r/20201121012145.18522-1-kartilak@cisco.com Reviewed-by: Arulprabhu Ponnusamy Co-developed-by: Satish Kharat Signed-off-by: Satish Kharat Signed-off-by: Karan Tilak Kumar Signed-off-by: Martin K. Petersen (cherry picked from commit f9e2beb990f0836b642e5e7d1bed285bbc137c83) Signed-off-by: Michael Reed --- drivers/scsi/fnic/fnic.h | 3 ++- drivers/scsi/fnic/fnic_fcs.c | 2 ++ drivers/scsi/fnic/fnic_main.c | 2 ++ drivers/scsi/fnic/fnic_scsi.c | 3 ++- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/fnic/fnic.h b/drivers/scsi/fnic/fnic.h index ed00b6061e0c..6dc8c916de31 100644 --- a/drivers/scsi/fnic/fnic.h +++ b/drivers/scsi/fnic/fnic.h @@ -39,7 +39,7 @@ #define DRV_NAME "fnic" #define DRV_DESCRIPTION "Cisco FCoE HBA Driver" -#define DRV_VERSION "1.6.0.49" +#define DRV_VERSION "1.6.0.50" #define PFX DRV_NAME ": " #define DFX DRV_NAME "%d: " @@ -245,6 +245,7 @@ struct fnic { u32 vlan_hw_insert:1; /* let hw insert the tag */ u32 in_remove:1; /* fnic device in removal */ u32 stop_rx_link_events:1; /* stop proc. rx frames, link events */ + u32 link_events:1; /* set when we get any link event*/ struct completion *remove_wait; /* device remove thread blocks */ diff --git a/drivers/scsi/fnic/fnic_fcs.c b/drivers/scsi/fnic/fnic_fcs.c index f2c88847c394..ab74b8d642aa 100644 --- a/drivers/scsi/fnic/fnic_fcs.c +++ b/drivers/scsi/fnic/fnic_fcs.c @@ -56,6 +56,8 @@ void fnic_handle_link(struct work_struct *work) spin_lock_irqsave(&fnic->fnic_lock, flags); + fnic->link_events = 1; /* less work to just set everytime*/ + if (fnic->stop_rx_link_events) { spin_unlock_irqrestore(&fnic->fnic_lock, flags); return; diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c index 3a2618bcce67..b0310afa7ba9 100644 --- a/drivers/scsi/fnic/fnic_main.c +++ b/drivers/scsi/fnic/fnic_main.c @@ -581,6 +581,8 @@ static int fnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) fnic->lport = lp; fnic->ctlr.lp = lp; + fnic->link_events = 0; + snprintf(fnic->name, sizeof(fnic->name) - 1, "%s%d", DRV_NAME, host->host_no); diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 1630fae6af1c..9b23f9701f91 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c @@ -2672,7 +2672,8 @@ void fnic_scsi_abort_io(struct fc_lport *lp) /* Issue firmware reset for fnic, wait for reset to complete */ retry_fw_reset: spin_lock_irqsave(&fnic->fnic_lock, flags); - if (unlikely(fnic->state == FNIC_IN_FC_TRANS_ETH_MODE)) { + if (unlikely(fnic->state == FNIC_IN_FC_TRANS_ETH_MODE) && + fnic->link_events) { /* fw reset is in progress, poll for its completion */ spin_unlock_irqrestore(&fnic->fnic_lock, flags); schedule_timeout(msecs_to_jiffies(100));