Skip to content

Commit

Permalink
RDMA/core: Allow existing drivers to set one sysfs group per device
Browse files Browse the repository at this point in the history
Currently many rdma drivers are creating device attribute files using
device_create_file() with device specific attributes.  Device specific
attributes should be exposed via well defined netlink device attributes in
future.

Introduce an API rdma_set_device_sysfs_group() for existing drivers to set
a group for sysfs attributes for legacy.

This API is only for exposing legacy attributes which existed for sometime
now.  New drivers should not be using this API and rather follow netlink
path.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Parav Pandit authored and Jason Gunthorpe committed Oct 17, 2018
1 parent 0797e6f commit d4122f5
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions include/rdma/ib_verbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -2539,8 +2539,11 @@ struct ib_device {

struct module *owner;
struct device dev;
/* First group for device attributes, NULL terminated array */
const struct attribute_group *groups[2];
/* First group for device attributes,
* Second group for driver provided attributes (optional).
* It is NULL terminated array.
*/
const struct attribute_group *groups[3];

struct kobject *ports_kobj;
struct list_head port_list;
Expand Down Expand Up @@ -4191,4 +4194,27 @@ struct ib_ucontext *ib_uverbs_get_ucontext(struct ib_uverbs_file *ufile);

int uverbs_destroy_def_handler(struct ib_uverbs_file *file,
struct uverbs_attr_bundle *attrs);

/**
* rdma_set_device_sysfs_group - Set device attributes group to have
* driver specific sysfs entries at
* for infiniband class.
*
* @device: device pointer for which attributes to be created
* @group: Pointer to group which should be added when device
* is registered with sysfs.
* rdma_set_device_sysfs_group() allows existing drivers to expose one
* group per device to have sysfs attributes.
*
* NOTE: New drivers should not make use of this API; instead new device
* parameter should be exposed via netlink command. This API and mechanism
* exist only for existing drivers.
*/
static inline void
rdma_set_device_sysfs_group(struct ib_device *dev,
const struct attribute_group *group)
{
dev->groups[1] = group;
}

#endif /* IB_VERBS_H */

0 comments on commit d4122f5

Please sign in to comment.