> From: Gal Pressman <galpress@xxxxxxxxxx> > Sent: Tuesday, November 3, 2020 6:56 PM > > Add the ability to query the device's bdf through rdma tool netlink command > (in addition to the sysfs infra). > New netlink attribute addition needs to show an example in the commit message for $ rdma dev show or $rdma link show Whichever applicable. > 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, Not everything is PCI, BDF is too pci specific. So name attribute name should be RDMA_NLDEV_PARENT_DEV and additional one as PARENT_BUS > + 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