diff options
-rw-r--r-- | drivers/infiniband/core/core_priv.h | 3 | ||||
-rw-r--r-- | drivers/infiniband/core/device.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/core/sysfs.c | 16 |
3 files changed, 10 insertions, 11 deletions
diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h index 2764647056d8..ff40a450b5d2 100644 --- a/drivers/infiniband/core/core_priv.h +++ b/drivers/infiniband/core/core_priv.h @@ -341,8 +341,7 @@ int roce_resolve_route_from_path(struct sa_path_rec *rec, struct net_device *rdma_read_gid_attr_ndev_rcu(const struct ib_gid_attr *attr); void ib_free_port_attrs(struct ib_core_device *coredev); -int ib_setup_port_attrs(struct ib_core_device *coredev, - bool alloc_hw_stats); +int ib_setup_port_attrs(struct ib_core_device *coredev); int rdma_compatdev_set(u8 enable); diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c index 76088655f06e..2123cc693a29 100644 --- a/drivers/infiniband/core/device.c +++ b/drivers/infiniband/core/device.c @@ -870,7 +870,7 @@ static int add_one_compat_dev(struct ib_device *device, ret = device_add(&cdev->dev); if (ret) goto add_err; - ret = ib_setup_port_attrs(cdev, false); + ret = ib_setup_port_attrs(cdev); if (ret) goto port_err; diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c index 2fe89754e592..7a599c5e455f 100644 --- a/drivers/infiniband/core/sysfs.c +++ b/drivers/infiniband/core/sysfs.c @@ -1015,10 +1015,10 @@ err_free_stats: return; } -static int add_port(struct ib_core_device *coredev, - int port_num, bool alloc_stats) +static int add_port(struct ib_core_device *coredev, int port_num) { struct ib_device *device = rdma_device_to_ibdev(&coredev->dev); + bool is_full_dev = &device->coredev == coredev; struct ib_port *p; struct ib_port_attr attr; int i; @@ -1057,7 +1057,7 @@ static int add_port(struct ib_core_device *coredev, goto err_put; } - if (device->ops.process_mad && alloc_stats) { + if (device->ops.process_mad && is_full_dev) { p->pma_table = get_counter_table(device, port_num); ret = sysfs_create_group(&p->kobj, p->pma_table); if (ret) @@ -1113,7 +1113,7 @@ static int add_port(struct ib_core_device *coredev, if (ret) goto err_free_pkey; - if (device->ops.init_port) { + if (device->ops.init_port && is_full_dev) { ret = device->ops.init_port(device, port_num, &p->kobj); if (ret) goto err_remove_pkey; @@ -1124,7 +1124,7 @@ static int add_port(struct ib_core_device *coredev, * port, so holder should be device. Therefore skip per port conunter * initialization. */ - if (device->ops.alloc_hw_stats && port_num && alloc_stats) + if (device->ops.alloc_hw_stats && port_num && is_full_dev) setup_hw_stats(device, p, port_num); list_add_tail(&p->kobj.entry, &coredev->port_list); @@ -1308,7 +1308,7 @@ void ib_free_port_attrs(struct ib_core_device *coredev) kobject_put(coredev->ports_kobj); } -int ib_setup_port_attrs(struct ib_core_device *coredev, bool alloc_stats) +int ib_setup_port_attrs(struct ib_core_device *coredev) { struct ib_device *device = rdma_device_to_ibdev(&coredev->dev); unsigned int port; @@ -1320,7 +1320,7 @@ int ib_setup_port_attrs(struct ib_core_device *coredev, bool alloc_stats) return -ENOMEM; rdma_for_each_port (device, port) { - ret = add_port(coredev, port, alloc_stats); + ret = add_port(coredev, port); if (ret) goto err_put; } @@ -1336,7 +1336,7 @@ int ib_device_register_sysfs(struct ib_device *device) { int ret; - ret = ib_setup_port_attrs(&device->coredev, true); + ret = ib_setup_port_attrs(&device->coredev); if (ret) return ret; |