Skip to content

Commit cd2629f

Browse files
elic307imstsirkin
authored andcommitted
vdpa: Support reporting max device capabilities
Add max_supported_vqs and supported_features fields to struct vdpa_mgmt_dev. Upstream drivers need to feel these values according to the device capabilities. These values are reported back in a netlink message when showing management devices. Examples: $ auxiliary/mlx5_core.sf.1: supported_classes net max_supported_vqs 257 dev_features CSUM GUEST_CSUM MTU HOST_TSO4 HOST_TSO6 STATUS CTRL_VQ MQ \ CTRL_MAC_ADDR VERSION_1 ACCESS_PLATFORM $ vdpa -j mgmtdev show {"mgmtdev":{"auxiliary/mlx5_core.sf.1":{"supported_classes":["net"], \ "max_supported_vqs":257,"dev_features":["CSUM","GUEST_CSUM","MTU", \ "HOST_TSO4","HOST_TSO6","STATUS","CTRL_VQ","MQ","CTRL_MAC_ADDR", \ "VERSION_1","ACCESS_PLATFORM"]}}} $ vdpa -jp mgmtdev show { "mgmtdev": { "auxiliary/mlx5_core.sf.1": { "supported_classes": [ "net" ], "max_supported_vqs": 257, "dev_features": ["CSUM","GUEST_CSUM","MTU","HOST_TSO4", \ "HOST_TSO6","STATUS","CTRL_VQ","MQ", \ "CTRL_MAC_ADDR","VERSION_1","ACCESS_PLATFORM"] } } } Signed-off-by: Eli Cohen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michael S. Tsirkin <[email protected]> Reviewed-by: Si-Wei Liu<[email protected]>
1 parent 37e07e7 commit cd2629f

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

drivers/vdpa/vdpa.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,16 @@ static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *m
514514
err = -EMSGSIZE;
515515
goto msg_err;
516516
}
517+
if (nla_put_u32(msg, VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
518+
mdev->max_supported_vqs)) {
519+
err = -EMSGSIZE;
520+
goto msg_err;
521+
}
522+
if (nla_put_u64_64bit(msg, VDPA_ATTR_DEV_SUPPORTED_FEATURES,
523+
mdev->supported_features, VDPA_ATTR_PAD)) {
524+
err = -EMSGSIZE;
525+
goto msg_err;
526+
}
517527

518528
genlmsg_end(msg, hdr);
519529
return 0;

include/linux/vdpa.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,8 @@ struct vdpa_mgmt_dev {
460460
const struct virtio_device_id *id_table;
461461
u64 config_attr_mask;
462462
struct list_head list;
463+
u64 supported_features;
464+
u32 max_supported_vqs;
463465
};
464466

465467
int vdpa_mgmtdev_register(struct vdpa_mgmt_dev *mdev);

include/uapi/linux/vdpa.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ enum vdpa_attr {
4444
VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */
4545

4646
VDPA_ATTR_DEV_NEGOTIATED_FEATURES, /* u64 */
47+
VDPA_ATTR_DEV_MGMTDEV_MAX_VQS, /* u32 */
48+
VDPA_ATTR_DEV_SUPPORTED_FEATURES, /* u64 */
4749
/* new attributes must be added above here */
4850
VDPA_ATTR_MAX,
4951
};

0 commit comments

Comments
 (0)