On 12/27/18 12:33 AM, James Smart wrote:
Currently, both nvme and fcp each have their own concept of an
io_channels, which a combination wq/cq and associated msix.
Different cpus would share an io_channel.
The driver is now moving to per-cpu wq/cq pairs and msix vectors.
The driver will still use separate wq/cq pairs per protocol on each
cpu, but the protocols will share the msix vector.
Given the elimination of the nvme and fcp io channels, the module
parameters will be removed. A new parameter, lpfc_hdw_queue is
added which allows the wq/cq pair allocation per cpu to be overridden
and allocated to lesser value. If lpfc_hdw_queue is zero, the number
of pairs allocated will be based on the number of cpus. If non-zero,
the parameter specifies the number of queues to allocate. At this
time, the maximum non-zero value is 64.
To manage this new paradigm, a new hardware queue structure is
created to track queue activity and relationships.
As MSIX vector allocation must be known before setting up the
relationships, msix allocation now occurs before queue datastructures
are allocated. If the number of vectors allocated is less than the
desired hardware queues, the hardware queue counts will be reduced to
the number of vectors
Signed-off-by: Dick Kennedy <dick.kennedy@xxxxxxxxxxxx>
Signed-off-by: James Smart <jsmart2021@xxxxxxxxx>
---
drivers/scsi/lpfc/lpfc.h | 4 +-
drivers/scsi/lpfc/lpfc_attr.c | 84 ++-----
drivers/scsi/lpfc/lpfc_debugfs.c | 152 ++++++------
drivers/scsi/lpfc/lpfc_debugfs.h | 65 +++---
drivers/scsi/lpfc/lpfc_init.c | 489 ++++++++++++++-------------------------
drivers/scsi/lpfc/lpfc_nvme.c | 16 +-
drivers/scsi/lpfc/lpfc_nvmet.c | 10 +-
drivers/scsi/lpfc/lpfc_scsi.c | 8 +-
drivers/scsi/lpfc/lpfc_sli.c | 159 ++++++-------
drivers/scsi/lpfc/lpfc_sli4.h | 39 ++--
10 files changed, 417 insertions(+), 609 deletions(-)
[ .. ]
@@ -634,10 +636,7 @@ struct lpfc_sli4_hba {
uint32_t ulp0_mode; /* ULP0 protocol mode */
uint32_t ulp1_mode; /* ULP1 protocol mode */
- struct lpfc_queue *fof_eq; /* Flash Optimized Fabric Event queue */
-
/* Optimized Access Storage specific queues/structures */
-
uint64_t oas_next_lun;
uint8_t oas_next_tgt_wwpn[8];
uint8_t oas_next_vpt_wwpn[8];
That should rather be in the previous patch, no?
@@ -820,7 +819,7 @@ int lpfc_modify_hba_eq_delay(struct lpfc_hba *phba, uint32_t startq,
int lpfc_cq_create(struct lpfc_hba *, struct lpfc_queue *,
struct lpfc_queue *, uint32_t, uint32_t);
int lpfc_cq_create_set(struct lpfc_hba *phba, struct lpfc_queue **cqp,
- struct lpfc_queue **eqp, uint32_t type,
+ struct lpfc_sli4_hdw_queue *hdwq, uint32_t type,
uint32_t subtype);
int32_t lpfc_mq_create(struct lpfc_hba *, struct lpfc_queue *,
struct lpfc_queue *, uint32_t);
Otherwise:
Reviewed-by: Hannes Reinecke <hare@xxxxxxxx>
Cheers,
Hannes