|
@@ -1503,6 +1503,37 @@ qla2x00_fw_dump_size_show(struct device *dev, struct device_attribute *attr,
|
|
|
return scnprintf(buf, PAGE_SIZE, "%d\n", size);
|
|
|
}
|
|
|
|
|
|
+static ssize_t
|
|
|
+qla2x00_allow_cna_fw_dump_show(struct device *dev,
|
|
|
+ struct device_attribute *attr, char *buf)
|
|
|
+{
|
|
|
+ scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
|
|
|
+
|
|
|
+ if (!IS_P3P_TYPE(vha->hw))
|
|
|
+ return scnprintf(buf, PAGE_SIZE, "\n");
|
|
|
+ else
|
|
|
+ return scnprintf(buf, PAGE_SIZE, "%s\n",
|
|
|
+ vha->hw->allow_cna_fw_dump ? "true" : "false");
|
|
|
+}
|
|
|
+
|
|
|
+static ssize_t
|
|
|
+qla2x00_allow_cna_fw_dump_store(struct device *dev,
|
|
|
+ struct device_attribute *attr, const char *buf, size_t count)
|
|
|
+{
|
|
|
+ scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
|
|
|
+ int val = 0;
|
|
|
+
|
|
|
+ if (!IS_P3P_TYPE(vha->hw))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ if (sscanf(buf, "%d", &val) != 1)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ vha->hw->allow_cna_fw_dump = val != 0;
|
|
|
+
|
|
|
+ return strlen(buf);
|
|
|
+}
|
|
|
+
|
|
|
static DEVICE_ATTR(driver_version, S_IRUGO, qla2x00_drvr_version_show, NULL);
|
|
|
static DEVICE_ATTR(fw_version, S_IRUGO, qla2x00_fw_version_show, NULL);
|
|
|
static DEVICE_ATTR(serial_num, S_IRUGO, qla2x00_serial_num_show, NULL);
|
|
@@ -1544,6 +1575,9 @@ static DEVICE_ATTR(thermal_temp, S_IRUGO, qla2x00_thermal_temp_show, NULL);
|
|
|
static DEVICE_ATTR(diag_requests, S_IRUGO, qla2x00_diag_requests_show, NULL);
|
|
|
static DEVICE_ATTR(diag_megabytes, S_IRUGO, qla2x00_diag_megabytes_show, NULL);
|
|
|
static DEVICE_ATTR(fw_dump_size, S_IRUGO, qla2x00_fw_dump_size_show, NULL);
|
|
|
+static DEVICE_ATTR(allow_cna_fw_dump, S_IRUGO | S_IWUSR,
|
|
|
+ qla2x00_allow_cna_fw_dump_show,
|
|
|
+ qla2x00_allow_cna_fw_dump_store);
|
|
|
|
|
|
struct device_attribute *qla2x00_host_attrs[] = {
|
|
|
&dev_attr_driver_version,
|
|
@@ -1576,6 +1610,7 @@ struct device_attribute *qla2x00_host_attrs[] = {
|
|
|
&dev_attr_diag_requests,
|
|
|
&dev_attr_diag_megabytes,
|
|
|
&dev_attr_fw_dump_size,
|
|
|
+ &dev_attr_allow_cna_fw_dump,
|
|
|
NULL,
|
|
|
};
|
|
|
|