Re: [PATCH 14/17] lpfc: NVME Target: bind to nvmet_fc api

2017-01-18 Thread Hannes Reinecke
On 01/18/2017 02:20 AM, James Smart wrote:
> 
> NVME Target: Tie in to NVME Fabrics nvmet_fc LLDD target api
> 
> Adds the routines to:
> - register and deregister the FC port as a nvmet-fc targetport
> - binding of nvme queues to adapter WQs
> - receipt and passing of NVME LS's to transport, sending transport response
> - receipt of NVME FCP CMD IUs, processing FCP target io data transmission
>   commands; transmission of FCP io response.
> - Abort operations for tgt io exchanges.
> 
> Signed-off-by: Dick Kennedy 
> Signed-off-by: James Smart 
> ---
>  drivers/scsi/lpfc/Makefile   |2 +-
>  drivers/scsi/lpfc/lpfc_crtn.h|8 +
>  drivers/scsi/lpfc/lpfc_ct.c  |2 +-
>  drivers/scsi/lpfc/lpfc_els.c |5 +-
>  drivers/scsi/lpfc/lpfc_hbadisc.c |   10 +-
>  drivers/scsi/lpfc/lpfc_init.c|2 +-
>  drivers/scsi/lpfc/lpfc_nvmet.c   | 1365 
> ++
>  drivers/scsi/lpfc/lpfc_sli.c |8 +-
>  8 files changed, 1390 insertions(+), 12 deletions(-)
>  create mode 100644 drivers/scsi/lpfc/lpfc_nvmet.c
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckeTeamlead Storage & Networking
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 14/17] lpfc: NVME Target: bind to nvmet_fc api

2017-01-17 Thread James Smart

NVME Target: Tie in to NVME Fabrics nvmet_fc LLDD target api

Adds the routines to:
- register and deregister the FC port as a nvmet-fc targetport
- binding of nvme queues to adapter WQs
- receipt and passing of NVME LS's to transport, sending transport response
- receipt of NVME FCP CMD IUs, processing FCP target io data transmission
  commands; transmission of FCP io response.
- Abort operations for tgt io exchanges.

Signed-off-by: Dick Kennedy 
Signed-off-by: James Smart 
---
 drivers/scsi/lpfc/Makefile   |2 +-
 drivers/scsi/lpfc/lpfc_crtn.h|8 +
 drivers/scsi/lpfc/lpfc_ct.c  |2 +-
 drivers/scsi/lpfc/lpfc_els.c |5 +-
 drivers/scsi/lpfc/lpfc_hbadisc.c |   10 +-
 drivers/scsi/lpfc/lpfc_init.c|2 +-
 drivers/scsi/lpfc/lpfc_nvmet.c   | 1365 ++
 drivers/scsi/lpfc/lpfc_sli.c |8 +-
 8 files changed, 1390 insertions(+), 12 deletions(-)
 create mode 100644 drivers/scsi/lpfc/lpfc_nvmet.c

diff --git a/drivers/scsi/lpfc/Makefile b/drivers/scsi/lpfc/Makefile
index cd7e1fc..30a6a35 100644
--- a/drivers/scsi/lpfc/Makefile
+++ b/drivers/scsi/lpfc/Makefile
@@ -31,4 +31,4 @@ obj-$(CONFIG_SCSI_LPFC) := lpfc.o
 lpfc-objs := lpfc_mem.o lpfc_sli.o lpfc_ct.o lpfc_els.o \
lpfc_hbadisc.o  lpfc_init.o lpfc_mbox.o lpfc_nportdisc.o   \
lpfc_scsi.o lpfc_attr.o lpfc_vport.o lpfc_debugfs.o lpfc_bsg.o \
-   lpfc_nvme.o
+   lpfc_nvme.o lpfc_nvmet.o
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h
index 271335e..46bc6fd 100644
--- a/drivers/scsi/lpfc/lpfc_crtn.h
+++ b/drivers/scsi/lpfc/lpfc_crtn.h
@@ -546,6 +546,14 @@ int lpfc_nvme_register_port(struct lpfc_vport *vport,
 int lpfc_nvme_create_localport(struct lpfc_vport *vport);
 void lpfc_nvme_destroy_localport(struct lpfc_vport *vport);
 void lpfc_nvme_update_localport(struct lpfc_vport *vport);
+int lpfc_nvmet_create_targetport(struct lpfc_hba *phba);
+int lpfc_nvmet_update_targetport(struct lpfc_hba *phba);
+void lpfc_nvmet_destroy_targetport(struct lpfc_hba *phba);
+void lpfc_nvmet_unsol_ls_event(struct lpfc_hba *phba,
+   struct lpfc_sli_ring *pring, struct lpfc_iocbq *piocb);
+void lpfc_nvmet_unsol_fcp_event(struct lpfc_hba *phba,
+   struct lpfc_sli_ring *pring,
+   struct rqb_dmabuf *nvmebuf, uint64_t isr_ts);
 void lpfc_nvme_mod_param_dep(struct lpfc_hba *phba);
 void lpfc_nvme_abort_fcreq_cmpl(struct lpfc_hba *phba,
struct lpfc_iocbq *cmdiocb,
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c
index d52b8bc..b494930 100644
--- a/drivers/scsi/lpfc/lpfc_ct.c
+++ b/drivers/scsi/lpfc/lpfc_ct.c
@@ -1436,7 +1436,7 @@ lpfc_ns_cmd(struct lpfc_vport *vport, int cmdcode,
if ((vport == phba->pport) && phba->nvmet_support) {
CtReq->un.rff.fbits = (FC4_FEATURE_TARGET |
FC4_FEATURE_NVME_DISC);
-   /* todo: update targetport attributes */
+   lpfc_nvmet_update_targetport(phba);
} else {
lpfc_nvme_update_localport(vport);
}
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index d40fcc8..ec2580e 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -2633,9 +2633,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct 
lpfc_iocbq *cmdiocb,
 
if ((phba->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) ||
(phba->cfg_enable_fc4_type == LPFC_ENABLE_NVME)) {
-   if (!phba->nvmet_support)
+   if (phba->nvmet_support)
+   lpfc_nvmet_update_targetport(phba);
+   else
lpfc_nvme_update_localport(phba->pport);
-   /* todo: tgt: update targetport attributes */
}
 
mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
index cc4462b..79a9b78 100644
--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -914,9 +914,10 @@ lpfc_linkdown(struct lpfc_hba *phba)
 
if ((phba->cfg_enable_fc4_type == LPFC_ENABLE_BOTH) ||
(phba->cfg_enable_fc4_type == LPFC_ENABLE_NVME)) {
-   if (!phba->nvmet_support)
+   if (phba->nvmet_support)
+   lpfc_nvmet_update_targetport(phba);
+   else
lpfc_nvme_update_localport(vports[i]);
-   /* todo: tgt: update targetport attributes */
}
}