RDMA: Add NLDEV_GET_CHARDEV to allow char dev discovery and autoload
Allow userspace to issue a netlink query against the ib_device for something like "uverbs" and get back the char dev name, inode major/minor, and interface ABI information for "uverbs0". Since we are now in netlink this can also trigger a module autoload to make the uverbs device come into existence. Largely this will let us replace searching and reading inside sysfs to setup devices, and provides an alternative (using driver_id) to device name based provider binding for things like rxe. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
此提交包含在:
@@ -2684,10 +2684,14 @@ struct ib_device {
|
||||
u32 iw_driver_flags;
|
||||
};
|
||||
|
||||
struct ib_client_nl_info;
|
||||
struct ib_client {
|
||||
const char *name;
|
||||
void (*add) (struct ib_device *);
|
||||
void (*remove)(struct ib_device *, void *client_data);
|
||||
int (*get_nl_info)(struct ib_device *ibdev, void *client_data,
|
||||
struct ib_client_nl_info *res);
|
||||
int (*get_global_nl_info)(struct ib_client_nl_info *res);
|
||||
|
||||
/* Returns the net_dev belonging to this ib_client and matching the
|
||||
* given parameters.
|
||||
|
@@ -110,4 +110,6 @@ void rdma_link_register(struct rdma_link_ops *ops);
|
||||
void rdma_link_unregister(struct rdma_link_ops *ops);
|
||||
|
||||
#define MODULE_ALIAS_RDMA_LINK(type) MODULE_ALIAS("rdma-link-" type)
|
||||
#define MODULE_ALIAS_RDMA_CLIENT(type) MODULE_ALIAS("rdma-client-" type)
|
||||
|
||||
#endif /* _RDMA_NETLINK_H */
|
||||
|
新增問題並參考
封鎖使用者