Commit 66df386d authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: qla2xxx: Switch to attribute groups

struct device supports attribute groups directly but does not support
struct device_attribute directly. Hence switch to attribute groups.
Additionally, remove qla_insert_tgt_attrs() and replace it with
qla_host_attr_is_visible().

Link: https://lore.kernel.org/r/20211012233558.4066756-41-bvanassche@acm.orgSigned-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent f8f8f857
...@@ -2481,72 +2481,77 @@ static DEVICE_ATTR(port_no, 0444, qla2x00_port_no_show, NULL); ...@@ -2481,72 +2481,77 @@ static DEVICE_ATTR(port_no, 0444, qla2x00_port_no_show, NULL);
static DEVICE_ATTR(fw_attr, 0444, qla2x00_fw_attr_show, NULL); static DEVICE_ATTR(fw_attr, 0444, qla2x00_fw_attr_show, NULL);
static DEVICE_ATTR_RO(edif_doorbell); static DEVICE_ATTR_RO(edif_doorbell);
static struct attribute *qla2x00_host_attrs[] = {
struct device_attribute *qla2x00_host_attrs[] = { &dev_attr_driver_version.attr,
&dev_attr_driver_version, &dev_attr_fw_version.attr,
&dev_attr_fw_version, &dev_attr_serial_num.attr,
&dev_attr_serial_num, &dev_attr_isp_name.attr,
&dev_attr_isp_name, &dev_attr_isp_id.attr,
&dev_attr_isp_id, &dev_attr_model_name.attr,
&dev_attr_model_name, &dev_attr_model_desc.attr,
&dev_attr_model_desc, &dev_attr_pci_info.attr,
&dev_attr_pci_info, &dev_attr_link_state.attr,
&dev_attr_link_state, &dev_attr_zio.attr,
&dev_attr_zio, &dev_attr_zio_timer.attr,
&dev_attr_zio_timer, &dev_attr_beacon.attr,
&dev_attr_beacon, &dev_attr_beacon_config.attr,
&dev_attr_beacon_config, &dev_attr_optrom_bios_version.attr,
&dev_attr_optrom_bios_version, &dev_attr_optrom_efi_version.attr,
&dev_attr_optrom_efi_version, &dev_attr_optrom_fcode_version.attr,
&dev_attr_optrom_fcode_version, &dev_attr_optrom_fw_version.attr,
&dev_attr_optrom_fw_version, &dev_attr_84xx_fw_version.attr,
&dev_attr_84xx_fw_version, &dev_attr_total_isp_aborts.attr,
&dev_attr_total_isp_aborts, &dev_attr_serdes_version.attr,
&dev_attr_serdes_version, &dev_attr_mpi_version.attr,
&dev_attr_mpi_version, &dev_attr_phy_version.attr,
&dev_attr_phy_version, &dev_attr_flash_block_size.attr,
&dev_attr_flash_block_size, &dev_attr_vlan_id.attr,
&dev_attr_vlan_id, &dev_attr_vn_port_mac_address.attr,
&dev_attr_vn_port_mac_address, &dev_attr_fabric_param.attr,
&dev_attr_fabric_param, &dev_attr_fw_state.attr,
&dev_attr_fw_state, &dev_attr_optrom_gold_fw_version.attr,
&dev_attr_optrom_gold_fw_version, &dev_attr_thermal_temp.attr,
&dev_attr_thermal_temp, &dev_attr_diag_requests.attr,
&dev_attr_diag_requests, &dev_attr_diag_megabytes.attr,
&dev_attr_diag_megabytes, &dev_attr_fw_dump_size.attr,
&dev_attr_fw_dump_size, &dev_attr_allow_cna_fw_dump.attr,
&dev_attr_allow_cna_fw_dump, &dev_attr_pep_version.attr,
&dev_attr_pep_version, &dev_attr_min_supported_speed.attr,
&dev_attr_min_supported_speed, &dev_attr_max_supported_speed.attr,
&dev_attr_max_supported_speed, &dev_attr_zio_threshold.attr,
&dev_attr_zio_threshold, &dev_attr_dif_bundle_statistics.attr,
&dev_attr_dif_bundle_statistics, &dev_attr_port_speed.attr,
&dev_attr_port_speed, &dev_attr_port_no.attr,
&dev_attr_port_no, &dev_attr_fw_attr.attr,
&dev_attr_fw_attr, &dev_attr_dport_diagnostics.attr,
&dev_attr_dport_diagnostics, &dev_attr_edif_doorbell.attr,
&dev_attr_edif_doorbell, &dev_attr_mpi_pause.attr,
&dev_attr_mpi_pause, &dev_attr_qlini_mode.attr,
NULL, /* reserve for qlini_mode */ &dev_attr_ql2xiniexchg.attr,
NULL, /* reserve for ql2xiniexchg */ &dev_attr_ql2xexchoffld.attr,
NULL, /* reserve for ql2xexchoffld */
NULL, NULL,
}; };
void qla_insert_tgt_attrs(void) static umode_t qla_host_attr_is_visible(struct kobject *kobj,
struct attribute *attr, int i)
{ {
struct device_attribute **attr; if (ql2x_ini_mode != QLA2XXX_INI_MODE_DUAL &&
(attr == &dev_attr_qlini_mode.attr ||
attr == &dev_attr_ql2xiniexchg.attr ||
attr == &dev_attr_ql2xexchoffld.attr))
return 0;
return attr->mode;
}
/* advance to empty slot */ static const struct attribute_group qla2x00_host_attr_group = {
for (attr = &qla2x00_host_attrs[0]; *attr; ++attr) .is_visible = qla_host_attr_is_visible,
continue; .attrs = qla2x00_host_attrs
};
*attr = &dev_attr_qlini_mode; const struct attribute_group *qla2x00_host_groups[] = {
attr++; &qla2x00_host_attr_group,
*attr = &dev_attr_ql2xiniexchg; NULL
attr++; };
*attr = &dev_attr_ql2xexchoffld;
}
/* Host attributes. */ /* Host attributes. */
......
...@@ -742,7 +742,7 @@ uint qla25xx_fdmi_port_speed_currently(struct qla_hw_data *); ...@@ -742,7 +742,7 @@ uint qla25xx_fdmi_port_speed_currently(struct qla_hw_data *);
* Global Function Prototypes in qla_attr.c source file. * Global Function Prototypes in qla_attr.c source file.
*/ */
struct device_attribute; struct device_attribute;
extern struct device_attribute *qla2x00_host_attrs[]; extern const struct attribute_group *qla2x00_host_groups[];
struct fc_function_template; struct fc_function_template;
extern struct fc_function_template qla2xxx_transport_functions; extern struct fc_function_template qla2xxx_transport_functions;
extern struct fc_function_template qla2xxx_transport_vport_functions; extern struct fc_function_template qla2xxx_transport_vport_functions;
...@@ -756,7 +756,6 @@ extern int qla2x00_echo_test(scsi_qla_host_t *, ...@@ -756,7 +756,6 @@ extern int qla2x00_echo_test(scsi_qla_host_t *,
extern int qla24xx_update_all_fcp_prio(scsi_qla_host_t *); extern int qla24xx_update_all_fcp_prio(scsi_qla_host_t *);
extern int qla24xx_fcp_prio_cfg_valid(scsi_qla_host_t *, extern int qla24xx_fcp_prio_cfg_valid(scsi_qla_host_t *,
struct qla_fcp_prio_cfg *, uint8_t); struct qla_fcp_prio_cfg *, uint8_t);
void qla_insert_tgt_attrs(void);
/* /*
* Global Function Prototypes in qla_dfs.c source file. * Global Function Prototypes in qla_dfs.c source file.
*/ */
......
...@@ -7943,7 +7943,7 @@ struct scsi_host_template qla2xxx_driver_template = { ...@@ -7943,7 +7943,7 @@ struct scsi_host_template qla2xxx_driver_template = {
.sg_tablesize = SG_ALL, .sg_tablesize = SG_ALL,
.max_sectors = 0xFFFF, .max_sectors = 0xFFFF,
.shost_attrs = qla2x00_host_attrs, .shost_groups = qla2x00_host_groups,
.supported_mode = MODE_INITIATOR, .supported_mode = MODE_INITIATOR,
.track_queue_depth = 1, .track_queue_depth = 1,
...@@ -8131,9 +8131,6 @@ qla2x00_module_init(void) ...@@ -8131,9 +8131,6 @@ qla2x00_module_init(void)
if (ql2xextended_error_logging == 1) if (ql2xextended_error_logging == 1)
ql2xextended_error_logging = QL_DBG_DEFAULT1_MASK; ql2xextended_error_logging = QL_DBG_DEFAULT1_MASK;
if (ql2x_ini_mode == QLA2XXX_INI_MODE_DUAL)
qla_insert_tgt_attrs();
qla2xxx_transport_template = qla2xxx_transport_template =
fc_attach_transport(&qla2xxx_transport_functions); fc_attach_transport(&qla2xxx_transport_functions);
if (!qla2xxx_transport_template) { if (!qla2xxx_transport_template) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment