Received: by 10.223.185.116 with SMTP id b49csp5958471wrg; Wed, 7 Mar 2018 22:39:32 -0800 (PST) X-Google-Smtp-Source: AG47ELs2XvVT8+55PQAB+8q8Ty3ur2Q4x8QugzC5GkZwX1NVbvLIFTsslsYRp3Gj4mBU9DaTxNXQ X-Received: by 10.99.183.68 with SMTP id w4mr20796730pgt.113.1520491172514; Wed, 07 Mar 2018 22:39:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520491172; cv=none; d=google.com; s=arc-20160816; b=SEOh3+1VGocVjS14mo7TrAirOAyHoOsSN8090wJ/64Md1BPlL8zv0dXV4X/WVinPBf D4tLpAw1XJ6DKCBwnm2Gyvcopy7o1AUmYG90FVoHgqygo21ZIAdiQbm1YDt3QKUXagfc QsAwgwh77x2mGt47WWdUjW5KoqZ6vaMFkB25ubJ8X97JygPzizvTHZ9qx5riIZBEYcUb awvLViGIYIt2IGqj9QVN3w8b84h1d8h+kkWX/AQFotg3zTLsMBMt4AlfnQ79EliRHWH2 8n79NM36fKjuHqSmvo0Jn6QEmkgqd4uWCCa5xVF/NBV/PN508BhzKv8+JZAuH1W46HX/ KnhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=cSNO16To5upVIT3QUG5+DbFoirU//69lU8otZ7MPV7I=; b=PQ19FqxLoGcWXybInd82HbktW4QB/HGAyLspdvK12/ak8akGCnBBvfRGwQlcFsHBo3 f2eN++Z+/6qn0FPa64S6ydDAbJXZhfSjTR0hiF1hNGJ+M/aH3K3j5mP/GKmD0naSvG2b kzWb8WKNjyWkB5QhcDvyAJFnYZMOSKx7aK/+2X7Ut0MoKat4FZrHIEur7xi4fZs0i/C0 5OhjFjf/S+N8P7qTpCZMge3OyNvR4vL9c1TTta/jHdavIMuqc5OOG8TTwgmb/kNiQe4v BnNTDhVd6awPiL/W1e0tN3qtSS5HFNwKSAYdak39YsT3XNCLNEsB9C9NzjmvbcNBrcrt x2vA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector1 header.b=oVI/DK9v; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a29si15287154pfe.34.2018.03.07.22.39.17; Wed, 07 Mar 2018 22:39:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector1 header.b=oVI/DK9v; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965379AbeCHE7S (ORCPT + 99 others); Wed, 7 Mar 2018 23:59:18 -0500 Received: from mail-co1nam03on0126.outbound.protection.outlook.com ([104.47.40.126]:14720 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965356AbeCHE7P (ORCPT ); Wed, 7 Mar 2018 23:59:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=cSNO16To5upVIT3QUG5+DbFoirU//69lU8otZ7MPV7I=; b=oVI/DK9vLnltAYl5xo28RG3/juDxZHJQHktWwlh0vAfhx2MwjXQWbeSehb7J7tlwPNivr4r/k8Jimb/YWh/ABg5lDrN3VG01QTUNR02lRgqPbwICzRfGwVH7Yc4XHLfsdYDat8HESbkeJrKpKE9ncySdexDe7x0pAWKBr8foLLE= Received: from DM5PR2101MB1032.namprd21.prod.outlook.com (52.132.128.13) by DM5PR2101MB0999.namprd21.prod.outlook.com (52.132.133.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.7; Thu, 8 Mar 2018 04:59:11 +0000 Received: from DM5PR2101MB1032.namprd21.prod.outlook.com ([fe80::8063:c68a:b210:7446]) by DM5PR2101MB1032.namprd21.prod.outlook.com ([fe80::8063:c68a:b210:7446%2]) with mapi id 15.20.0588.008; Thu, 8 Mar 2018 04:59:11 +0000 From: Sasha Levin To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" CC: James Smart , Dick Kennedy , James Smart , "Martin K . Petersen" , Sasha Levin Subject: [PATCH AUTOSEL for 4.14 57/67] scsi: lpfc: Fix SCSI LUN discovery when SCSI and NVME enabled Thread-Topic: [PATCH AUTOSEL for 4.14 57/67] scsi: lpfc: Fix SCSI LUN discovery when SCSI and NVME enabled Thread-Index: AQHTtpoGJnj5pA2FuECTsh2AkVlPPQ== Date: Thu, 8 Mar 2018 04:57:57 +0000 Message-ID: <20180308045641.7814-57-alexander.levin@microsoft.com> References: <20180308045641.7814-1-alexander.levin@microsoft.com> In-Reply-To: <20180308045641.7814-1-alexander.levin@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR2101MB0999;7:62vEqxGsiwOYGYydStry8FBrbRpJcVbwO+8VbbNxwtsZHRqaEnQxWnlDjYzp5HsMXj1707Q2ug5ImUV746Dfshua2ps+bn5sV26tGRClUIR2e1/G0uP9b0EhUhvC6VPHzm1ADfDrb53ZV/xI88mYu6Dq9I2VB49nqGExrRU/sTHkMCi4pzrq+SkLjFs7xZIoArQSVB5nEwMYw2i2rIFnvCyvktiRfxtYl3QVU31W073/TfVHxcNZ8Bpv9jC7MgEg;20:P9/IrI1I3aIRNyftpL30tITHpuoB1rQVI6j3BdFEexD5qhew2s/1nuR30M2sa64OENgTdPaWPNPysaVaF2gTP0DuLIfDOPV7IQ96aXJiVImar1cicepmcMmkSibbIoItLkK24QmYFe6Mi4Jydgv4FYmsybgjK7tryygogr0aEqo= x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 526c7924-e89b-44a8-769a-08d584b1551e x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7193020);SRVR:DM5PR2101MB0999; x-ms-traffictypediagnostic: DM5PR2101MB0999: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexander.Levin@microsoft.com; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171)(85827821059158)(146099531331640); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(61425038)(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231220)(944501244)(52105095)(6055026)(61426038)(61427038)(6041288)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(6072148)(201708071742011);SRVR:DM5PR2101MB0999;BCL:0;PCL:0;RULEID:;SRVR:DM5PR2101MB0999; x-forefront-prvs: 060503E79B x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(39860400002)(39380400002)(376002)(396003)(346002)(189003)(199004)(72206003)(3846002)(106356001)(8676002)(6116002)(1076002)(6512007)(14454004)(81156014)(66066001)(2906002)(3660700001)(478600001)(10290500003)(8936002)(6486002)(305945005)(7736002)(36756003)(2900100001)(81166006)(4326008)(25786009)(6436002)(5250100002)(105586002)(54906003)(22452003)(76176011)(5660300001)(10090500001)(110136005)(316002)(39060400002)(6506007)(86362001)(186003)(2950100002)(97736004)(3280700002)(102836004)(99286004)(107886003)(59450400001)(68736007)(86612001)(53936002)(26005)(6666003)(2501003)(22906009)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR2101MB0999;H:DM5PR2101MB1032.namprd21.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: O/7a6jOWVO7AySAGVLRm3jbiIfvEpw8OHcTlfZJyz826snsqJhfJfmXJQY4Cq0HlQqroC884bACTdp4TuO+fShRRcxQSoBXbFvuWnfCFeNgU1hB3o3LQ+5o28viDSEVr/uWspnt7mOpIHoUR4aFSVmFfoWjTC4EKkkUMddw6sLQ8Us4mLghA/E02UpWjG5+m5FXn2t3k1dwp54YZNsAZJWYSWCcz++cBNYxrMVASVBwo96z/MuBvUGm7cclOyagOsTquqmomif9WZL5SeE96RVKZ6aEUtTL3QYma+hmOVwH3S0ZgJshH8+HTYyT9RmJP2Wq92QmGRiruIsa/OxEf9g== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 526c7924-e89b-44a8-769a-08d584b1551e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Mar 2018 04:57:57.0206 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR2101MB0999 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: James Smart [ Upstream commit 9de416ac67b54d666327ba927a190f4b7259f4a0 ] When enabled for both SCSI and NVME support, and connected pt2pt to a SCSI only target, the driver nodelist entry for the remote port is left in PRLI_ISSUE state and no SCSI LUNs are discovered. Works fine if only configured for SCSI support. Error was due to some of the prli points still reflecting the need to send only 1 PRLI. On a lot of fabric configs, targets were NVME only, which meant the fabric-reported protocol attributes were only telling the driver one protocol or the other. Thus things worked fine. With pt2pt, the driver must send a PRLI for both protocols as there are no hints on what the target supports. Thus pt2pt targets were hitting the multiple PRLI issues. Complete the dual PRLI support. Track explicitly whether scsi (fcp) or nvme prli's have been sent. Accurately track protocol support detected on each node as reported by the fabric or probed by PRLI traffic. Signed-off-by: Dick Kennedy Signed-off-by: James Smart Reviewed-by: Hannes Reinecke Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/lpfc/lpfc_ct.c | 1 + drivers/scsi/lpfc/lpfc_els.c | 30 ++++++++++++++++++++---------- drivers/scsi/lpfc/lpfc_nportdisc.c | 30 +++++++++++++----------------- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c index 33417681f5d4..126723a5bc6f 100644 --- a/drivers/scsi/lpfc/lpfc_ct.c +++ b/drivers/scsi/lpfc/lpfc_ct.c @@ -471,6 +471,7 @@ lpfc_prep_node_fc4type(struct lpfc_vport *vport, uint32= _t Did, uint8_t fc4_type) "Parse GID_FTrsp: did:x%x flg:x%x x%x", Did, ndlp->nlp_flag, vport->fc_flag); =20 + ndlp->nlp_fc4_type &=3D ~(NLP_FC4_FCP | NLP_FC4_NVME); /* By default, the driver expects to support FCP FC4 */ if (fc4_type =3D=3D FC_TYPE_FCP) ndlp->nlp_fc4_type |=3D NLP_FC4_FCP; diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index 3ebf6ccba6e6..91783dbdf10c 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -2088,6 +2088,10 @@ lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpf= c_iocbq *cmdiocb, ndlp =3D (struct lpfc_nodelist *) cmdiocb->context1; spin_lock_irq(shost->host_lock); ndlp->nlp_flag &=3D ~NLP_PRLI_SND; + + /* Driver supports multiple FC4 types. Counters matter. */ + vport->fc_prli_sent--; + ndlp->fc4_prli_sent--; spin_unlock_irq(shost->host_lock); =20 lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, @@ -2095,9 +2099,6 @@ lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc= _iocbq *cmdiocb, irsp->ulpStatus, irsp->un.ulpWord[4], ndlp->nlp_DID); =20 - /* Ddriver supports multiple FC4 types. Counters matter. */ - vport->fc_prli_sent--; - /* PRLI completes to NPort */ lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS, "0103 PRLI completes to NPort x%06x " @@ -2111,7 +2112,6 @@ lpfc_cmpl_els_prli(struct lpfc_hba *phba, struct lpfc= _iocbq *cmdiocb, =20 if (irsp->ulpStatus) { /* Check for retry */ - ndlp->fc4_prli_sent--; if (lpfc_els_retry(phba, cmdiocb, rspiocb)) { /* ELS command is being retried */ goto out; @@ -2190,6 +2190,15 @@ lpfc_issue_els_prli(struct lpfc_vport *vport, struct= lpfc_nodelist *ndlp, ndlp->nlp_fc4_type |=3D NLP_FC4_NVME; local_nlp_type =3D ndlp->nlp_fc4_type; =20 + /* This routine will issue 1 or 2 PRLIs, so zero all the ndlp + * fields here before any of them can complete. + */ + ndlp->nlp_type &=3D ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); + ndlp->nlp_type &=3D ~(NLP_NVME_TARGET | NLP_NVME_INITIATOR); + ndlp->nlp_fcp_info &=3D ~NLP_FCP_2_DEVICE; + ndlp->nlp_flag &=3D ~NLP_FIRSTBURST; + ndlp->nvme_fb_size =3D 0; + send_next_prli: if (local_nlp_type & NLP_FC4_FCP) { /* Payload is 4 + 16 =3D 20 x14 bytes. */ @@ -2298,6 +2307,13 @@ lpfc_issue_els_prli(struct lpfc_vport *vport, struct= lpfc_nodelist *ndlp, elsiocb->iocb_cmpl =3D lpfc_cmpl_els_prli; spin_lock_irq(shost->host_lock); ndlp->nlp_flag |=3D NLP_PRLI_SND; + + /* The vport counters are used for lpfc_scan_finished, but + * the ndlp is used to track outstanding PRLIs for different + * FC4 types. + */ + vport->fc_prli_sent++; + ndlp->fc4_prli_sent++; spin_unlock_irq(shost->host_lock); if (lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, elsiocb, 0) =3D=3D IOCB_ERROR) { @@ -2308,12 +2324,6 @@ lpfc_issue_els_prli(struct lpfc_vport *vport, struct= lpfc_nodelist *ndlp, return 1; } =20 - /* The vport counters are used for lpfc_scan_finished, but - * the ndlp is used to track outstanding PRLIs for different - * FC4 types. - */ - vport->fc_prli_sent++; - ndlp->fc4_prli_sent++; =20 /* The driver supports 2 FC4 types. Make sure * a PRLI is issued for all types before exiting. diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_np= ortdisc.c index b6957d944b9a..678bfdd53eb2 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c @@ -390,6 +390,11 @@ lpfc_rcv_plogi(struct lpfc_vport *vport, struct lpfc_n= odelist *ndlp, break; } =20 + ndlp->nlp_type &=3D ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); + ndlp->nlp_type &=3D ~(NLP_NVME_TARGET | NLP_NVME_INITIATOR); + ndlp->nlp_fcp_info &=3D ~NLP_FCP_2_DEVICE; + ndlp->nlp_flag &=3D ~NLP_FIRSTBURST; + /* Check for Nport to NPort pt2pt protocol */ if ((vport->fc_flag & FC_PT2PT) && !(vport->fc_flag & FC_PT2PT_PLOGI)) { @@ -742,9 +747,6 @@ lpfc_rcv_prli(struct lpfc_vport *vport, struct lpfc_nod= elist *ndlp, lp =3D (uint32_t *) pcmd->virt; npr =3D (PRLI *) ((uint8_t *) lp + sizeof (uint32_t)); =20 - ndlp->nlp_type &=3D ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); - ndlp->nlp_fcp_info &=3D ~NLP_FCP_2_DEVICE; - ndlp->nlp_flag &=3D ~NLP_FIRSTBURST; if ((npr->prliType =3D=3D PRLI_FCP_TYPE) || (npr->prliType =3D=3D PRLI_NVME_TYPE)) { if (npr->initiatorFunc) { @@ -769,8 +771,12 @@ lpfc_rcv_prli(struct lpfc_vport *vport, struct lpfc_no= delist *ndlp, * type. Target mode does not issue gft_id so doesn't get * the fc4 type set until now. */ - if ((phba->nvmet_support) && (npr->prliType =3D=3D PRLI_NVME_TYPE)) + if (phba->nvmet_support && (npr->prliType =3D=3D PRLI_NVME_TYPE)) { ndlp->nlp_fc4_type |=3D NLP_FC4_NVME; + lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); + } + if (npr->prliType =3D=3D PRLI_FCP_TYPE) + ndlp->nlp_fc4_type |=3D NLP_FC4_FCP; } if (rport) { /* We need to update the rport role values */ @@ -1552,7 +1558,6 @@ lpfc_rcv_prli_reglogin_issue(struct lpfc_vport *vport= , if (ndlp->nlp_flag & NLP_RPI_REGISTERED) { lpfc_rcv_prli(vport, ndlp, cmdiocb); lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); - lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); } else { /* RPI registration has not completed. Reject the PRLI * to prevent an illegal state transition when the @@ -1568,6 +1573,7 @@ lpfc_rcv_prli_reglogin_issue(struct lpfc_vport *vport= , stat.un.b.lsRjtRsnCodeExp =3D LSEXP_CMD_IN_PROGRESS; lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); + return ndlp->nlp_state; } } else { /* Initiator mode. */ @@ -1922,13 +1928,6 @@ lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, = struct lpfc_nodelist *ndlp, return ndlp->nlp_state; } =20 - /* Check out PRLI rsp */ - ndlp->nlp_type &=3D ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); - ndlp->nlp_fcp_info &=3D ~NLP_FCP_2_DEVICE; - - /* NVME or FCP first burst must be negotiated for each PRLI. */ - ndlp->nlp_flag &=3D ~NLP_FIRSTBURST; - ndlp->nvme_fb_size =3D 0; if (npr && (npr->acceptRspCode =3D=3D PRLI_REQ_EXECUTED) && (npr->prliType =3D=3D PRLI_FCP_TYPE)) { lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_DISC, @@ -1945,8 +1944,6 @@ lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, s= truct lpfc_nodelist *ndlp, if (npr->Retry) ndlp->nlp_fcp_info |=3D NLP_FCP_2_DEVICE; =20 - /* PRLI completed. Decrement count. */ - ndlp->fc4_prli_sent--; } else if (nvpr && (bf_get_be32(prli_acc_rsp_code, nvpr) =3D=3D PRLI_REQ_EXECUTED) && @@ -1991,8 +1988,6 @@ lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, s= truct lpfc_nodelist *ndlp, be32_to_cpu(nvpr->word5), ndlp->nlp_flag, ndlp->nlp_fcp_info, ndlp->nlp_type); - /* PRLI completed. Decrement count. */ - ndlp->fc4_prli_sent--; } if (!(ndlp->nlp_type & NLP_FCP_TARGET) && (vport->port_type =3D=3D LPFC_NPIV_PORT) && @@ -2016,7 +2011,8 @@ lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, s= truct lpfc_nodelist *ndlp, ndlp->nlp_prev_state =3D NLP_STE_PRLI_ISSUE; if (ndlp->nlp_type & (NLP_FCP_TARGET | NLP_NVME_TARGET)) lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); - else + else if (ndlp->nlp_type & + (NLP_FCP_INITIATOR | NLP_NVME_INITIATOR)) lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); } else lpfc_printf_vlog(vport, --=20 2.14.1