This is necessary to support the extended attributes which involves
a different attribute id.

Signed-off-by: Christoph Lameter <[email protected]>
---
 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to