OSDN Git Service

scsi: lpfc: vmid: VMID parameter initialization
authorGaurav Srivastava <gaurav.srivastava@broadcom.com>
Tue, 8 Jun 2021 04:35:48 +0000 (10:05 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 10 Jun 2021 14:01:32 +0000 (10:01 -0400)
Initialize parameters such as type of VMID, max number of VMIDs supported
and timeout value for the VMID registration based on the user input.

Link: https://lore.kernel.org/r/20210608043556.274139-6-muneendra.kumar@broadcom.com
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Gaurav Srivastava <gaurav.srivastava@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Muneendra Kumar <muneendra.kumar@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_attr.c

index c5e96cb..eb88aaa 100644 (file)
@@ -6162,6 +6162,45 @@ LPFC_ATTR_RW(enable_dpp, 1, 0, 1, "Enable Direct Packet Push");
  */
 LPFC_ATTR_R(enable_mi, 1, 0, 1, "Enable MI");
 
+/*
+ * lpfc_max_vmid: Maximum number of VMs to be tagged. This is valid only if
+ * either vmid_app_header or vmid_priority_tagging is enabled.
+ *       4 - 255  = vmid support enabled for 4-255 VMs
+ *       Value range is [4,255].
+ */
+LPFC_ATTR_RW(max_vmid, LPFC_MIN_VMID, LPFC_MIN_VMID, LPFC_MAX_VMID,
+            "Maximum number of VMs supported");
+
+/*
+ * lpfc_vmid_inactivity_timeout: Inactivity timeout duration in hours
+ *       0  = Timeout is disabled
+ * Value range is [0,24].
+ */
+LPFC_ATTR_RW(vmid_inactivity_timeout, 4, 0, 24,
+            "Inactivity timeout in hours");
+
+/*
+ * lpfc_vmid_app_header: Enable App Header VMID support
+ *       0  = Support is disabled (default)
+ *       1  = Support is enabled
+ * Value range is [0,1].
+ */
+LPFC_ATTR_RW(vmid_app_header, LPFC_VMID_APP_HEADER_DISABLE,
+            LPFC_VMID_APP_HEADER_DISABLE, LPFC_VMID_APP_HEADER_ENABLE,
+            "Enable App Header VMID support");
+
+/*
+ * lpfc_vmid_priority_tagging: Enable Priority Tagging VMID support
+ *       0  = Support is disabled (default)
+ *       1  = Allow supported targets only
+ *       2  = Allow all targets
+ * Value range is [0,2].
+ */
+LPFC_ATTR_RW(vmid_priority_tagging, LPFC_VMID_PRIO_TAG_DISABLE,
+            LPFC_VMID_PRIO_TAG_DISABLE,
+            LPFC_VMID_PRIO_TAG_ALL_TARGETS,
+            "Enable Priority Tagging VMID support");
+
 struct device_attribute *lpfc_hba_attrs[] = {
        &dev_attr_nvme_info,
        &dev_attr_scsi_stat,
@@ -6281,6 +6320,10 @@ struct device_attribute *lpfc_hba_attrs[] = {
        &dev_attr_lpfc_enable_bbcr,
        &dev_attr_lpfc_enable_dpp,
        &dev_attr_lpfc_enable_mi,
+       &dev_attr_lpfc_max_vmid,
+       &dev_attr_lpfc_vmid_inactivity_timeout,
+       &dev_attr_lpfc_vmid_app_header,
+       &dev_attr_lpfc_vmid_priority_tagging,
        NULL,
 };
 
@@ -7357,6 +7400,11 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
        lpfc_enable_hba_heartbeat_init(phba, lpfc_enable_hba_heartbeat);
 
        lpfc_EnableXLane_init(phba, lpfc_EnableXLane);
+       /* VMID Inits */
+       lpfc_max_vmid_init(phba, lpfc_max_vmid);
+       lpfc_vmid_inactivity_timeout_init(phba, lpfc_vmid_inactivity_timeout);
+       lpfc_vmid_app_header_init(phba, lpfc_vmid_app_header);
+       lpfc_vmid_priority_tagging_init(phba, lpfc_vmid_priority_tagging);
        if (phba->sli_rev != LPFC_SLI_REV4)
                phba->cfg_EnableXLane = 0;
        lpfc_XLanePriority_init(phba, lpfc_XLanePriority);