From patchwork Fri Apr 5 23:04:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Smart X-Patchwork-Id: 10887953 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4786D1390 for ; Fri, 5 Apr 2019 23:04:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D1F61FEBD for ; Fri, 5 Apr 2019 23:04:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0FA0728B35; Fri, 5 Apr 2019 23:04:36 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,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 9419D286D7 for ; Fri, 5 Apr 2019 23:04:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726387AbfDEXEf (ORCPT ); Fri, 5 Apr 2019 19:04:35 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:40536 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726124AbfDEXEe (ORCPT ); Fri, 5 Apr 2019 19:04:34 -0400 Received: by mail-pg1-f195.google.com with SMTP id u9so3801143pgo.7 for ; Fri, 05 Apr 2019 16:04:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kshhw/IVke+Xyp4vN5/IOL5RFj+bQzPHktLgaqL/b6M=; b=krSgSq5+4I+IkeTZFH/EN48lbilzFRLT1FcBBR/d3aE8BokFvrriiNq5ZWGL2+RKUa U1rneq49R4JBj2em4nnuShVWCv1LWc+rXrPSorjgYLYMhQ2Pd5Df2xAlFeqKiL4gEDiB ln3SOMOjsRxaCTZZeSJREyMMvgJdRpbt65bs5qtS/fcpMg5mluI2iHHtBjeNA9Hdd8EG YJX0XA95l71acIa7OL2vW9RlNC3Q74ew/FElEmEVR8AQTWgHoYJuhgJXvtCFI6F67oG9 sR0iVrUuQNDQMdWixDYGo7yQGBcsCw7+aqrl9vZ/2qCYEUzDzLJSPxAnQgcc6WVoLVRd YihQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=kshhw/IVke+Xyp4vN5/IOL5RFj+bQzPHktLgaqL/b6M=; b=BZkvKAOAfD+5okUutI/PJ1n6ebP3kz99k+35R5dxRtjWTZZzcuE+qXGW8mg4u6SMco 9/xmEhj6CbLn3HMrhZw1pJMI5XaYnkDcPaZTkyEQeRyj+CC7PYvkUin5nb7lEJneTb9l P1DRucg+uTreGZVAoTUnpd44EBKCbRh/DZxNz57nsF2QlBunWBzLSQZyHRofGH2hCbpI 3mbzVH/mDdHVg/cqrb2JuGD/SDTNgtwFvpyD44Klj/ypmupjehODUfnJfKfVBh4WYixJ wGTEXJU0tUzUoqt+UL5rUCz4czLfnyuwy6ABoCydy0JC8J8VcXmDcGRo9DsqsSxSLR6O srAw== X-Gm-Message-State: APjAAAUQaUwPZufeOaVJJZ8KA1y5n14sgmauzd6SfMp4v9VcbNtznW4a 7ockJZg5kuaePVOD4O6iqFJpyOkE X-Google-Smtp-Source: APXvYqwlL+ecBLxFBwIEhkyW/7ZXc5k+0QIBCeZ7E7KWCMRPmtfek/RCCODaBYhlAIIU9t/1Ki79og== X-Received: by 2002:a65:414a:: with SMTP id x10mr14861222pgp.237.1554505473998; Fri, 05 Apr 2019 16:04:33 -0700 (PDT) Received: from os42.localdomain ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id j67sm30805068pfc.72.2019.04.05.16.04.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 05 Apr 2019 16:04:33 -0700 (PDT) From: James Smart To: linux-scsi@vger.kernel.org Cc: muneendra.kumar@broadcom.com, James Smart Subject: [PATCH 3/4] scsi_transport_fc: Add FPIN fc event codes Date: Fri, 5 Apr 2019 16:04:22 -0700 Message-Id: <20190405230423.4316-4-jsmart2021@gmail.com> X-Mailer: git-send-email 2.13.7 In-Reply-To: <20190405230423.4316-1-jsmart2021@gmail.com> References: <20190405230423.4316-1-jsmart2021@gmail.com> 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 Add a new event type - an FPIN event. Add a new routine, fc_host_fpin_rcv(), that lldd's call when an FPIN is received. The routine processes the fpin payload. For now, the routine only logs an FPIN event. Signed-off-by: Muneendra Signed-off-by: James Smart Reviewed-by: Ewan D. Milne --- drivers/scsi/scsi_transport_fc.c | 18 ++++++++++++++++++ include/scsi/scsi_transport_fc.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 9bea4dfbe128..14e510071046 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c @@ -147,6 +147,7 @@ static const struct { { FCH_EVT_PORT_OFFLINE, "port_offline" }, { FCH_EVT_PORT_FABRIC, "port_fabric" }, { FCH_EVT_LINK_UNKNOWN, "link_unknown" }, + { FCH_EVT_LINK_FPIN, "link_FPIN" }, { FCH_EVT_VENDOR_UNIQUE, "vendor_unique" }, }; fc_enum_name_search(host_event_code, fc_host_event_code, @@ -640,6 +641,23 @@ fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number, } EXPORT_SYMBOL(fc_host_post_vendor_event); +/** + * fc_host_rcv_fpin - routine to process a received FPIN. + * @shost: host the FPIN was received on + * @fpin_len: length of FPIN payload, in bytes + * @fpin_buf: pointer to FPIN payload + * + * Notes: + * This routine assumes no locks are held on entry. + */ +void +fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf) +{ + fc_host_post_fc_event(shost, fc_get_event_number(), + FCH_EVT_LINK_FPIN, fpin_len, fpin_buf, 0); +} +EXPORT_SYMBOL(fc_host_fpin_rcv); + static __init int fc_transport_init(void) { diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h index 7998b322ed13..3bd59256db3a 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h @@ -473,6 +473,7 @@ enum fc_host_event_code { FCH_EVT_PORT_ONLINE = 0x202, FCH_EVT_PORT_FABRIC = 0x204, FCH_EVT_LINK_UNKNOWN = 0x500, + FCH_EVT_LINK_FPIN = 0x501, FCH_EVT_VENDOR_UNIQUE = 0xffff, }; @@ -808,6 +809,7 @@ void fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number, * Note: when calling fc_host_post_fc_event(), vendor_id may be * specified as 0. */ +void fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf); struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel, struct fc_vport_identifiers *); int fc_vport_terminate(struct fc_vport *vport);