mirror of
https://github.com/torvalds/linux.git
synced 2024-12-15 07:33:56 +00:00
RDMA/netlink: Expose device and port capability masks
The port capability mask is exposed to user space via sysfs interface, while device capabilities are available for verbs only. This patch provides those capabilities through netlink interface. Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Reviewed-by: Steve Wise <swise@opengridcomputing.com>
This commit is contained in:
parent
c3f66f7b00
commit
ac50525374
@ -50,18 +50,37 @@ static int fill_dev_info(struct sk_buff *msg, struct ib_device *device)
|
||||
return -EMSGSIZE;
|
||||
if (nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, rdma_end_port(device)))
|
||||
return -EMSGSIZE;
|
||||
|
||||
BUILD_BUG_ON(sizeof(device->attrs.device_cap_flags) != sizeof(u64));
|
||||
if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CAP_FLAGS,
|
||||
device->attrs.device_cap_flags, 0))
|
||||
return -EMSGSIZE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fill_port_info(struct sk_buff *msg,
|
||||
struct ib_device *device, u32 port)
|
||||
{
|
||||
struct ib_port_attr attr;
|
||||
int ret;
|
||||
|
||||
if (nla_put_u32(msg, RDMA_NLDEV_ATTR_DEV_INDEX, device->index))
|
||||
return -EMSGSIZE;
|
||||
if (nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_NAME, device->name))
|
||||
return -EMSGSIZE;
|
||||
if (nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port))
|
||||
return -EMSGSIZE;
|
||||
|
||||
ret = ib_query_port(device, port, &attr);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
BUILD_BUG_ON(sizeof(attr.port_cap_flags) > sizeof(u64));
|
||||
if (nla_put_u64_64bit(msg, RDMA_NLDEV_ATTR_CAP_FLAGS,
|
||||
(u64)attr.port_cap_flags, 0))
|
||||
return -EMSGSIZE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -257,6 +257,11 @@ enum rdma_nldev_attr {
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_PORT_INDEX, /* u32 */
|
||||
|
||||
/*
|
||||
* Device and port capabilities
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_CAP_FLAGS, /* u64 */
|
||||
|
||||
RDMA_NLDEV_ATTR_MAX
|
||||
};
|
||||
#endif /* _UAPI_RDMA_NETLINK_H */
|
||||
|
Loading…
Reference in New Issue
Block a user