Jason Wang
2021-Dec-21 07:55 UTC
[PATCH v3 07/10] vdpa: Add support for returning device configuration information
On Tue, Dec 21, 2021 at 3:04 PM Eli Cohen <elic at nvidia.com> wrote:> > On Tue, Dec 21, 2021 at 08:20:32AM +0200, Eli Cohen wrote: > > On Tue, Dec 21, 2021 at 01:57:54PM +0800, Jason Wang wrote: > > > 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? > > > > > > > You're right. > > I think it can be moved to the end of the enum > > Actuall, it's OK. It does not change the other enum values and it can't > be moved to the end because it will corrupt the enumeration of > VDPA_ATTR_MAXRight. Acked-by: Jason Wang <jasowang at redhat.com>> > > > > 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 > > > > > > > >