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);
static DEVICE_ATTR(fw_attr, 0444, qla2x00_fw_attr_show, NULL);
static DEVICE_ATTR_RO(edif_doorbell);
struct device_attribute *qla2x00_host_attrs[] = {
&dev_attr_driver_version,
&dev_attr_fw_version,
&dev_attr_serial_num,
&dev_attr_isp_name,
&dev_attr_isp_id,
&dev_attr_model_name,
&dev_attr_model_desc,
&dev_attr_pci_info,
&dev_attr_link_state,
&dev_attr_zio,
&dev_attr_zio_timer,
&dev_attr_beacon,
&dev_attr_beacon_config,
&dev_attr_optrom_bios_version,
&dev_attr_optrom_efi_version,
&dev_attr_optrom_fcode_version,
&dev_attr_optrom_fw_version,
&dev_attr_84xx_fw_version,
&dev_attr_total_isp_aborts,
&dev_attr_serdes_version,
&dev_attr_mpi_version,
&dev_attr_phy_version,
&dev_attr_flash_block_size,
&dev_attr_vlan_id,
&dev_attr_vn_port_mac_address,
&dev_attr_fabric_param,
&dev_attr_fw_state,
&dev_attr_optrom_gold_fw_version,
&dev_attr_thermal_temp,
&dev_attr_diag_requests,
&dev_attr_diag_megabytes,
&dev_attr_fw_dump_size,
&dev_attr_allow_cna_fw_dump,
&dev_attr_pep_version,
&dev_attr_min_supported_speed,
&dev_attr_max_supported_speed,
&dev_attr_zio_threshold,
&dev_attr_dif_bundle_statistics,
&dev_attr_port_speed,
&dev_attr_port_no,
&dev_attr_fw_attr,
&dev_attr_dport_diagnostics,
&dev_attr_edif_doorbell,
&dev_attr_mpi_pause,
NULL, /* reserve for qlini_mode */
NULL, /* reserve for ql2xiniexchg */
NULL, /* reserve for ql2xexchoffld */
static struct attribute *qla2x00_host_attrs[] = {
&dev_attr_driver_version.attr,
&dev_attr_fw_version.attr,
&dev_attr_serial_num.attr,
&dev_attr_isp_name.attr,
&dev_attr_isp_id.attr,
&dev_attr_model_name.attr,
&dev_attr_model_desc.attr,
&dev_attr_pci_info.attr,
&dev_attr_link_state.attr,
&dev_attr_zio.attr,
&dev_attr_zio_timer.attr,
&dev_attr_beacon.attr,
&dev_attr_beacon_config.attr,
&dev_attr_optrom_bios_version.attr,
&dev_attr_optrom_efi_version.attr,
&dev_attr_optrom_fcode_version.attr,
&dev_attr_optrom_fw_version.attr,
&dev_attr_84xx_fw_version.attr,
&dev_attr_total_isp_aborts.attr,
&dev_attr_serdes_version.attr,
&dev_attr_mpi_version.attr,
&dev_attr_phy_version.attr,
&dev_attr_flash_block_size.attr,
&dev_attr_vlan_id.attr,
&dev_attr_vn_port_mac_address.attr,
&dev_attr_fabric_param.attr,
&dev_attr_fw_state.attr,
&dev_attr_optrom_gold_fw_version.attr,
&dev_attr_thermal_temp.attr,
&dev_attr_diag_requests.attr,
&dev_attr_diag_megabytes.attr,
&dev_attr_fw_dump_size.attr,
&dev_attr_allow_cna_fw_dump.attr,
&dev_attr_pep_version.attr,
&dev_attr_min_supported_speed.attr,
&dev_attr_max_supported_speed.attr,
&dev_attr_zio_threshold.attr,
&dev_attr_dif_bundle_statistics.attr,
&dev_attr_port_speed.attr,
&dev_attr_port_no.attr,
&dev_attr_fw_attr.attr,
&dev_attr_dport_diagnostics.attr,
&dev_attr_edif_doorbell.attr,
&dev_attr_mpi_pause.attr,
&dev_attr_qlini_mode.attr,
&dev_attr_ql2xiniexchg.attr,
&dev_attr_ql2xexchoffld.attr,
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 */
for (attr = &qla2x00_host_attrs[0]; *attr; ++attr)
continue;
static const struct attribute_group qla2x00_host_attr_group = {
.is_visible = qla_host_attr_is_visible,
.attrs = qla2x00_host_attrs
};
*attr = &dev_attr_qlini_mode;
attr++;
*attr = &dev_attr_ql2xiniexchg;
attr++;
*attr = &dev_attr_ql2xexchoffld;
}
const struct attribute_group *qla2x00_host_groups[] = {
&qla2x00_host_attr_group,
NULL
};
/* Host attributes. */
......
......@@ -742,7 +742,7 @@ uint qla25xx_fdmi_port_speed_currently(struct qla_hw_data *);
* Global Function Prototypes in qla_attr.c source file.
*/
struct device_attribute;
extern struct device_attribute *qla2x00_host_attrs[];
extern const struct attribute_group *qla2x00_host_groups[];
struct fc_function_template;
extern struct fc_function_template qla2xxx_transport_functions;
extern struct fc_function_template qla2xxx_transport_vport_functions;
......@@ -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_fcp_prio_cfg_valid(scsi_qla_host_t *,
struct qla_fcp_prio_cfg *, uint8_t);
void qla_insert_tgt_attrs(void);
/*
* Global Function Prototypes in qla_dfs.c source file.
*/
......
......@@ -7943,7 +7943,7 @@ struct scsi_host_template qla2xxx_driver_template = {
.sg_tablesize = SG_ALL,
.max_sectors = 0xFFFF,
.shost_attrs = qla2x00_host_attrs,
.shost_groups = qla2x00_host_groups,
.supported_mode = MODE_INITIATOR,
.track_queue_depth = 1,
......@@ -8131,9 +8131,6 @@ qla2x00_module_init(void)
if (ql2xextended_error_logging == 1)
ql2xextended_error_logging = QL_DBG_DEFAULT1_MASK;
if (ql2x_ini_mode == QLA2XXX_INI_MODE_DUAL)
qla_insert_tgt_attrs();
qla2xxx_transport_template =
fc_attach_transport(&qla2xxx_transport_functions);
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