Message ID | 20200902072548.11491-11-njavali@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx misc features and bug fixes | expand |
> On Sep 2, 2020, at 2:25 AM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Arun Easi <aeasi@marvell.com> > > This patch adds rport fields in debugfs. > > Signed-off-by: Arun Easi <aeasi@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > drivers/scsi/qla2xxx/qla_dfs.c | 53 ++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/drivers/scsi/qla2xxx/qla_dfs.c b/drivers/scsi/qla2xxx/qla_dfs.c > index 1e9db568aee3..118f2b223531 100644 > --- a/drivers/scsi/qla2xxx/qla_dfs.c > +++ b/drivers/scsi/qla2xxx/qla_dfs.c > @@ -65,13 +65,53 @@ DEFINE_DEBUGFS_ATTRIBUTE(qla_dfs_rport_##_attr##_fops, \ > qla_dfs_rport_##_attr##_get, \ > qla_dfs_rport_##_attr##_set, "%llu\n") > > +/* > + * Wrapper for getting fc_port fields. > + * > + * _attr : Attribute name. > + * _get_val : Accessor macro to retrieve the value. > + */ > +#define DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, _get_val) \ > +static int qla_dfs_rport_field_##_attr##_get(void *data, u64 *val) \ > +{ \ > + struct fc_port *fp = data; \ > + *val = _get_val; \ > + return 0; \ > +} \ > +DEFINE_DEBUGFS_ATTRIBUTE(qla_dfs_rport_field_##_attr##_fops, \ > + qla_dfs_rport_field_##_attr##_get, \ > + NULL, "%llu\n") > + > +#define DEFINE_QLA_DFS_RPORT_ACCESS(_attr, _get_val) \ > + DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, _get_val) > + > +#define DEFINE_QLA_DFS_RPORT_FIELD(_attr) \ > + DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, fp->_attr) > + > DEFINE_QLA_DFS_RPORT_RW_ATTR(QLA_DFS_RPORT_DEVLOSS_TMO, dev_loss_tmo); > > +DEFINE_QLA_DFS_RPORT_FIELD(disc_state); > +DEFINE_QLA_DFS_RPORT_FIELD(scan_state); > +DEFINE_QLA_DFS_RPORT_FIELD(fw_login_state); > +DEFINE_QLA_DFS_RPORT_FIELD(login_pause); > +DEFINE_QLA_DFS_RPORT_FIELD(flags); > +DEFINE_QLA_DFS_RPORT_FIELD(nvme_flag); > +DEFINE_QLA_DFS_RPORT_FIELD(last_rscn_gen); > +DEFINE_QLA_DFS_RPORT_FIELD(rscn_gen); > +DEFINE_QLA_DFS_RPORT_FIELD(login_gen); > +DEFINE_QLA_DFS_RPORT_FIELD(loop_id); > +DEFINE_QLA_DFS_RPORT_FIELD_GET(port_id, fp->d_id.b24); > +DEFINE_QLA_DFS_RPORT_FIELD_GET(sess_kref, kref_read(&fp->sess_kref)); > + > void > qla2x00_dfs_create_rport(scsi_qla_host_t *vha, struct fc_port *fp) > { > char wwn[32]; > > +#define QLA_CREATE_RPORT_FIELD_ATTR(_attr) \ > + debugfs_create_file(#_attr, 0400, fp->dfs_rport_dir, \ > + fp, &qla_dfs_rport_field_##_attr##_fops) > + > if (!vha->dfs_rport_root || fp->dfs_rport_dir) > return; > > @@ -82,6 +122,19 @@ qla2x00_dfs_create_rport(scsi_qla_host_t *vha, struct fc_port *fp) > if (NVME_TARGET(vha->hw, fp)) > debugfs_create_file("dev_loss_tmo", 0600, fp->dfs_rport_dir, > fp, &qla_dfs_rport_dev_loss_tmo_fops); > + > + QLA_CREATE_RPORT_FIELD_ATTR(disc_state); > + QLA_CREATE_RPORT_FIELD_ATTR(scan_state); > + QLA_CREATE_RPORT_FIELD_ATTR(fw_login_state); > + QLA_CREATE_RPORT_FIELD_ATTR(login_pause); > + QLA_CREATE_RPORT_FIELD_ATTR(flags); > + QLA_CREATE_RPORT_FIELD_ATTR(nvme_flag); > + QLA_CREATE_RPORT_FIELD_ATTR(last_rscn_gen); > + QLA_CREATE_RPORT_FIELD_ATTR(rscn_gen); > + QLA_CREATE_RPORT_FIELD_ATTR(login_gen); > + QLA_CREATE_RPORT_FIELD_ATTR(loop_id); > + QLA_CREATE_RPORT_FIELD_ATTR(port_id); > + QLA_CREATE_RPORT_FIELD_ATTR(sess_kref); > } > > void > -- > 2.19.0.rc0 > Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
diff --git a/drivers/scsi/qla2xxx/qla_dfs.c b/drivers/scsi/qla2xxx/qla_dfs.c index 1e9db568aee3..118f2b223531 100644 --- a/drivers/scsi/qla2xxx/qla_dfs.c +++ b/drivers/scsi/qla2xxx/qla_dfs.c @@ -65,13 +65,53 @@ DEFINE_DEBUGFS_ATTRIBUTE(qla_dfs_rport_##_attr##_fops, \ qla_dfs_rport_##_attr##_get, \ qla_dfs_rport_##_attr##_set, "%llu\n") +/* + * Wrapper for getting fc_port fields. + * + * _attr : Attribute name. + * _get_val : Accessor macro to retrieve the value. + */ +#define DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, _get_val) \ +static int qla_dfs_rport_field_##_attr##_get(void *data, u64 *val) \ +{ \ + struct fc_port *fp = data; \ + *val = _get_val; \ + return 0; \ +} \ +DEFINE_DEBUGFS_ATTRIBUTE(qla_dfs_rport_field_##_attr##_fops, \ + qla_dfs_rport_field_##_attr##_get, \ + NULL, "%llu\n") + +#define DEFINE_QLA_DFS_RPORT_ACCESS(_attr, _get_val) \ + DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, _get_val) + +#define DEFINE_QLA_DFS_RPORT_FIELD(_attr) \ + DEFINE_QLA_DFS_RPORT_FIELD_GET(_attr, fp->_attr) + DEFINE_QLA_DFS_RPORT_RW_ATTR(QLA_DFS_RPORT_DEVLOSS_TMO, dev_loss_tmo); +DEFINE_QLA_DFS_RPORT_FIELD(disc_state); +DEFINE_QLA_DFS_RPORT_FIELD(scan_state); +DEFINE_QLA_DFS_RPORT_FIELD(fw_login_state); +DEFINE_QLA_DFS_RPORT_FIELD(login_pause); +DEFINE_QLA_DFS_RPORT_FIELD(flags); +DEFINE_QLA_DFS_RPORT_FIELD(nvme_flag); +DEFINE_QLA_DFS_RPORT_FIELD(last_rscn_gen); +DEFINE_QLA_DFS_RPORT_FIELD(rscn_gen); +DEFINE_QLA_DFS_RPORT_FIELD(login_gen); +DEFINE_QLA_DFS_RPORT_FIELD(loop_id); +DEFINE_QLA_DFS_RPORT_FIELD_GET(port_id, fp->d_id.b24); +DEFINE_QLA_DFS_RPORT_FIELD_GET(sess_kref, kref_read(&fp->sess_kref)); + void qla2x00_dfs_create_rport(scsi_qla_host_t *vha, struct fc_port *fp) { char wwn[32]; +#define QLA_CREATE_RPORT_FIELD_ATTR(_attr) \ + debugfs_create_file(#_attr, 0400, fp->dfs_rport_dir, \ + fp, &qla_dfs_rport_field_##_attr##_fops) + if (!vha->dfs_rport_root || fp->dfs_rport_dir) return; @@ -82,6 +122,19 @@ qla2x00_dfs_create_rport(scsi_qla_host_t *vha, struct fc_port *fp) if (NVME_TARGET(vha->hw, fp)) debugfs_create_file("dev_loss_tmo", 0600, fp->dfs_rport_dir, fp, &qla_dfs_rport_dev_loss_tmo_fops); + + QLA_CREATE_RPORT_FIELD_ATTR(disc_state); + QLA_CREATE_RPORT_FIELD_ATTR(scan_state); + QLA_CREATE_RPORT_FIELD_ATTR(fw_login_state); + QLA_CREATE_RPORT_FIELD_ATTR(login_pause); + QLA_CREATE_RPORT_FIELD_ATTR(flags); + QLA_CREATE_RPORT_FIELD_ATTR(nvme_flag); + QLA_CREATE_RPORT_FIELD_ATTR(last_rscn_gen); + QLA_CREATE_RPORT_FIELD_ATTR(rscn_gen); + QLA_CREATE_RPORT_FIELD_ATTR(login_gen); + QLA_CREATE_RPORT_FIELD_ATTR(loop_id); + QLA_CREATE_RPORT_FIELD_ATTR(port_id); + QLA_CREATE_RPORT_FIELD_ATTR(sess_kref); } void