This attribute advertises the min value of virtqueue size. The value is 1 by default.
Unified · Split
| @@ -500,6 +500,7 @@ vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq · 499 unmodified lines | |||
| 500 | int flags, struct netlink_ext_ack *extack) | 500 | int flags, struct netlink_ext_ack *extack) |
| 501 | { | 501 | { |
| 502 | u16 max_vq_size; | 502 | u16 max_vq_size; |
| 503 | u16 min_vq_size = 1; | ||
| 503 | u32 device_id; | 504 | u32 device_id; |
| 504 | u32 vendor_id; | 505 | u32 vendor_id; |
| 505 | void *hdr; | 506 | void *hdr; |
| @@ -516,6 +517,8 @@ vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq · 10 unmodified lines | |||
| 516 | device_id = vdev->config->get_device_id(vdev); | 517 | device_id = vdev->config->get_device_id(vdev); |
| 517 | vendor_id = vdev->config->get_vendor_id(vdev); | 518 | vendor_id = vdev->config->get_vendor_id(vdev); |
| 518 | max_vq_size = vdev->config->get_vq_num_max(vdev); | 519 | max_vq_size = vdev->config->get_vq_num_max(vdev); |
| 520 | if (vdev->config->get_vq_num_min) | ||
| 521 | min_vq_size = vdev->config->get_vq_num_min(vdev); | ||
| 519 | 522 | ||
| 520 | err = -EMSGSIZE; | 523 | err = -EMSGSIZE; |
| 521 | if (nla_put_string(msg, VDPA_ATTR_DEV_NAME, dev_name(&vdev->dev))) | 524 | 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 · 6 unmodified lines | |||
| 528 | goto msg_err; | 531 | goto msg_err; |
| 529 | if (nla_put_u16(msg, VDPA_ATTR_DEV_MAX_VQ_SIZE, max_vq_size)) | 532 | if (nla_put_u16(msg, VDPA_ATTR_DEV_MAX_VQ_SIZE, max_vq_size)) |
| 530 | goto msg_err; | 533 | goto msg_err; |
| 534 | if (nla_put_u16(msg, VDPA_ATTR_DEV_MIN_VQ_SIZE, min_vq_size)) | ||
| 535 | goto msg_err; | ||
| 531 | 536 | ||
| 532 | genlmsg_end(msg, hdr); | 537 | genlmsg_end(msg, hdr); |
| 533 | return 0; | 538 | return 0; |
| @@ -32,6 +32,7 @@ enum vdpa_attr { · 31 unmodified lines | |||
| 32 | VDPA_ATTR_DEV_VENDOR_ID, /* u32 */ | 32 | VDPA_ATTR_DEV_VENDOR_ID, /* u32 */ |
| 33 | VDPA_ATTR_DEV_MAX_VQS, /* u32 */ | 33 | VDPA_ATTR_DEV_MAX_VQS, /* u32 */ |
| 34 | VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ | 34 | VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ |
| 35 | VDPA_ATTR_DEV_MIN_VQ_SIZE, /* u16 */ | ||
| 35 | 36 | ||
| 36 | /* new attributes must be added above here */ | 37 | /* new attributes must be added above here */ |
| 37 | VDPA_ATTR_MAX, | 38 | VDPA_ATTR_MAX, |