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 | 500 | int flags, struct netlink_ext_ack *extack) |
| 501 | 501 | { |
| 502 | 502 | u16 max_vq_size; |
| 503 | + u16 min_vq_size = 1; | |
| 503 | 504 | u32 device_id; |
| 504 | 505 | u32 vendor_id; |
| 505 | 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 | 517 | device_id = vdev->config->get_device_id(vdev); |
| 517 | 518 | vendor_id = vdev->config->get_vendor_id(vdev); |
| 518 | 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 | 523 | err = -EMSGSIZE; |
| 521 | 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 | 531 | goto msg_err; |
| 529 | 532 | if (nla_put_u16(msg, VDPA_ATTR_DEV_MAX_VQ_SIZE, max_vq_size)) |
| 530 | 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 | 537 | genlmsg_end(msg, hdr); |
| 533 | 538 | return 0; |
| @@ -32,6 +32,7 @@ enum vdpa_attr { · 31 unmodified lines | ||
| 32 | 32 | VDPA_ATTR_DEV_VENDOR_ID, /* u32 */ |
| 33 | 33 | VDPA_ATTR_DEV_MAX_VQS, /* u32 */ |
| 34 | 34 | VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ |
| 35 | + VDPA_ATTR_DEV_MIN_VQ_SIZE, /* u16 */ | |
| 35 | 36 | |
| 36 | 37 | /* new attributes must be added above here */ |
| 37 | 38 | VDPA_ATTR_MAX, |