Jason Wang
2021-Dec-21 05:57 UTC
[PATCH v3 07/10] vdpa: Add support for returning device configuration information
On Sun, Dec 19, 2021 at 10:03 PM Eli Cohen <elic at nvidia.com> wrote:> > Add netlink attribute to store the negotiated features. This can be used > by userspace to get the current state of the vdpa instance. > > Example: > $ vdpa dev config show vdpa-a > vdpa-a: mac 00:00:00:00:88:88 link up link_announce false max_vq_pairs > 16 mtu 1500 features c3182bc3182b > CSUM GUEST_CSUM MTU MAC HOST_TSO4 HOST_TSO6 STATUS VERSION_1 \ > ACCESS_PLATFORM > > Signed-off-by: Eli Cohen <elic at nvidia.com> > > ---- > V2 -> V3 > 1. Move attribute definition to end of enum definition > 2. Return the entire negotiated features bit mask > --- > drivers/vdpa/vdpa.c | 3 +++ > include/uapi/linux/vdpa.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c > index 83730713c7d0..64b2ab60e0bb 100644 > --- a/drivers/vdpa/vdpa.c > +++ b/drivers/vdpa/vdpa.c > @@ -820,6 +820,9 @@ static int vdpa_dev_net_config_fill(struct vdpa_device *vdev, struct sk_buff *ms > return -EMSGSIZE; > > features = vdev->config->get_driver_features(vdev); > + if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_NEGOTIATED_FEATURES, features, > + VDPA_ATTR_PAD)) > + return -EMSGSIZE; > > return vdpa_dev_net_mq_config_fill(vdev, msg, features, &config); > } > diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h > index a252f06f9dfd..db3738ef3beb 100644 > --- a/include/uapi/linux/vdpa.h > +++ b/include/uapi/linux/vdpa.h > @@ -23,6 +23,9 @@ enum vdpa_command { > enum vdpa_attr { > VDPA_ATTR_UNSPEC, > > + /* Pad attribute for 64b alignment */ > + VDPA_ATTR_PAD = VDPA_ATTR_UNSPEC, > +I may miss something, but will this lead to a change in the existing ABI? Thanks> /* bus name (optional) + dev name together make the parent device handle */ > VDPA_ATTR_MGMTDEV_BUS_NAME, /* string */ > VDPA_ATTR_MGMTDEV_DEV_NAME, /* string */ > @@ -40,6 +43,7 @@ enum vdpa_attr { > VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ > VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ > > + VDPA_ATTR_DEV_NEGOTIATED_FEATURES, /* u64 */ > /* new attributes must be added above here */ > VDPA_ATTR_MAX, > }; > -- > 2.34.1 >