scsi: lpfc: NVME Initiator: Base modifications
NVME Initiator: Base modifications This patch adds base modifications for NVME initiator support. The base modifications consist of: - Formal split of SLI3 rings from SLI-4 WQs (sometimes referred to as rings as well) as implementation now widely varies between the two. - Addition of configuration modes: SCSI initiator only; NVME initiator only; NVME target only; and SCSI and NVME initiator. The configuration mode drives overall adapter configuration, offloads enabled, and resource splits. NVME support is only available on SLI-4 devices and newer fw. - Implements the following based on configuration mode: - Exchange resources are split by protocol; Obviously, if only 1 mode, then no split occurs. Default is 50/50. module attribute allows tuning. - Pools and config parameters are separated per-protocol - Each protocol has it's own set of queues, but share interrupt vectors. SCSI: SLI3 devices have few queues and the original style of queue allocation remains. SLI4 devices piggy back on an "io-channel" concept that eventually needs to merge with scsi-mq/blk-mq support (it is underway). For now, the paradigm continues as it existed prior. io channel allocates N msix and N WQs (N=4 default) and either round robins or uses cpu # modulo N for scheduling. A bunch of module parameters allow the configuration to be tuned. NVME (initiator): Allocates an msix per cpu (or whatever pci_alloc_irq_vectors gets) Allocates a WQ per cpu, and maps the WQs to msix on a WQ # modulo msix vector count basis. Module parameters exist to cap/control the config if desired. - Each protocol has its own buffer and dma pools. I apologize for the size of the patch. Signed-off-by:Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by:
James Smart <james.smart@broadcom.com> ---- Reviewed-by:
Hannes Reinecke <hare@suse.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com>
Showing
- drivers/scsi/lpfc/lpfc.h 71 additions, 9 deletionsdrivers/scsi/lpfc/lpfc.h
- drivers/scsi/lpfc/lpfc_attr.c 334 additions, 40 deletionsdrivers/scsi/lpfc/lpfc_attr.c
- drivers/scsi/lpfc/lpfc_bsg.c 18 additions, 9 deletionsdrivers/scsi/lpfc/lpfc_bsg.c
- drivers/scsi/lpfc/lpfc_crtn.h 25 additions, 2 deletionsdrivers/scsi/lpfc/lpfc_crtn.h
- drivers/scsi/lpfc/lpfc_debugfs.c 131 additions, 47 deletionsdrivers/scsi/lpfc/lpfc_debugfs.c
- drivers/scsi/lpfc/lpfc_debugfs.h 58 additions, 14 deletionsdrivers/scsi/lpfc/lpfc_debugfs.h
- drivers/scsi/lpfc/lpfc_els.c 21 additions, 17 deletionsdrivers/scsi/lpfc/lpfc_els.c
- drivers/scsi/lpfc/lpfc_hbadisc.c 99 additions, 58 deletionsdrivers/scsi/lpfc/lpfc_hbadisc.c
- drivers/scsi/lpfc/lpfc_hw.h 1 addition, 2 deletionsdrivers/scsi/lpfc/lpfc_hw.h
- drivers/scsi/lpfc/lpfc_hw4.h 57 additions, 6 deletionsdrivers/scsi/lpfc/lpfc_hw4.h
- drivers/scsi/lpfc/lpfc_init.c 1188 additions, 953 deletionsdrivers/scsi/lpfc/lpfc_init.c
- drivers/scsi/lpfc/lpfc_logmsg.h 4 additions, 0 deletionsdrivers/scsi/lpfc/lpfc_logmsg.h
- drivers/scsi/lpfc/lpfc_mbox.c 17 additions, 6 deletionsdrivers/scsi/lpfc/lpfc_mbox.c
- drivers/scsi/lpfc/lpfc_mem.c 36 additions, 26 deletionsdrivers/scsi/lpfc/lpfc_mem.c
- drivers/scsi/lpfc/lpfc_nportdisc.c 4 additions, 3 deletionsdrivers/scsi/lpfc/lpfc_nportdisc.c
- drivers/scsi/lpfc/lpfc_nvme.h 88 additions, 0 deletionsdrivers/scsi/lpfc/lpfc_nvme.h
- drivers/scsi/lpfc/lpfc_scsi.c 76 additions, 25 deletionsdrivers/scsi/lpfc/lpfc_scsi.c
- drivers/scsi/lpfc/lpfc_scsi.h 6 additions, 0 deletionsdrivers/scsi/lpfc/lpfc_scsi.h
- drivers/scsi/lpfc/lpfc_sli.c 1036 additions, 393 deletionsdrivers/scsi/lpfc/lpfc_sli.c
- drivers/scsi/lpfc/lpfc_sli.h 23 additions, 7 deletionsdrivers/scsi/lpfc/lpfc_sli.h
Loading
Please register or sign in to comment