IB/mlx4: Set VF to read from QP counters
authorEran Ben Elisha <eranbe@mellanox.com>
Mon, 15 Jun 2015 14:59:04 +0000 (17:59 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Jun 2015 00:23:02 +0000 (17:23 -0700)
As IB VFs are not capable to read the port counters through MADs,
move there to read their own QP counters to gather statistics.

Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/hw/mlx4/mad.c

index 74ca13f897092b56bd26715204ffb46d85b209da..bc698b14683fa1d79a845dcaf053cdb9863cc1d7 100644 (file)
@@ -869,10 +869,12 @@ int mlx4_ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
                        struct ib_wc *in_wc, struct ib_grh *in_grh,
                        struct ib_mad *in_mad, struct ib_mad *out_mad)
 {
+       struct mlx4_ib_dev *dev = to_mdev(ibdev);
        switch (rdma_port_get_link_layer(ibdev, port_num)) {
        case IB_LINK_LAYER_INFINIBAND:
-               return ib_process_mad(ibdev, mad_flags, port_num, in_wc,
-                                     in_grh, in_mad, out_mad);
+               if (!mlx4_is_slave(dev->dev))
+                       return ib_process_mad(ibdev, mad_flags, port_num, in_wc,
+                                             in_grh, in_mad, out_mad);
        case IB_LINK_LAYER_ETHERNET:
                return iboe_process_mad(ibdev, mad_flags, port_num, in_wc,
                                          in_grh, in_mad, out_mad);