kernel_optimize_test/drivers/scsi/lpfc
James Smart 895427bd01 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>
2017-02-22 18:41:43 -05:00
..
lpfc_attr.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_attr.h lpfc: Re-organize source for easier driver attribute management 2016-07-15 15:25:06 -04:00
lpfc_bsg.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_bsg.h scsi: lpfc: Synchronize link speed with boot driver 2016-11-08 17:29:50 -05:00
lpfc_compat.h
lpfc_crtn.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_ct.c scsi: lpfc: Mark symbols static where possible 2016-09-26 20:35:51 -04:00
lpfc_debugfs.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_debugfs.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_disc.h lpfc: Fix rport leak. 2015-06-05 22:40:19 -07:00
lpfc_els.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_hbadisc.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_hw4.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_hw.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_ids.h lpfc: Re-organize source for easier device-id management 2016-07-15 15:25:06 -04:00
lpfc_init.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_logmsg.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_mbox.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_mem.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_nl.h
lpfc_nportdisc.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_nvme.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_scsi.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_scsi.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_sli4.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_sli.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_sli.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_version.h scsi: lpfc: lpfc version change to 11.2.0.4 2017-01-05 00:21:12 -05:00
lpfc_vport.c scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
lpfc_vport.h [SCSI] lpfc 8.3.39: Fixed VPI allocation issues after firmware dump is performed 2013-05-02 12:37:45 -07:00
lpfc.h scsi: lpfc: NVME Initiator: Base modifications 2017-02-22 18:41:43 -05:00
Makefile