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.
Showing the changes to include/uapi (1 of 6 files). Show all
Unified · Split
| @@ -279,6 +279,8 @@ enum rdma_nldev_command { · 278 unmodified lines | ||
| 279 | 279 | |
| 280 | 280 | RDMA_NLDEV_CMD_RES_PD_GET, /* can dump */ |
| 281 | 281 | |
| 282 | + RDMA_NLDEV_CMD_GET_CHARDEV, | |
| 283 | + | |
| 282 | 284 | RDMA_NLDEV_NUM_OPS |
| 283 | 285 | }; |
| 284 | 286 | |
| @@ -491,6 +493,18 @@ enum rdma_nldev_attr { · 206 unmodified lines | ||
| 491 | 493 | */ |
| 492 | 494 | RDMA_NLDEV_NET_NS_FD, /* u32 */ |
| 493 | 495 | |
| 496 | + /* | |
| 497 | + * Information about a chardev. | |
| 498 | + * CHARDEV_TYPE is the name of the chardev ABI (ie uverbs, umad, etc) | |
| 499 | + * CHARDEV_ABI signals the ABI revision (historical) | |
| 500 | + * CHARDEV_NAME is the kernel name for the /dev/ file (no directory) | |
| 501 | + * CHARDEV is the 64 bit dev_t for the inode | |
| 502 | + */ | |
| 503 | + RDMA_NLDEV_ATTR_CHARDEV_TYPE, /* string */ | |
| 504 | + RDMA_NLDEV_ATTR_CHARDEV_NAME, /* string */ | |
| 505 | + RDMA_NLDEV_ATTR_CHARDEV_ABI, /* u64 */ | |
| 506 | + RDMA_NLDEV_ATTR_CHARDEV, /* u64 */ | |
| 507 | + | |
| 494 | 508 | /* |
| 495 | 509 | * Always the end |
| 496 | 510 | */ |