Message ID | 20151211182543.135984387@linux.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Fri, Dec 11, 2015 at 12:25:33PM -0600, Christoph Lameter wrote: > This is necessary to support the extended attributes which involves > a different attribute id. > > Signed-off-by: Christoph Lameter <cl@linux.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> > --- > drivers/infiniband/core/sysfs.c | 41 ++++++++++++++++++++++------------------- > 1 file changed, 22 insertions(+), 19 deletions(-) > > diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c > index b1f37d4..1c8716f 100644 > --- a/drivers/infiniband/core/sysfs.c > +++ b/drivers/infiniband/core/sysfs.c > @@ -39,6 +39,7 @@ > #include <linux/string.h> > > #include <rdma/ib_mad.h> > +#include <rdma/ib_pma.h> > > struct ib_port { > struct kobject kobj; > @@ -65,6 +66,7 @@ struct port_table_attribute { > struct port_attribute attr; > char name[8]; > int index; > + int attr_id; > }; > > static ssize_t port_attr_show(struct kobject *kobj, > @@ -311,10 +313,11 @@ static ssize_t show_port_pkey(struct ib_port *p, struct port_attribute *attr, > return sprintf(buf, "0x%04x\n", pkey); > } > > -#define PORT_PMA_ATTR(_name, _counter, _width, _offset) \ > +#define PORT_PMA_ATTR(_name, _counter, _width, _offset, _attr_id) \ > struct port_table_attribute port_pma_attr_##_name = { \ > .attr = __ATTR(_name, S_IRUGO, show_pma_counter, NULL), \ > - .index = (_offset) | ((_width) << 16) | ((_counter) << 24) \ > + .index = (_offset) | ((_width) << 16) | ((_counter) << 24), \ > + .attr_id = _attr_id , \ > } > > static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr, > @@ -344,7 +347,7 @@ static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr, > in_mad->mad_hdr.mgmt_class = IB_MGMT_CLASS_PERF_MGMT; > in_mad->mad_hdr.class_version = 1; > in_mad->mad_hdr.method = IB_MGMT_METHOD_GET; > - in_mad->mad_hdr.attr_id = cpu_to_be16(0x12); /* PortCounters */ > + in_mad->mad_hdr.attr_id = tab_attr->attr_id; > > in_mad->data[41] = p->port_num; /* PortSelect field */ > > @@ -386,22 +389,22 @@ out: > return ret; > } > > -static PORT_PMA_ATTR(symbol_error , 0, 16, 32); > -static PORT_PMA_ATTR(link_error_recovery , 1, 8, 48); > -static PORT_PMA_ATTR(link_downed , 2, 8, 56); > -static PORT_PMA_ATTR(port_rcv_errors , 3, 16, 64); > -static PORT_PMA_ATTR(port_rcv_remote_physical_errors, 4, 16, 80); > -static PORT_PMA_ATTR(port_rcv_switch_relay_errors , 5, 16, 96); > -static PORT_PMA_ATTR(port_xmit_discards , 6, 16, 112); > -static PORT_PMA_ATTR(port_xmit_constraint_errors , 7, 8, 128); > -static PORT_PMA_ATTR(port_rcv_constraint_errors , 8, 8, 136); > -static PORT_PMA_ATTR(local_link_integrity_errors , 9, 4, 152); > -static PORT_PMA_ATTR(excessive_buffer_overrun_errors, 10, 4, 156); > -static PORT_PMA_ATTR(VL15_dropped , 11, 16, 176); > -static PORT_PMA_ATTR(port_xmit_data , 12, 32, 192); > -static PORT_PMA_ATTR(port_rcv_data , 13, 32, 224); > -static PORT_PMA_ATTR(port_xmit_packets , 14, 32, 256); > -static PORT_PMA_ATTR(port_rcv_packets , 15, 32, 288); > +static PORT_PMA_ATTR(symbol_error , 0, 16, 32, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(link_error_recovery , 1, 8, 48, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(link_downed , 2, 8, 56, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_errors , 3, 16, 64, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_remote_physical_errors, 4, 16, 80, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_switch_relay_errors , 5, 16, 96, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_xmit_discards , 6, 16, 112, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_xmit_constraint_errors , 7, 8, 128, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_constraint_errors , 8, 8, 136, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(local_link_integrity_errors , 9, 4, 152, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(excessive_buffer_overrun_errors, 10, 4, 156, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(VL15_dropped , 11, 16, 176, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_xmit_data , 12, 32, 192, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_data , 13, 32, 224, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_xmit_packets , 14, 32, 256, IB_PMA_PORT_COUNTERS); > +static PORT_PMA_ATTR(port_rcv_packets , 15, 32, 288, IB_PMA_PORT_COUNTERS); > > static struct attribute *pma_attrs[] = { > &port_pma_attr_symbol_error.attr.attr, > -- > 2.5.0 > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c index b1f37d4..1c8716f 100644 --- a/drivers/infiniband/core/sysfs.c +++ b/drivers/infiniband/core/sysfs.c @@ -39,6 +39,7 @@ #include <linux/string.h> #include <rdma/ib_mad.h> +#include <rdma/ib_pma.h> struct ib_port { struct kobject kobj; @@ -65,6 +66,7 @@ struct port_table_attribute { struct port_attribute attr; char name[8]; int index; + int attr_id; }; static ssize_t port_attr_show(struct kobject *kobj, @@ -311,10 +313,11 @@ static ssize_t show_port_pkey(struct ib_port *p, struct port_attribute *attr, return sprintf(buf, "0x%04x\n", pkey); } -#define PORT_PMA_ATTR(_name, _counter, _width, _offset) \ +#define PORT_PMA_ATTR(_name, _counter, _width, _offset, _attr_id) \ struct port_table_attribute port_pma_attr_##_name = { \ .attr = __ATTR(_name, S_IRUGO, show_pma_counter, NULL), \ - .index = (_offset) | ((_width) << 16) | ((_counter) << 24) \ + .index = (_offset) | ((_width) << 16) | ((_counter) << 24), \ + .attr_id = _attr_id , \ } static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr, @@ -344,7 +347,7 @@ static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr, in_mad->mad_hdr.mgmt_class = IB_MGMT_CLASS_PERF_MGMT; in_mad->mad_hdr.class_version = 1; in_mad->mad_hdr.method = IB_MGMT_METHOD_GET; - in_mad->mad_hdr.attr_id = cpu_to_be16(0x12); /* PortCounters */ + in_mad->mad_hdr.attr_id = tab_attr->attr_id; in_mad->data[41] = p->port_num; /* PortSelect field */ @@ -386,22 +389,22 @@ out: return ret; } -static PORT_PMA_ATTR(symbol_error , 0, 16, 32); -static PORT_PMA_ATTR(link_error_recovery , 1, 8, 48); -static PORT_PMA_ATTR(link_downed , 2, 8, 56); -static PORT_PMA_ATTR(port_rcv_errors , 3, 16, 64); -static PORT_PMA_ATTR(port_rcv_remote_physical_errors, 4, 16, 80); -static PORT_PMA_ATTR(port_rcv_switch_relay_errors , 5, 16, 96); -static PORT_PMA_ATTR(port_xmit_discards , 6, 16, 112); -static PORT_PMA_ATTR(port_xmit_constraint_errors , 7, 8, 128); -static PORT_PMA_ATTR(port_rcv_constraint_errors , 8, 8, 136); -static PORT_PMA_ATTR(local_link_integrity_errors , 9, 4, 152); -static PORT_PMA_ATTR(excessive_buffer_overrun_errors, 10, 4, 156); -static PORT_PMA_ATTR(VL15_dropped , 11, 16, 176); -static PORT_PMA_ATTR(port_xmit_data , 12, 32, 192); -static PORT_PMA_ATTR(port_rcv_data , 13, 32, 224); -static PORT_PMA_ATTR(port_xmit_packets , 14, 32, 256); -static PORT_PMA_ATTR(port_rcv_packets , 15, 32, 288); +static PORT_PMA_ATTR(symbol_error , 0, 16, 32, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(link_error_recovery , 1, 8, 48, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(link_downed , 2, 8, 56, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_errors , 3, 16, 64, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_remote_physical_errors, 4, 16, 80, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_switch_relay_errors , 5, 16, 96, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_xmit_discards , 6, 16, 112, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_xmit_constraint_errors , 7, 8, 128, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_constraint_errors , 8, 8, 136, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(local_link_integrity_errors , 9, 4, 152, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(excessive_buffer_overrun_errors, 10, 4, 156, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(VL15_dropped , 11, 16, 176, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_xmit_data , 12, 32, 192, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_data , 13, 32, 224, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_xmit_packets , 14, 32, 256, IB_PMA_PORT_COUNTERS); +static PORT_PMA_ATTR(port_rcv_packets , 15, 32, 288, IB_PMA_PORT_COUNTERS); static struct attribute *pma_attrs[] = { &port_pma_attr_symbol_error.attr.attr,
This is necessary to support the extended attributes which involves a different attribute id. Signed-off-by: Christoph Lameter <cl@linux.com> --- drivers/infiniband/core/sysfs.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-)