Commit 2c9c5a00 authored by James Smart's avatar James Smart Committed by James Bottomley
Browse files

lpfc: Fix setting of EQ (interrupt) delay Multiplier

parent ea4142f6
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -7721,6 +7721,14 @@ lpfc_sli4_queue_setup(struct lpfc_hba *phba)
			goto out_destroy_els_rq;
		}
	}

	/*
	 * Configure EQ delay multipier for interrupt coalescing using
	 * MODIFY_EQ_DELAY for all EQs created, LPFC_MAX_EQ_DELAY at a time.
	 */
	for (fcp_eqidx = 0; fcp_eqidx < phba->cfg_fcp_io_channel;
			fcp_eqidx += LPFC_MAX_EQ_DELAY)
		lpfc_modify_fcp_eq_delay(phba, fcp_eqidx);
	return 0;

out_destroy_els_rq:
+3 −6
Original line number Diff line number Diff line
@@ -12842,7 +12842,7 @@ lpfc_dual_chute_pci_bar_map(struct lpfc_hba *phba, uint16_t pci_barset)
 * fails this function will return -ENXIO.
 **/
int
lpfc_modify_fcp_eq_delay(struct lpfc_hba *phba, uint16_t startq)
lpfc_modify_fcp_eq_delay(struct lpfc_hba *phba, uint32_t startq)
{
	struct lpfc_mbx_modify_eq_delay *eq_delay;
	LPFC_MBOXQ_t *mbox;
@@ -12959,11 +12959,8 @@ lpfc_eq_create(struct lpfc_hba *phba, struct lpfc_queue *eq, uint32_t imax)
	bf_set(lpfc_eq_context_size, &eq_create->u.request.context,
	       LPFC_EQE_SIZE);
	bf_set(lpfc_eq_context_valid, &eq_create->u.request.context, 1);
	/* Calculate delay multiper from maximum interrupt per second */
	if (imax > LPFC_DMULT_CONST)
	/* don't setup delay multiplier using EQ_CREATE */
	dmult = 0;
	else
		dmult = LPFC_DMULT_CONST/imax - 1;
	bf_set(lpfc_eq_context_delay_multi, &eq_create->u.request.context,
	       dmult);
	switch (eq->entry_count) {
+1 −1
Original line number Diff line number Diff line
@@ -671,7 +671,7 @@ struct lpfc_queue *lpfc_sli4_queue_alloc(struct lpfc_hba *, uint32_t,
			uint32_t);
void lpfc_sli4_queue_free(struct lpfc_queue *);
int lpfc_eq_create(struct lpfc_hba *, struct lpfc_queue *, uint32_t);
int lpfc_modify_fcp_eq_delay(struct lpfc_hba *, uint16_t);
int lpfc_modify_fcp_eq_delay(struct lpfc_hba *, uint32_t);
int lpfc_cq_create(struct lpfc_hba *, struct lpfc_queue *,
			struct lpfc_queue *, uint32_t, uint32_t);
int32_t lpfc_mq_create(struct lpfc_hba *, struct lpfc_queue *,