Merge tag 'v5.13-rc7' into rdma.git for-next
[linux-2.6-microblaze.git] / drivers / infiniband / hw / mlx4 / main.c
index 230a6ae..ae4c91b 100644 (file)
@@ -2099,17 +2099,29 @@ static const struct diag_counter diag_device_only[] = {
        DIAG_COUNTER(rq_num_udsdprd, 0x118),
 };
 
-static struct rdma_hw_stats *mlx4_ib_alloc_hw_stats(struct ib_device *ibdev,
-                                                   u32 port_num)
+static struct rdma_hw_stats *
+mlx4_ib_alloc_hw_device_stats(struct ib_device *ibdev)
 {
        struct mlx4_ib_dev *dev = to_mdev(ibdev);
        struct mlx4_ib_diag_counters *diag = dev->diag_counters;
 
-       if (!diag[!!port_num].name)
+       if (!diag[0].name)
                return NULL;
 
-       return rdma_alloc_hw_stats_struct(diag[!!port_num].name,
-                                         diag[!!port_num].num_counters,
+       return rdma_alloc_hw_stats_struct(diag[0].name, diag[0].num_counters,
+                                         RDMA_HW_STATS_DEFAULT_LIFESPAN);
+}
+
+static struct rdma_hw_stats *
+mlx4_ib_alloc_hw_port_stats(struct ib_device *ibdev, u32 port_num)
+{
+       struct mlx4_ib_dev *dev = to_mdev(ibdev);
+       struct mlx4_ib_diag_counters *diag = dev->diag_counters;
+
+       if (!diag[1].name)
+               return NULL;
+
+       return rdma_alloc_hw_stats_struct(diag[1].name, diag[1].num_counters,
                                          RDMA_HW_STATS_DEFAULT_LIFESPAN);
 }
 
@@ -2200,7 +2212,8 @@ static void mlx4_ib_fill_diag_counters(struct mlx4_ib_dev *ibdev,
 }
 
 static const struct ib_device_ops mlx4_ib_hw_stats_ops = {
-       .alloc_hw_stats = mlx4_ib_alloc_hw_stats,
+       .alloc_hw_device_stats = mlx4_ib_alloc_hw_device_stats,
+       .alloc_hw_port_stats = mlx4_ib_alloc_hw_port_stats,
        .get_hw_stats = mlx4_ib_get_hw_stats,
 };
 
@@ -2528,6 +2541,7 @@ static const struct ib_device_ops mlx4_ib_dev_ops = {
        .destroy_qp = mlx4_ib_destroy_qp,
        .destroy_srq = mlx4_ib_destroy_srq,
        .detach_mcast = mlx4_ib_mcg_detach,
+       .device_group = &mlx4_attr_group,
        .disassociate_ucontext = mlx4_ib_disassociate_ucontext,
        .drain_rq = mlx4_ib_drain_rq,
        .drain_sq = mlx4_ib_drain_sq,
@@ -2787,7 +2801,6 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
        if (mlx4_ib_alloc_diag_counters(ibdev))
                goto err_steer_free_bitmap;
 
-       rdma_set_device_sysfs_group(&ibdev->ib_dev, &mlx4_attr_group);
        if (ib_register_device(&ibdev->ib_dev, "mlx4_%d",
                               &dev->persist->pdev->dev))
                goto err_diag_counters;