linux/drivers/scsi/lpfc
James Smart 8156d378c4 scsi: lpfc: Revise interrupt coalescing for missing scenarios
The existing "auto eq delay" mechanism was sometimes skipping over an EQ,
not ramping the coalescing down under light load fast enough, and in other
cases never kicked in as cpu sharing by multiple vectors didn't quite add
up right.

Tweak the interrupt mechanism such that:

 - Add a flag to the EQ to force checking for colaescing values when being
   serviced in the interrupt handler.  The flag will be set by any CQ bound
   to the EQ whenever the number of CQ elements process in a single scan
   meets or exceeds the hardware queue notify level. E.g. there's a
   significant number of completions happening.

 - In the heartbeat work item that checks coalescing:

   - Replace the structure that was counting the number of EQs that
     interrupted on a single cpu with a new structure that looks at the EQ
     to see whether EQ currently has a coalescing value (thus it should be
     re-evaluate) or was marked by the new flag indicating heavy
     completions.

   - When a cpu, which may be servicing multiple vectors, had at least 1 EQ
     that should be checked, a new coalescing delay is calculated based on
     the number of interrupts that occurred on the cpu.

   - The new coalescing value is then applied to the EQs that had
     interrupted on the cpu.

Link: https://lore.kernel.org/r/20191018211832.7917-11-jsmart2021@gmail.com
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-10-24 21:02:05 -04:00
..
lpfc_attr.c scsi: lpfc: fix lpfc_nvmet_mrq to be bound by hdw queue count 2019-10-24 21:02:04 -04:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c scsi: lpfc: Migrate to %px and %pf in kernel print calls 2019-08-19 22:41:11 -04:00
lpfc_bsg.h scsi: lpfc: Update Copyright in driver version 2019-03-19 13:15:10 -04:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: Fix NVMe ABTS in response to receiving an ABTS 2019-09-30 22:07:10 -04:00
lpfc_ct.c scsi: lpfc: Fix list corruption in lpfc_sli_get_iocbq 2019-09-30 22:07:10 -04:00
lpfc_debugfs.c scsi: lpfc: Remove bg debugfs buffers 2019-08-29 18:08:58 -04:00
lpfc_debugfs.h scsi: lpfc: Merge per-protocol WQ/CQ pairs into single per-cpu pair 2019-08-19 22:41:12 -04:00
lpfc_disc.h scsi: lpfc: Add NVMe sequence level error recovery support 2019-08-19 22:41:12 -04:00
lpfc_els.c scsi: lpfc: fix coverity error of dereference after null check 2019-10-24 21:02:05 -04:00
lpfc_hbadisc.c scsi: lpfc: Fix list corruption in lpfc_sli_get_iocbq 2019-09-30 22:07:10 -04:00
lpfc_hw4.h scsi: lpfc: Revise interrupt coalescing for missing scenarios 2019-10-24 21:02:05 -04:00
lpfc_hw.h scsi: lpfc: Fix ELS field alignments 2019-08-19 22:41:08 -04:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c scsi: lpfc: Revise interrupt coalescing for missing scenarios 2019-10-24 21:02:05 -04:00
lpfc_logmsg.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_mbox.c SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_mem.c scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Fix SLI3 hba in loop mode not discovering devices 2019-10-24 21:02:04 -04:00
lpfc_nvme.c scsi: lpfc: Slight fast-path performance optimizations 2019-10-24 21:02:05 -04:00
lpfc_nvme.h SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_nvmet.c scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_nvmet.h scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
lpfc_scsi.c scsi: lpfc: Slight fast-path performance optimizations 2019-10-24 21:02:05 -04:00
lpfc_scsi.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli4.h scsi: lpfc: Revise interrupt coalescing for missing scenarios 2019-10-24 21:02:05 -04:00
lpfc_sli.c scsi: lpfc: Revise interrupt coalescing for missing scenarios 2019-10-24 21:02:05 -04:00
lpfc_sli.h scsi: lpfc: Fix bad ndlp ptr in xri aborted handling 2019-10-24 21:02:04 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.4.0.1 2019-09-30 22:07:11 -04:00
lpfc_vport.c scsi: lpfc: Fix issuing init_vpi mbox on SLI-3 card 2019-08-19 22:41:09 -04:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Remove lock contention target write path 2019-10-24 21:02:05 -04:00
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00