lpfc: add nvmet discovery_event op support
authorJames Smart <jsmart2021@gmail.com>
Tue, 14 May 2019 21:58:06 +0000 (14:58 -0700)
committerChristoph Hellwig <hch@lst.de>
Fri, 21 Jun 2019 09:08:37 +0000 (11:08 +0200)
This patch adds support for the nvmet discovery op. When the callback
routine is called, the driver will call the routine to generate an RSCN
to the port on the other end of the link.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Arun Easi <aeasi@marvell.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/lpfc/lpfc_nvmet.c

index d74bfd2644950804da7c8c6023c5b6537e3e9138..06170824a69b2cd17819e2d77e477f414ff89944 100644 (file)
@@ -1139,6 +1139,22 @@ lpfc_nvmet_defer_rcv(struct nvmet_fc_target_port *tgtport,
        spin_unlock_irqrestore(&ctxp->ctxlock, iflag);
 }
 
+static void
+lpfc_nvmet_discovery_event(struct nvmet_fc_target_port *tgtport)
+{
+       struct lpfc_nvmet_tgtport *tgtp;
+       struct lpfc_hba *phba;
+       uint32_t rc;
+
+       tgtp = tgtport->private;
+       phba = tgtp->phba;
+
+       rc = lpfc_issue_els_rscn(phba->pport, 0);
+       lpfc_printf_log(phba, KERN_ERR, LOG_NVME,
+                       "6420 NVMET subsystem change: Notification %s\n",
+                       (rc) ? "Failed" : "Sent");
+}
+
 static struct nvmet_fc_target_template lpfc_tgttemplate = {
        .targetport_delete = lpfc_nvmet_targetport_delete,
        .xmt_ls_rsp     = lpfc_nvmet_xmt_ls_rsp,
@@ -1146,6 +1162,7 @@ static struct nvmet_fc_target_template lpfc_tgttemplate = {
        .fcp_abort      = lpfc_nvmet_xmt_fcp_abort,
        .fcp_req_release = lpfc_nvmet_xmt_fcp_release,
        .defer_rcv      = lpfc_nvmet_defer_rcv,
+       .discovery_event = lpfc_nvmet_discovery_event,
 
        .max_hw_queues  = 1,
        .max_sgl_segments = LPFC_NVMET_DEFAULT_SEGS,