Thread (32 messages) flat view 32 messages, 4 authors, 2021-01-15

Re: [PATCH v4 01/21] ibmvfc: add vhost fields and defaults for MQ enablement

From: John Garry <hidden>
Date: 2021-01-12 11:45:31
Also in: linux-scsi, lkml

On 11/01/2021 23:12, Tyrel Datwyler wrote:
quoted hunk ↗ jump to hunk
Introduce several new vhost fields for managing MQ state of the adapter
as well as initial defaults for MQ enablement.

Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
---
  drivers/scsi/ibmvscsi/ibmvfc.c | 8 ++++++++
  drivers/scsi/ibmvscsi/ibmvfc.h | 9 +++++++++
  2 files changed, 17 insertions(+)
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
index ba95438a8912..9200fe49c57e 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
@@ -3302,6 +3302,7 @@ static struct scsi_host_template driver_template = {
  	.max_sectors = IBMVFC_MAX_SECTORS,
  	.shost_attrs = ibmvfc_attrs,
  	.track_queue_depth = 1,
+	.host_tagset = 1,
Good to see another user :)

I didn't check the whole series very thoroughly, but I guess that you 
only need to set this when shost->nr_hw_queues > 1. Having said that, it 
should be fine when shost->nr_hw_queues = 0 or 1.

Thanks,
John
quoted hunk ↗ jump to hunk
  };
  
  /**
@@ -5290,6 +5291,7 @@ static int ibmvfc_probe(struct vio_dev *vdev, const struct vio_device_id *id)
  	shost->max_sectors = IBMVFC_MAX_SECTORS;
  	shost->max_cmd_len = IBMVFC_MAX_CDB_LEN;
  	shost->unique_id = shost->host_no;
+	shost->nr_hw_queues = IBMVFC_MQ ? IBMVFC_SCSI_HW_QUEUES : 1;
  
  	vhost = shost_priv(shost);
  	INIT_LIST_HEAD(&vhost->targets);
@@ -5300,6 +5302,12 @@ static int ibmvfc_probe(struct vio_dev *vdev, const struct vio_device_id *id)
  	vhost->partition_number = -1;
  	vhost->log_level = log_level;
  	vhost->task_set = 1;
+
+	vhost->mq_enabled = IBMVFC_MQ;
+	vhost->client_scsi_channels = IBMVFC_SCSI_CHANNELS;
+	vhost->using_channels = 0;
+	vhost->do_enquiry = 1;
+
  	strcpy(vhost->partition_name, "UNKNOWN");
  	init_waitqueue_head(&vhost->work_wait_q);
  	init_waitqueue_head(&vhost->init_wait_q);
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h
index 632e977449c5..dd6d89292867 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.h
+++ b/drivers/scsi/ibmvscsi/ibmvfc.h
@@ -41,6 +41,11 @@
  #define IBMVFC_DEFAULT_LOG_LEVEL	2
  #define IBMVFC_MAX_CDB_LEN		16
  #define IBMVFC_CLS3_ERROR		0
+#define IBMVFC_MQ			0
+#define IBMVFC_SCSI_CHANNELS		0
+#define IBMVFC_SCSI_HW_QUEUES		1
+#define IBMVFC_MIG_NO_SUB_TO_CRQ	0
+#define IBMVFC_MIG_NO_N_TO_M		0
  
  /*
   * Ensure we have resources for ERP and initialization:
@@ -840,6 +845,10 @@ struct ibmvfc_host {
  	int delay_init;
  	int scan_complete;
  	int logged_in;
+	int mq_enabled;
+	int using_channels;
+	int do_enquiry;
+	int client_scsi_channels;
  	int aborting_passthru;
  	int events_to_log;
  #define IBMVFC_AE_LINKUP	0x0001
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help