Commit 08adfa75 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: lpfc: Switch to attribute groups

struct device supports attribute groups directly but does not support
struct device_attribute directly. Hence switch to attribute groups.

Link: https://lore.kernel.org/r/20211012233558.4066756-28-bvanassche@acm.orgSigned-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 7eae6af5
...@@ -6394,160 +6394,178 @@ LPFC_ATTR_RW(vmid_priority_tagging, LPFC_VMID_PRIO_TAG_DISABLE, ...@@ -6394,160 +6394,178 @@ LPFC_ATTR_RW(vmid_priority_tagging, LPFC_VMID_PRIO_TAG_DISABLE,
LPFC_VMID_PRIO_TAG_ALL_TARGETS, LPFC_VMID_PRIO_TAG_ALL_TARGETS,
"Enable Priority Tagging VMID support"); "Enable Priority Tagging VMID support");
struct device_attribute *lpfc_hba_attrs[] = { static struct attribute *lpfc_hba_attrs[] = {
&dev_attr_nvme_info, &dev_attr_nvme_info.attr,
&dev_attr_scsi_stat, &dev_attr_scsi_stat.attr,
&dev_attr_bg_info, &dev_attr_bg_info.attr,
&dev_attr_bg_guard_err, &dev_attr_bg_guard_err.attr,
&dev_attr_bg_apptag_err, &dev_attr_bg_apptag_err.attr,
&dev_attr_bg_reftag_err, &dev_attr_bg_reftag_err.attr,
&dev_attr_info, &dev_attr_info.attr,
&dev_attr_serialnum, &dev_attr_serialnum.attr,
&dev_attr_modeldesc, &dev_attr_modeldesc.attr,
&dev_attr_modelname, &dev_attr_modelname.attr,
&dev_attr_programtype, &dev_attr_programtype.attr,
&dev_attr_portnum, &dev_attr_portnum.attr,
&dev_attr_fwrev, &dev_attr_fwrev.attr,
&dev_attr_hdw, &dev_attr_hdw.attr,
&dev_attr_option_rom_version, &dev_attr_option_rom_version.attr,
&dev_attr_link_state, &dev_attr_link_state.attr,
&dev_attr_num_discovered_ports, &dev_attr_num_discovered_ports.attr,
&dev_attr_menlo_mgmt_mode, &dev_attr_menlo_mgmt_mode.attr,
&dev_attr_lpfc_drvr_version, &dev_attr_lpfc_drvr_version.attr,
&dev_attr_lpfc_enable_fip, &dev_attr_lpfc_enable_fip.attr,
&dev_attr_lpfc_temp_sensor, &dev_attr_lpfc_temp_sensor.attr,
&dev_attr_lpfc_log_verbose, &dev_attr_lpfc_log_verbose.attr,
&dev_attr_lpfc_lun_queue_depth, &dev_attr_lpfc_lun_queue_depth.attr,
&dev_attr_lpfc_tgt_queue_depth, &dev_attr_lpfc_tgt_queue_depth.attr,
&dev_attr_lpfc_hba_queue_depth, &dev_attr_lpfc_hba_queue_depth.attr,
&dev_attr_lpfc_peer_port_login, &dev_attr_lpfc_peer_port_login.attr,
&dev_attr_lpfc_nodev_tmo, &dev_attr_lpfc_nodev_tmo.attr,
&dev_attr_lpfc_devloss_tmo, &dev_attr_lpfc_devloss_tmo.attr,
&dev_attr_lpfc_enable_fc4_type, &dev_attr_lpfc_enable_fc4_type.attr,
&dev_attr_lpfc_fcp_class, &dev_attr_lpfc_fcp_class.attr,
&dev_attr_lpfc_use_adisc, &dev_attr_lpfc_use_adisc.attr,
&dev_attr_lpfc_first_burst_size, &dev_attr_lpfc_first_burst_size.attr,
&dev_attr_lpfc_ack0, &dev_attr_lpfc_ack0.attr,
&dev_attr_lpfc_xri_rebalancing, &dev_attr_lpfc_xri_rebalancing.attr,
&dev_attr_lpfc_topology, &dev_attr_lpfc_topology.attr,
&dev_attr_lpfc_scan_down, &dev_attr_lpfc_scan_down.attr,
&dev_attr_lpfc_link_speed, &dev_attr_lpfc_link_speed.attr,
&dev_attr_lpfc_fcp_io_sched, &dev_attr_lpfc_fcp_io_sched.attr,
&dev_attr_lpfc_ns_query, &dev_attr_lpfc_ns_query.attr,
&dev_attr_lpfc_fcp2_no_tgt_reset, &dev_attr_lpfc_fcp2_no_tgt_reset.attr,
&dev_attr_lpfc_cr_delay, &dev_attr_lpfc_cr_delay.attr,
&dev_attr_lpfc_cr_count, &dev_attr_lpfc_cr_count.attr,
&dev_attr_lpfc_multi_ring_support, &dev_attr_lpfc_multi_ring_support.attr,
&dev_attr_lpfc_multi_ring_rctl, &dev_attr_lpfc_multi_ring_rctl.attr,
&dev_attr_lpfc_multi_ring_type, &dev_attr_lpfc_multi_ring_type.attr,
&dev_attr_lpfc_fdmi_on, &dev_attr_lpfc_fdmi_on.attr,
&dev_attr_lpfc_enable_SmartSAN, &dev_attr_lpfc_enable_SmartSAN.attr,
&dev_attr_lpfc_max_luns, &dev_attr_lpfc_max_luns.attr,
&dev_attr_lpfc_enable_npiv, &dev_attr_lpfc_enable_npiv.attr,
&dev_attr_lpfc_fcf_failover_policy, &dev_attr_lpfc_fcf_failover_policy.attr,
&dev_attr_lpfc_enable_rrq, &dev_attr_lpfc_enable_rrq.attr,
&dev_attr_lpfc_fcp_wait_abts_rsp, &dev_attr_lpfc_fcp_wait_abts_rsp.attr,
&dev_attr_nport_evt_cnt, &dev_attr_nport_evt_cnt.attr,
&dev_attr_board_mode, &dev_attr_board_mode.attr,
&dev_attr_max_vpi, &dev_attr_max_vpi.attr,
&dev_attr_used_vpi, &dev_attr_used_vpi.attr,
&dev_attr_max_rpi, &dev_attr_max_rpi.attr,
&dev_attr_used_rpi, &dev_attr_used_rpi.attr,
&dev_attr_max_xri, &dev_attr_max_xri.attr,
&dev_attr_used_xri, &dev_attr_used_xri.attr,
&dev_attr_npiv_info, &dev_attr_npiv_info.attr,
&dev_attr_issue_reset, &dev_attr_issue_reset.attr,
&dev_attr_lpfc_poll, &dev_attr_lpfc_poll.attr,
&dev_attr_lpfc_poll_tmo, &dev_attr_lpfc_poll_tmo.attr,
&dev_attr_lpfc_task_mgmt_tmo, &dev_attr_lpfc_task_mgmt_tmo.attr,
&dev_attr_lpfc_use_msi, &dev_attr_lpfc_use_msi.attr,
&dev_attr_lpfc_nvme_oas, &dev_attr_lpfc_nvme_oas.attr,
&dev_attr_lpfc_nvme_embed_cmd, &dev_attr_lpfc_nvme_embed_cmd.attr,
&dev_attr_lpfc_fcp_imax, &dev_attr_lpfc_fcp_imax.attr,
&dev_attr_lpfc_force_rscn, &dev_attr_lpfc_force_rscn.attr,
&dev_attr_lpfc_cq_poll_threshold, &dev_attr_lpfc_cq_poll_threshold.attr,
&dev_attr_lpfc_cq_max_proc_limit, &dev_attr_lpfc_cq_max_proc_limit.attr,
&dev_attr_lpfc_fcp_cpu_map, &dev_attr_lpfc_fcp_cpu_map.attr,
&dev_attr_lpfc_fcp_mq_threshold, &dev_attr_lpfc_fcp_mq_threshold.attr,
&dev_attr_lpfc_hdw_queue, &dev_attr_lpfc_hdw_queue.attr,
&dev_attr_lpfc_irq_chann, &dev_attr_lpfc_irq_chann.attr,
&dev_attr_lpfc_suppress_rsp, &dev_attr_lpfc_suppress_rsp.attr,
&dev_attr_lpfc_nvmet_mrq, &dev_attr_lpfc_nvmet_mrq.attr,
&dev_attr_lpfc_nvmet_mrq_post, &dev_attr_lpfc_nvmet_mrq_post.attr,
&dev_attr_lpfc_nvme_enable_fb, &dev_attr_lpfc_nvme_enable_fb.attr,
&dev_attr_lpfc_nvmet_fb_size, &dev_attr_lpfc_nvmet_fb_size.attr,
&dev_attr_lpfc_enable_bg, &dev_attr_lpfc_enable_bg.attr,
&dev_attr_lpfc_soft_wwnn, &dev_attr_lpfc_soft_wwnn.attr,
&dev_attr_lpfc_soft_wwpn, &dev_attr_lpfc_soft_wwpn.attr,
&dev_attr_lpfc_soft_wwn_enable, &dev_attr_lpfc_soft_wwn_enable.attr,
&dev_attr_lpfc_enable_hba_reset, &dev_attr_lpfc_enable_hba_reset.attr,
&dev_attr_lpfc_enable_hba_heartbeat, &dev_attr_lpfc_enable_hba_heartbeat.attr,
&dev_attr_lpfc_EnableXLane, &dev_attr_lpfc_EnableXLane.attr,
&dev_attr_lpfc_XLanePriority, &dev_attr_lpfc_XLanePriority.attr,
&dev_attr_lpfc_xlane_lun, &dev_attr_lpfc_xlane_lun.attr,
&dev_attr_lpfc_xlane_tgt, &dev_attr_lpfc_xlane_tgt.attr,
&dev_attr_lpfc_xlane_vpt, &dev_attr_lpfc_xlane_vpt.attr,
&dev_attr_lpfc_xlane_lun_state, &dev_attr_lpfc_xlane_lun_state.attr,
&dev_attr_lpfc_xlane_lun_status, &dev_attr_lpfc_xlane_lun_status.attr,
&dev_attr_lpfc_xlane_priority, &dev_attr_lpfc_xlane_priority.attr,
&dev_attr_lpfc_sg_seg_cnt, &dev_attr_lpfc_sg_seg_cnt.attr,
&dev_attr_lpfc_max_scsicmpl_time, &dev_attr_lpfc_max_scsicmpl_time.attr,
&dev_attr_lpfc_stat_data_ctrl, &dev_attr_lpfc_stat_data_ctrl.attr,
&dev_attr_lpfc_aer_support, &dev_attr_lpfc_aer_support.attr,
&dev_attr_lpfc_aer_state_cleanup, &dev_attr_lpfc_aer_state_cleanup.attr,
&dev_attr_lpfc_sriov_nr_virtfn, &dev_attr_lpfc_sriov_nr_virtfn.attr,
&dev_attr_lpfc_req_fw_upgrade, &dev_attr_lpfc_req_fw_upgrade.attr,
&dev_attr_lpfc_suppress_link_up, &dev_attr_lpfc_suppress_link_up.attr,
&dev_attr_iocb_hw, &dev_attr_iocb_hw.attr,
&dev_attr_pls, &dev_attr_pls.attr,
&dev_attr_pt, &dev_attr_pt.attr,
&dev_attr_txq_hw, &dev_attr_txq_hw.attr,
&dev_attr_txcmplq_hw, &dev_attr_txcmplq_hw.attr,
&dev_attr_lpfc_sriov_hw_max_virtfn, &dev_attr_lpfc_sriov_hw_max_virtfn.attr,
&dev_attr_protocol, &dev_attr_protocol.attr,
&dev_attr_lpfc_xlane_supported, &dev_attr_lpfc_xlane_supported.attr,
&dev_attr_lpfc_enable_mds_diags, &dev_attr_lpfc_enable_mds_diags.attr,
&dev_attr_lpfc_ras_fwlog_buffsize, &dev_attr_lpfc_ras_fwlog_buffsize.attr,
&dev_attr_lpfc_ras_fwlog_level, &dev_attr_lpfc_ras_fwlog_level.attr,
&dev_attr_lpfc_ras_fwlog_func, &dev_attr_lpfc_ras_fwlog_func.attr,
&dev_attr_lpfc_enable_bbcr, &dev_attr_lpfc_enable_bbcr.attr,
&dev_attr_lpfc_enable_dpp, &dev_attr_lpfc_enable_dpp.attr,
&dev_attr_lpfc_enable_mi, &dev_attr_lpfc_enable_mi.attr,
&dev_attr_cmf_info, &dev_attr_cmf_info.attr,
&dev_attr_lpfc_max_vmid, &dev_attr_lpfc_max_vmid.attr,
&dev_attr_lpfc_vmid_inactivity_timeout, &dev_attr_lpfc_vmid_inactivity_timeout.attr,
&dev_attr_lpfc_vmid_app_header, &dev_attr_lpfc_vmid_app_header.attr,
&dev_attr_lpfc_vmid_priority_tagging, &dev_attr_lpfc_vmid_priority_tagging.attr,
NULL, NULL,
}; };
struct device_attribute *lpfc_vport_attrs[] = { static const struct attribute_group lpfc_hba_attr_group = {
&dev_attr_info, .attrs = lpfc_hba_attrs
&dev_attr_link_state, };
&dev_attr_num_discovered_ports,
&dev_attr_lpfc_drvr_version, const struct attribute_group *lpfc_hba_groups[] = {
&dev_attr_lpfc_log_verbose, &lpfc_hba_attr_group,
&dev_attr_lpfc_lun_queue_depth, NULL
&dev_attr_lpfc_tgt_queue_depth, };
&dev_attr_lpfc_nodev_tmo,
&dev_attr_lpfc_devloss_tmo, static struct attribute *lpfc_vport_attrs[] = {
&dev_attr_lpfc_hba_queue_depth, &dev_attr_info.attr,
&dev_attr_lpfc_peer_port_login, &dev_attr_link_state.attr,
&dev_attr_lpfc_restrict_login, &dev_attr_num_discovered_ports.attr,
&dev_attr_lpfc_fcp_class, &dev_attr_lpfc_drvr_version.attr,
&dev_attr_lpfc_use_adisc, &dev_attr_lpfc_log_verbose.attr,
&dev_attr_lpfc_first_burst_size, &dev_attr_lpfc_lun_queue_depth.attr,
&dev_attr_lpfc_max_luns, &dev_attr_lpfc_tgt_queue_depth.attr,
&dev_attr_nport_evt_cnt, &dev_attr_lpfc_nodev_tmo.attr,
&dev_attr_npiv_info, &dev_attr_lpfc_devloss_tmo.attr,
&dev_attr_lpfc_enable_da_id, &dev_attr_lpfc_hba_queue_depth.attr,
&dev_attr_lpfc_max_scsicmpl_time, &dev_attr_lpfc_peer_port_login.attr,
&dev_attr_lpfc_stat_data_ctrl, &dev_attr_lpfc_restrict_login.attr,
&dev_attr_lpfc_static_vport, &dev_attr_lpfc_fcp_class.attr,
&dev_attr_cmf_info, &dev_attr_lpfc_use_adisc.attr,
&dev_attr_lpfc_first_burst_size.attr,
&dev_attr_lpfc_max_luns.attr,
&dev_attr_nport_evt_cnt.attr,
&dev_attr_npiv_info.attr,
&dev_attr_lpfc_enable_da_id.attr,
&dev_attr_lpfc_max_scsicmpl_time.attr,
&dev_attr_lpfc_stat_data_ctrl.attr,
&dev_attr_lpfc_static_vport.attr,
&dev_attr_cmf_info.attr,
NULL, NULL,
}; };
static const struct attribute_group lpfc_vport_attr_group = {
.attrs = lpfc_vport_attrs
};
const struct attribute_group *lpfc_vport_groups[] = {
&lpfc_vport_attr_group,
NULL
};
/** /**
* sysfs_ctlreg_write - Write method for writing to ctlreg * sysfs_ctlreg_write - Write method for writing to ctlreg
* @filp: open sysfs file * @filp: open sysfs file
......
...@@ -428,8 +428,8 @@ void lpfc_get_cfgparam(struct lpfc_hba *); ...@@ -428,8 +428,8 @@ void lpfc_get_cfgparam(struct lpfc_hba *);
void lpfc_get_vport_cfgparam(struct lpfc_vport *); void lpfc_get_vport_cfgparam(struct lpfc_vport *);
int lpfc_alloc_sysfs_attr(struct lpfc_vport *); int lpfc_alloc_sysfs_attr(struct lpfc_vport *);
void lpfc_free_sysfs_attr(struct lpfc_vport *); void lpfc_free_sysfs_attr(struct lpfc_vport *);
extern struct device_attribute *lpfc_hba_attrs[]; extern const struct attribute_group *lpfc_hba_groups[];
extern struct device_attribute *lpfc_vport_attrs[]; extern const struct attribute_group *lpfc_vport_groups[];
extern struct scsi_host_template lpfc_template; extern struct scsi_host_template lpfc_template;
extern struct scsi_host_template lpfc_template_nvme; extern struct scsi_host_template lpfc_template_nvme;
extern struct fc_function_template lpfc_transport_functions; extern struct fc_function_template lpfc_transport_functions;
......
...@@ -4574,7 +4574,7 @@ lpfc_create_port(struct lpfc_hba *phba, int instance, struct device *dev) ...@@ -4574,7 +4574,7 @@ lpfc_create_port(struct lpfc_hba *phba, int instance, struct device *dev)
/* Template for all vports this physical port creates */ /* Template for all vports this physical port creates */
memcpy(&phba->vport_template, &lpfc_template, memcpy(&phba->vport_template, &lpfc_template,
sizeof(*template)); sizeof(*template));
phba->vport_template.shost_attrs = lpfc_vport_attrs; phba->vport_template.shost_groups = lpfc_vport_groups;
phba->vport_template.eh_bus_reset_handler = NULL; phba->vport_template.eh_bus_reset_handler = NULL;
phba->vport_template.eh_host_reset_handler = NULL; phba->vport_template.eh_host_reset_handler = NULL;
phba->vport_template.vendor_id = 0; phba->vport_template.vendor_id = 0;
......
...@@ -7202,7 +7202,7 @@ struct scsi_host_template lpfc_template_nvme = { ...@@ -7202,7 +7202,7 @@ struct scsi_host_template lpfc_template_nvme = {
.this_id = -1, .this_id = -1,
.sg_tablesize = 1, .sg_tablesize = 1,
.cmd_per_lun = 1, .cmd_per_lun = 1,
.shost_attrs = lpfc_hba_attrs, .shost_groups = lpfc_hba_groups,
.max_sectors = 0xFFFFFFFF, .max_sectors = 0xFFFFFFFF,
.vendor_id = LPFC_NL_VENDOR_ID, .vendor_id = LPFC_NL_VENDOR_ID,
.track_queue_depth = 0, .track_queue_depth = 0,
...@@ -7228,7 +7228,7 @@ struct scsi_host_template lpfc_template = { ...@@ -7228,7 +7228,7 @@ struct scsi_host_template lpfc_template = {
.this_id = -1, .this_id = -1,
.sg_tablesize = LPFC_DEFAULT_SG_SEG_CNT, .sg_tablesize = LPFC_DEFAULT_SG_SEG_CNT,
.cmd_per_lun = LPFC_CMD_PER_LUN, .cmd_per_lun = LPFC_CMD_PER_LUN,
.shost_attrs = lpfc_hba_attrs, .shost_groups = lpfc_hba_groups,
.max_sectors = 0xFFFFFFFF, .max_sectors = 0xFFFFFFFF,
.vendor_id = LPFC_NL_VENDOR_ID, .vendor_id = LPFC_NL_VENDOR_ID,
.change_queue_depth = scsi_change_queue_depth, .change_queue_depth = scsi_change_queue_depth,
......
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