vdpa: add new attribute VDPA_ATTR_DEV_MIN_VQ_SIZE
This attribute advertises the min value of virtqueue size. The value is 1 by default. Signed-off-by: Wu Zongyong <wuzongyong@linux.alibaba.com> Link: https://lore.kernel.org/r/2bbc417355c4d22298050b1ba887cecfbde3e85d.1635493219.git.wuzongyong@linux.alibaba.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Родитель
30a03dfcbb
Коммит
e47be840e8
|
@ -500,6 +500,7 @@ vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq
|
||||||
int flags, struct netlink_ext_ack *extack)
|
int flags, struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
u16 max_vq_size;
|
u16 max_vq_size;
|
||||||
|
u16 min_vq_size = 1;
|
||||||
u32 device_id;
|
u32 device_id;
|
||||||
u32 vendor_id;
|
u32 vendor_id;
|
||||||
void *hdr;
|
void *hdr;
|
||||||
|
@ -516,6 +517,8 @@ vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq
|
||||||
device_id = vdev->config->get_device_id(vdev);
|
device_id = vdev->config->get_device_id(vdev);
|
||||||
vendor_id = vdev->config->get_vendor_id(vdev);
|
vendor_id = vdev->config->get_vendor_id(vdev);
|
||||||
max_vq_size = vdev->config->get_vq_num_max(vdev);
|
max_vq_size = vdev->config->get_vq_num_max(vdev);
|
||||||
|
if (vdev->config->get_vq_num_min)
|
||||||
|
min_vq_size = vdev->config->get_vq_num_min(vdev);
|
||||||
|
|
||||||
err = -EMSGSIZE;
|
err = -EMSGSIZE;
|
||||||
if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev)))
|
if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev)))
|
||||||
|
@ -528,6 +531,8 @@ vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq
|
||||||
goto msg_err;
|
goto msg_err;
|
||||||
if (nla_put_u16(msg, VDPA_ATTR_DEV_MAX_VQ_SIZE, max_vq_size))
|
if (nla_put_u16(msg, VDPA_ATTR_DEV_MAX_VQ_SIZE, max_vq_size))
|
||||||
goto msg_err;
|
goto msg_err;
|
||||||
|
if (nla_put_u16(msg, VDPA_ATTR_DEV_MIN_VQ_SIZE, min_vq_size))
|
||||||
|
goto msg_err;
|
||||||
|
|
||||||
genlmsg_end(msg, hdr);
|
genlmsg_end(msg, hdr);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -32,6 +32,7 @@ enum vdpa_attr {
|
||||||
VDPA_ATTR_DEV_VENDOR_ID, /* u32 */
|
VDPA_ATTR_DEV_VENDOR_ID, /* u32 */
|
||||||
VDPA_ATTR_DEV_MAX_VQS, /* u32 */
|
VDPA_ATTR_DEV_MAX_VQS, /* u32 */
|
||||||
VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */
|
VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */
|
||||||
|
VDPA_ATTR_DEV_MIN_VQ_SIZE, /* u16 */
|
||||||
|
|
||||||
/* new attributes must be added above here */
|
/* new attributes must be added above here */
|
||||||
VDPA_ATTR_MAX,
|
VDPA_ATTR_MAX,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче