Commit 526a12c8 authored by Jason Gunthorpe's avatar Jason Gunthorpe

RDMA/cm: Use an attribute_group on the ib_port_attribute intead of kobj's

This code is trying to attach a list of counters grouped into 4 groups to
the ib_port sysfs. Instead of creating a bunch of kobjects simply express
everything naturally as an ib_port_attribute and add a single
attribute_groups list.

Remove all the naked kobject manipulations.

Link: https://lore.kernel.org/r/0d5a7241ee0fe66622de04fcbaafaf6a791d5c7c.1623427137.git.leonro@nvidia.comSigned-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 054239f4
This diff is collapsed.
...@@ -382,10 +382,10 @@ int ib_setup_device_attrs(struct ib_device *ibdev); ...@@ -382,10 +382,10 @@ int ib_setup_device_attrs(struct ib_device *ibdev);
int rdma_compatdev_set(u8 enable); int rdma_compatdev_set(u8 enable);
int ib_port_register_module_stat(struct ib_device *device, u32 port_num, int ib_port_register_client_groups(struct ib_device *ibdev, u32 port_num,
struct kobject *kobj, struct kobj_type *ktype, const struct attribute_group **groups);
const char *name); void ib_port_unregister_client_groups(struct ib_device *ibdev, u32 port_num,
void ib_port_unregister_module_stat(struct kobject *kobj); const struct attribute_group **groups);
int ib_device_set_netns_put(struct sk_buff *skb, int ib_device_set_netns_put(struct sk_buff *skb,
struct ib_device *dev, u32 ns_fd); struct ib_device *dev, u32 ns_fd);
......
...@@ -1448,46 +1448,26 @@ int ib_setup_port_attrs(struct ib_core_device *coredev) ...@@ -1448,46 +1448,26 @@ int ib_setup_port_attrs(struct ib_core_device *coredev)
} }
/** /**
* ib_port_register_module_stat - add module counters under relevant port * ib_port_register_client_groups - Add an ib_client's attributes to the port
* of IB device.
* *
* @device: IB device to add counters * @ibdev: IB device to add counters
* @port_num: valid port number * @port_num: valid port number
* @kobj: pointer to the kobject to initialize * @groups: Group list of attributes
* @ktype: pointer to the ktype for this kobject. *
* @name: the name of the kobject * Do not use. Only for legacy sysfs compatibility.
*/ */
int ib_port_register_module_stat(struct ib_device *device, u32 port_num, int ib_port_register_client_groups(struct ib_device *ibdev, u32 port_num,
struct kobject *kobj, struct kobj_type *ktype, const struct attribute_group **groups)
const char *name)
{ {
struct kobject *p, *t; return sysfs_create_groups(&ibdev->port_data[port_num].sysfs->kobj,
int ret; groups);
list_for_each_entry_safe(p, t, &device->coredev.port_list, entry) {
struct ib_port *port = container_of(p, struct ib_port, kobj);
if (port->port_num != port_num)
continue;
ret = kobject_init_and_add(kobj, ktype, &port->kobj, "%s",
name);
if (ret) {
kobject_put(kobj);
return ret;
}
}
return 0;
} }
EXPORT_SYMBOL(ib_port_register_module_stat); EXPORT_SYMBOL(ib_port_register_client_groups);
/** void ib_port_unregister_client_groups(struct ib_device *ibdev, u32 port_num,
* ib_port_unregister_module_stat - release module counters const struct attribute_group **groups)
* @kobj: pointer to the kobject to release
*/
void ib_port_unregister_module_stat(struct kobject *kobj)
{ {
kobject_put(kobj); return sysfs_remove_groups(&ibdev->port_data[port_num].sysfs->kobj,
groups);
} }
EXPORT_SYMBOL(ib_port_unregister_module_stat); EXPORT_SYMBOL(ib_port_unregister_client_groups);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment