Add the ability to query the device's bdf through rdma tool netlink command (in addition to the sysfs infra). In case of virtual devices (rxe/siw), the netdev bdf will be shown. Signed-off-by: Gal Pressman <galpress@xxxxxxxxxx> --- drivers/infiniband/core/nldev.c | 10 +++++++++- include/uapi/rdma/rdma_netlink.h | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c index 12d29d54a081..9704b1449c01 100644 --- a/drivers/infiniband/core/nldev.c +++ b/drivers/infiniband/core/nldev.c @@ -291,7 +291,15 @@ static int fill_dev_info(struct sk_buff *msg, struct ib_device *device) else if (rdma_protocol_usnic(device, port)) ret = nla_put_string(msg, RDMA_NLDEV_ATTR_DEV_PROTOCOL, "usnic"); - return ret; + if (ret) + return ret; + + if (device->dev.parent) + if (nla_put_string(msg, RDMA_NLDEV_PARENT_BDF, + dev_name(device->dev.parent))) + return -EMSGSIZE; + + return 0; } static int fill_port_info(struct sk_buff *msg, diff --git a/include/uapi/rdma/rdma_netlink.h b/include/uapi/rdma/rdma_netlink.h index d2f5b8396243..7495104668eb 100644 --- a/include/uapi/rdma/rdma_netlink.h +++ b/include/uapi/rdma/rdma_netlink.h @@ -533,6 +533,11 @@ enum rdma_nldev_attr { RDMA_NLDEV_ATTR_RES_RAW, /* binary */ + /* + * Parent device BDF (bus, device, function). + */ + RDMA_NLDEV_PARENT_BDF, /* string */ + /* * Always the end */ -- 2.29.1