On 12/27/18 12:33 AM, James Smart wrote:
Review of the eq coalescing logic showed the code was a bit
fragmented. Sometimes it would save/set via an interrupt max
value, while in others it would do so via a usdelay. There were
also two places changing eq delay, one place that issued mailbox
commands, and another that changed via register writes if supported.
Clean this up by:
- Standardizing the operation of lpfc_modify_hba_eq_delay() routine so
that it is always told of a us delay to impose. The routine then
chooses the best way to set that - via register or via mbx.
- Rather than two value types stored in eq->q_mode (usdelay if chng
via register, imax if change via mbox) - q_mode always contains
usdelay. Before any value change, old vs new value is compared
and only if different is a change done.
- Revised the dmult calculation. dmult is not set based on overall
imax divided by hardware queues - instead imax applies to a single
cpu and the value will be replicated to all cpus.
Signed-off-by: Dick Kennedy <[email protected]>
Signed-off-by: James Smart <[email protected]>
---
drivers/scsi/lpfc/lpfc_attr.c | 8 ++-
drivers/scsi/lpfc/lpfc_init.c | 9 ++-
drivers/scsi/lpfc/lpfc_sli.c | 126 ++++++++++++++++++++++++------------------
drivers/scsi/lpfc/lpfc_sli4.h | 4 +-
4 files changed, 89 insertions(+), 58 deletions(-)
Reviewed-by: Hannes Reinecke <[email protected]>
Cheers,
Hannes