[PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible

Jason Wang posted 21 patches 4 years, 5 months ago
Maintainers: Jason Wang <jasowang@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>
There is a newer version of this series
[PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible
Posted by Jason Wang 4 years, 5 months ago
Most of the time, "queues" really means queue pairs. So this patch
switch to use "qps" to avoid confusion.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 hw/net/vhost_net.c             |   6 +-
 hw/net/virtio-net.c            | 150 ++++++++++++++++-----------------
 include/hw/virtio/virtio-net.h |   4 +-
 3 files changed, 80 insertions(+), 80 deletions(-)

diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index 7e0b60b4d9..b40fdfa625 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -337,7 +337,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
         if (i < data_qps) {
             peer = qemu_get_peer(ncs, i);
         } else { /* Control Virtqueue */
-            peer = qemu_get_peer(ncs, n->max_queues);
+            peer = qemu_get_peer(ncs, n->max_qps);
         }
 
         net = get_vhost_net(peer);
@@ -362,7 +362,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
         if (i < data_qps) {
             peer = qemu_get_peer(ncs, i);
         } else {
-            peer = qemu_get_peer(ncs, n->max_queues);
+            peer = qemu_get_peer(ncs, n->max_qps);
         }
         r = vhost_net_start_one(get_vhost_net(peer), dev);
 
@@ -412,7 +412,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
         if (i < data_qps) {
             peer = qemu_get_peer(ncs, i);
         } else {
-            peer = qemu_get_peer(ncs, n->max_queues);
+            peer = qemu_get_peer(ncs, n->max_qps);
         }
         vhost_net_stop_one(get_vhost_net(peer), dev);
     }
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 8fccbaa44c..0a5d9862ec 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -54,7 +54,7 @@
 #define VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE 256
 #define VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE 256
 
-/* for now, only allow larger queues; with virtio-1, guest can downsize */
+/* for now, only allow larger qps; with virtio-1, guest can downsize */
 #define VIRTIO_NET_RX_QUEUE_MIN_SIZE VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE
 #define VIRTIO_NET_TX_QUEUE_MIN_SIZE VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE
 
@@ -131,7 +131,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)
     int ret = 0;
     memset(&netcfg, 0 , sizeof(struct virtio_net_config));
     virtio_stw_p(vdev, &netcfg.status, n->status);
-    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_queues);
+    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_qps);
     virtio_stw_p(vdev, &netcfg.mtu, n->net_conf.mtu);
     memcpy(netcfg.mac, n->mac, ETH_ALEN);
     virtio_stl_p(vdev, &netcfg.speed, n->net_conf.speed);
@@ -243,7 +243,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(n);
     NetClientState *nc = qemu_get_queue(n->nic);
-    int queues = n->multiqueue ? n->max_queues : 1;
+    int qps = n->multiqueue ? n->max_qps : 1;
 
     if (!get_vhost_net(nc->peer)) {
         return;
@@ -266,7 +266,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
         /* Any packets outstanding? Purge them to avoid touching rings
          * when vhost is running.
          */
-        for (i = 0;  i < queues; i++) {
+        for (i = 0;  i < qps; i++) {
             NetClientState *qnc = qemu_get_subqueue(n->nic, i);
 
             /* Purge both directions: TX and RX. */
@@ -285,14 +285,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
         }
 
         n->vhost_started = 1;
-        r = vhost_net_start(vdev, n->nic->ncs, queues, 0);
+        r = vhost_net_start(vdev, n->nic->ncs, qps, 0);
         if (r < 0) {
             error_report("unable to start vhost net: %d: "
                          "falling back on userspace virtio", -r);
             n->vhost_started = 0;
         }
     } else {
-        vhost_net_stop(vdev, n->nic->ncs, queues, 0);
+        vhost_net_stop(vdev, n->nic->ncs, qps, 0);
         n->vhost_started = 0;
     }
 }
@@ -309,11 +309,11 @@ static int virtio_net_set_vnet_endian_one(VirtIODevice *vdev,
 }
 
 static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
-                                       int queues, bool enable)
+                                       int qps, bool enable)
 {
     int i;
 
-    for (i = 0; i < queues; i++) {
+    for (i = 0; i < qps; i++) {
         if (virtio_net_set_vnet_endian_one(vdev, ncs[i].peer, enable) < 0 &&
             enable) {
             while (--i >= 0) {
@@ -330,7 +330,7 @@ static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
 static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(n);
-    int queues = n->multiqueue ? n->max_queues : 1;
+    int qps = n->multiqueue ? n->max_qps : 1;
 
     if (virtio_net_started(n, status)) {
         /* Before using the device, we tell the network backend about the
@@ -339,14 +339,14 @@ static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
          * virtio-net code.
          */
         n->needs_vnet_hdr_swap = virtio_net_set_vnet_endian(vdev, n->nic->ncs,
-                                                            queues, true);
+                                                            qps, true);
     } else if (virtio_net_started(n, vdev->status)) {
         /* After using the device, we need to reset the network backend to
          * the default (guest native endianness), otherwise the guest may
          * lose network connectivity if it is rebooted into a different
          * endianness.
          */
-        virtio_net_set_vnet_endian(vdev, n->nic->ncs, queues, false);
+        virtio_net_set_vnet_endian(vdev, n->nic->ncs, qps, false);
     }
 }
 
@@ -368,12 +368,12 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
     virtio_net_vnet_endian_status(n, status);
     virtio_net_vhost_status(n, status);
 
-    for (i = 0; i < n->max_queues; i++) {
+    for (i = 0; i < n->max_qps; i++) {
         NetClientState *ncs = qemu_get_subqueue(n->nic, i);
         bool queue_started;
         q = &n->vqs[i];
 
-        if ((!n->multiqueue && i != 0) || i >= n->curr_queues) {
+        if ((!n->multiqueue && i != 0) || i >= n->curr_qps) {
             queue_status = 0;
         } else {
             queue_status = status;
@@ -540,7 +540,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
     n->nouni = 0;
     n->nobcast = 0;
     /* multiqueue is disabled by default */
-    n->curr_queues = 1;
+    n->curr_qps = 1;
     timer_del(n->announce_timer.tm);
     n->announce_timer.round = 0;
     n->status &= ~VIRTIO_NET_S_ANNOUNCE;
@@ -556,7 +556,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
     memset(n->vlans, 0, MAX_VLAN >> 3);
 
     /* Flush any async TX */
-    for (i = 0;  i < n->max_queues; i++) {
+    for (i = 0;  i < n->max_qps; i++) {
         NetClientState *nc = qemu_get_subqueue(n->nic, i);
 
         if (nc->peer) {
@@ -610,7 +610,7 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs,
             sizeof(struct virtio_net_hdr);
     }
 
-    for (i = 0; i < n->max_queues; i++) {
+    for (i = 0; i < n->max_qps; i++) {
         nc = qemu_get_subqueue(n->nic, i);
 
         if (peer_has_vnet_hdr(n) &&
@@ -655,7 +655,7 @@ static int peer_attach(VirtIONet *n, int index)
         return 0;
     }
 
-    if (n->max_queues == 1) {
+    if (n->max_qps == 1) {
         return 0;
     }
 
@@ -681,7 +681,7 @@ static int peer_detach(VirtIONet *n, int index)
     return tap_disable(nc->peer);
 }
 
-static void virtio_net_set_queues(VirtIONet *n)
+static void virtio_net_set_qps(VirtIONet *n)
 {
     int i;
     int r;
@@ -690,8 +690,8 @@ static void virtio_net_set_queues(VirtIONet *n)
         return;
     }
 
-    for (i = 0; i < n->max_queues; i++) {
-        if (i < n->curr_queues) {
+    for (i = 0; i < n->max_qps; i++) {
+        if (i < n->curr_qps) {
             r = peer_attach(n, i);
             assert(!r);
         } else {
@@ -920,7 +920,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
         virtio_net_apply_guest_offloads(n);
     }
 
-    for (i = 0;  i < n->max_queues; i++) {
+    for (i = 0;  i < n->max_qps; i++) {
         NetClientState *nc = qemu_get_subqueue(n->nic, i);
 
         if (!get_vhost_net(nc->peer)) {
@@ -1247,7 +1247,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
     VirtIODevice *vdev = VIRTIO_DEVICE(n);
     struct virtio_net_rss_config cfg;
     size_t s, offset = 0, size_get;
-    uint16_t queues, i;
+    uint16_t qps, i;
     struct {
         uint16_t us;
         uint8_t b;
@@ -1289,7 +1289,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
     }
     n->rss_data.default_queue = do_rss ?
         virtio_lduw_p(vdev, &cfg.unclassified_queue) : 0;
-    if (n->rss_data.default_queue >= n->max_queues) {
+    if (n->rss_data.default_queue >= n->max_qps) {
         err_msg = "Invalid default queue";
         err_value = n->rss_data.default_queue;
         goto error;
@@ -1318,14 +1318,14 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
     size_get = sizeof(temp);
     s = iov_to_buf(iov, iov_cnt, offset, &temp, size_get);
     if (s != size_get) {
-        err_msg = "Can't get queues";
+        err_msg = "Can't get qps";
         err_value = (uint32_t)s;
         goto error;
     }
-    queues = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_queues;
-    if (queues == 0 || queues > n->max_queues) {
-        err_msg = "Invalid number of queues";
-        err_value = queues;
+    qps = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_qps;
+    if (qps == 0 || qps > n->max_qps) {
+        err_msg = "Invalid number of qps";
+        err_value = qps;
         goto error;
     }
     if (temp.b > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
@@ -1340,7 +1340,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
     }
     if (!temp.b && !n->rss_data.hash_types) {
         virtio_net_disable_rss(n);
-        return queues;
+        return qps;
     }
     offset += size_get;
     size_get = temp.b;
@@ -1373,7 +1373,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
     trace_virtio_net_rss_enable(n->rss_data.hash_types,
                                 n->rss_data.indirections_len,
                                 temp.b);
-    return queues;
+    return qps;
 error:
     trace_virtio_net_rss_error(err_msg, err_value);
     virtio_net_disable_rss(n);
@@ -1384,15 +1384,15 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
                                 struct iovec *iov, unsigned int iov_cnt)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(n);
-    uint16_t queues;
+    uint16_t qps;
 
     virtio_net_disable_rss(n);
     if (cmd == VIRTIO_NET_CTRL_MQ_HASH_CONFIG) {
-        queues = virtio_net_handle_rss(n, iov, iov_cnt, false);
-        return queues ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
+        qps = virtio_net_handle_rss(n, iov, iov_cnt, false);
+        return qps ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
     }
     if (cmd == VIRTIO_NET_CTRL_MQ_RSS_CONFIG) {
-        queues = virtio_net_handle_rss(n, iov, iov_cnt, true);
+        qps = virtio_net_handle_rss(n, iov, iov_cnt, true);
     } else if (cmd == VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET) {
         struct virtio_net_ctrl_mq mq;
         size_t s;
@@ -1403,24 +1403,24 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
         if (s != sizeof(mq)) {
             return VIRTIO_NET_ERR;
         }
-        queues = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
+        qps = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
 
     } else {
         return VIRTIO_NET_ERR;
     }
 
-    if (queues < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
-        queues > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
-        queues > n->max_queues ||
+    if (qps < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
+        qps > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
+        qps > n->max_qps ||
         !n->multiqueue) {
         return VIRTIO_NET_ERR;
     }
 
-    n->curr_queues = queues;
-    /* stop the backend before changing the number of queues to avoid handling a
+    n->curr_qps = qps;
+    /* stop the backend before changing the number of qps to avoid handling a
      * disabled queue */
     virtio_net_set_status(vdev, vdev->status);
-    virtio_net_set_queues(n);
+    virtio_net_set_qps(n);
 
     return VIRTIO_NET_OK;
 }
@@ -1498,7 +1498,7 @@ static bool virtio_net_can_receive(NetClientState *nc)
         return false;
     }
 
-    if (nc->queue_index >= n->curr_queues) {
+    if (nc->queue_index >= n->curr_qps) {
         return false;
     }
 
@@ -2753,11 +2753,11 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
     virtio_del_queue(vdev, index * 2 + 1);
 }
 
-static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
+static void virtio_net_change_num_qps(VirtIONet *n, int new_max_qps)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(n);
     int old_num_queues = virtio_get_num_queues(vdev);
-    int new_num_queues = new_max_queues * 2 + 1;
+    int new_num_queues = new_max_qps * 2 + 1;
     int i;
 
     assert(old_num_queues >= 3);
@@ -2790,12 +2790,12 @@ static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
 
 static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
 {
-    int max = multiqueue ? n->max_queues : 1;
+    int max = multiqueue ? n->max_qps : 1;
 
     n->multiqueue = multiqueue;
-    virtio_net_change_num_queues(n, max);
+    virtio_net_change_num_qps(n, max);
 
-    virtio_net_set_queues(n);
+    virtio_net_set_qps(n);
 }
 
 static int virtio_net_post_load_device(void *opaque, int version_id)
@@ -2828,7 +2828,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
      */
     n->saved_guest_offloads = n->curr_guest_offloads;
 
-    virtio_net_set_queues(n);
+    virtio_net_set_qps(n);
 
     /* Find the first multicast entry in the saved MAC filter */
     for (i = 0; i < n->mac_table.in_use; i++) {
@@ -2841,7 +2841,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
     /* nc.link_down can't be migrated, so infer link_down according
      * to link status bit in n->status */
     link_down = (n->status & VIRTIO_NET_S_LINK_UP) == 0;
-    for (i = 0; i < n->max_queues; i++) {
+    for (i = 0; i < n->max_qps; i++) {
         qemu_get_subqueue(n->nic, i)->link_down = link_down;
     }
 
@@ -2906,9 +2906,9 @@ static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
    },
 };
 
-static bool max_queues_gt_1(void *opaque, int version_id)
+static bool max_qps_gt_1(void *opaque, int version_id)
 {
-    return VIRTIO_NET(opaque)->max_queues > 1;
+    return VIRTIO_NET(opaque)->max_qps > 1;
 }
 
 static bool has_ctrl_guest_offloads(void *opaque, int version_id)
@@ -2933,13 +2933,13 @@ static bool mac_table_doesnt_fit(void *opaque, int version_id)
 struct VirtIONetMigTmp {
     VirtIONet      *parent;
     VirtIONetQueue *vqs_1;
-    uint16_t        curr_queues_1;
+    uint16_t        curr_qps_1;
     uint8_t         has_ufo;
     uint32_t        has_vnet_hdr;
 };
 
 /* The 2nd and subsequent tx_waiting flags are loaded later than
- * the 1st entry in the queues and only if there's more than one
+ * the 1st entry in the qps and only if there's more than one
  * entry.  We use the tmp mechanism to calculate a temporary
  * pointer and count and also validate the count.
  */
@@ -2949,9 +2949,9 @@ static int virtio_net_tx_waiting_pre_save(void *opaque)
     struct VirtIONetMigTmp *tmp = opaque;
 
     tmp->vqs_1 = tmp->parent->vqs + 1;
-    tmp->curr_queues_1 = tmp->parent->curr_queues - 1;
-    if (tmp->parent->curr_queues == 0) {
-        tmp->curr_queues_1 = 0;
+    tmp->curr_qps_1 = tmp->parent->curr_qps - 1;
+    if (tmp->parent->curr_qps == 0) {
+        tmp->curr_qps_1 = 0;
     }
 
     return 0;
@@ -2964,9 +2964,9 @@ static int virtio_net_tx_waiting_pre_load(void *opaque)
     /* Reuse the pointer setup from save */
     virtio_net_tx_waiting_pre_save(opaque);
 
-    if (tmp->parent->curr_queues > tmp->parent->max_queues) {
-        error_report("virtio-net: curr_queues %x > max_queues %x",
-            tmp->parent->curr_queues, tmp->parent->max_queues);
+    if (tmp->parent->curr_qps > tmp->parent->max_qps) {
+        error_report("virtio-net: curr_qps %x > max_qps %x",
+            tmp->parent->curr_qps, tmp->parent->max_qps);
 
         return -EINVAL;
     }
@@ -2980,7 +2980,7 @@ static const VMStateDescription vmstate_virtio_net_tx_waiting = {
     .pre_save  = virtio_net_tx_waiting_pre_save,
     .fields    = (VMStateField[]) {
         VMSTATE_STRUCT_VARRAY_POINTER_UINT16(vqs_1, struct VirtIONetMigTmp,
-                                     curr_queues_1,
+                                     curr_qps_1,
                                      vmstate_virtio_net_queue_tx_waiting,
                                      struct VirtIONetQueue),
         VMSTATE_END_OF_LIST()
@@ -3122,9 +3122,9 @@ static const VMStateDescription vmstate_virtio_net_device = {
         VMSTATE_UINT8(nobcast, VirtIONet),
         VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
                          vmstate_virtio_net_has_ufo),
-        VMSTATE_SINGLE_TEST(max_queues, VirtIONet, max_queues_gt_1, 0,
+        VMSTATE_SINGLE_TEST(max_qps, VirtIONet, max_qps_gt_1, 0,
                             vmstate_info_uint16_equal, uint16_t),
-        VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
+        VMSTATE_UINT16_TEST(curr_qps, VirtIONet, max_qps_gt_1),
         VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
                          vmstate_virtio_net_tx_waiting),
         VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
@@ -3368,16 +3368,16 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
         return;
     }
 
-    n->max_queues = MAX(n->nic_conf.peers.queues, 1);
-    if (n->max_queues * 2 + 1 > VIRTIO_QUEUE_MAX) {
-        error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
+    n->max_qps = MAX(n->nic_conf.peers.queues, 1);
+    if (n->max_qps * 2 + 1 > VIRTIO_QUEUE_MAX) {
+        error_setg(errp, "Invalid number of qps (= %" PRIu32 "), "
                    "must be a positive integer less than %d.",
-                   n->max_queues, (VIRTIO_QUEUE_MAX - 1) / 2);
+                   n->max_qps, (VIRTIO_QUEUE_MAX - 1) / 2);
         virtio_cleanup(vdev);
         return;
     }
-    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_queues);
-    n->curr_queues = 1;
+    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_qps);
+    n->curr_qps = 1;
     n->tx_timeout = n->net_conf.txtimer;
 
     if (n->net_conf.tx && strcmp(n->net_conf.tx, "timer")
@@ -3391,7 +3391,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
     n->net_conf.tx_queue_size = MIN(virtio_net_max_tx_queue_size(n),
                                     n->net_conf.tx_queue_size);
 
-    for (i = 0; i < n->max_queues; i++) {
+    for (i = 0; i < n->max_qps; i++) {
         virtio_net_add_queue(n, i);
     }
 
@@ -3415,13 +3415,13 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
                               object_get_typename(OBJECT(dev)), dev->id, n);
     }
 
-    for (i = 0; i < n->max_queues; i++) {
+    for (i = 0; i < n->max_qps; i++) {
         n->nic->ncs[i].do_not_pad = true;
     }
 
     peer_test_vnet_hdr(n);
     if (peer_has_vnet_hdr(n)) {
-        for (i = 0; i < n->max_queues; i++) {
+        for (i = 0; i < n->max_qps; i++) {
             qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true);
         }
         n->host_hdr_len = sizeof(struct virtio_net_hdr);
@@ -3463,7 +3463,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VirtIONet *n = VIRTIO_NET(dev);
-    int i, max_queues;
+    int i, max_qps;
 
     if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) {
         virtio_net_unload_ebpf(n);
@@ -3485,12 +3485,12 @@ static void virtio_net_device_unrealize(DeviceState *dev)
         remove_migration_state_change_notifier(&n->migration_state);
     }
 
-    max_queues = n->multiqueue ? n->max_queues : 1;
-    for (i = 0; i < max_queues; i++) {
+    max_qps = n->multiqueue ? n->max_qps : 1;
+    for (i = 0; i < max_qps; i++) {
         virtio_net_del_queue(n, i);
     }
     /* delete also control vq */
-    virtio_del_queue(vdev, max_queues * 2);
+    virtio_del_queue(vdev, max_qps * 2);
     qemu_announce_timer_del(&n->announce_timer, false);
     g_free(n->vqs);
     qemu_del_nic(n->nic);
diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
index 824a69c23f..a9b6dc252e 100644
--- a/include/hw/virtio/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -194,8 +194,8 @@ struct VirtIONet {
     NICConf nic_conf;
     DeviceState *qdev;
     int multiqueue;
-    uint16_t max_queues;
-    uint16_t curr_queues;
+    uint16_t max_qps;
+    uint16_t curr_qps;
     size_t config_size;
     char *netclient_name;
     char *netclient_type;
-- 
2.25.1


Re: [PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible
Posted by Michael S. Tsirkin 4 years, 5 months ago
On Fri, Sep 03, 2021 at 05:10:28PM +0800, Jason Wang wrote:
> Most of the time, "queues" really means queue pairs. So this patch
> switch to use "qps" to avoid confusion.
> 
> Signed-off-by: Jason Wang <jasowang@redhat.com>

This is far from a standard terminology, except for the people
like me, who's mind is permanently warped by close contact with infiniband
hardware. Please eschew abbreviation, just say queue_pairs.

> ---
>  hw/net/vhost_net.c             |   6 +-
>  hw/net/virtio-net.c            | 150 ++++++++++++++++-----------------
>  include/hw/virtio/virtio-net.h |   4 +-
>  3 files changed, 80 insertions(+), 80 deletions(-)
> 
> diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
> index 7e0b60b4d9..b40fdfa625 100644
> --- a/hw/net/vhost_net.c
> +++ b/hw/net/vhost_net.c
> @@ -337,7 +337,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>          if (i < data_qps) {
>              peer = qemu_get_peer(ncs, i);
>          } else { /* Control Virtqueue */
> -            peer = qemu_get_peer(ncs, n->max_queues);
> +            peer = qemu_get_peer(ncs, n->max_qps);
>          }
>  
>          net = get_vhost_net(peer);
> @@ -362,7 +362,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>          if (i < data_qps) {
>              peer = qemu_get_peer(ncs, i);
>          } else {
> -            peer = qemu_get_peer(ncs, n->max_queues);
> +            peer = qemu_get_peer(ncs, n->max_qps);
>          }
>          r = vhost_net_start_one(get_vhost_net(peer), dev);
>  
> @@ -412,7 +412,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
>          if (i < data_qps) {
>              peer = qemu_get_peer(ncs, i);
>          } else {
> -            peer = qemu_get_peer(ncs, n->max_queues);
> +            peer = qemu_get_peer(ncs, n->max_qps);
>          }
>          vhost_net_stop_one(get_vhost_net(peer), dev);
>      }
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 8fccbaa44c..0a5d9862ec 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -54,7 +54,7 @@
>  #define VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE 256
>  #define VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE 256
>  
> -/* for now, only allow larger queues; with virtio-1, guest can downsize */
> +/* for now, only allow larger qps; with virtio-1, guest can downsize */
>  #define VIRTIO_NET_RX_QUEUE_MIN_SIZE VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE
>  #define VIRTIO_NET_TX_QUEUE_MIN_SIZE VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE
>  
> @@ -131,7 +131,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)
>      int ret = 0;
>      memset(&netcfg, 0 , sizeof(struct virtio_net_config));
>      virtio_stw_p(vdev, &netcfg.status, n->status);
> -    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_queues);
> +    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_qps);
>      virtio_stw_p(vdev, &netcfg.mtu, n->net_conf.mtu);
>      memcpy(netcfg.mac, n->mac, ETH_ALEN);
>      virtio_stl_p(vdev, &netcfg.speed, n->net_conf.speed);
> @@ -243,7 +243,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(n);
>      NetClientState *nc = qemu_get_queue(n->nic);
> -    int queues = n->multiqueue ? n->max_queues : 1;
> +    int qps = n->multiqueue ? n->max_qps : 1;
>  
>      if (!get_vhost_net(nc->peer)) {
>          return;
> @@ -266,7 +266,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
>          /* Any packets outstanding? Purge them to avoid touching rings
>           * when vhost is running.
>           */
> -        for (i = 0;  i < queues; i++) {
> +        for (i = 0;  i < qps; i++) {
>              NetClientState *qnc = qemu_get_subqueue(n->nic, i);
>  
>              /* Purge both directions: TX and RX. */
> @@ -285,14 +285,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
>          }
>  
>          n->vhost_started = 1;
> -        r = vhost_net_start(vdev, n->nic->ncs, queues, 0);
> +        r = vhost_net_start(vdev, n->nic->ncs, qps, 0);
>          if (r < 0) {
>              error_report("unable to start vhost net: %d: "
>                           "falling back on userspace virtio", -r);
>              n->vhost_started = 0;
>          }
>      } else {
> -        vhost_net_stop(vdev, n->nic->ncs, queues, 0);
> +        vhost_net_stop(vdev, n->nic->ncs, qps, 0);
>          n->vhost_started = 0;
>      }
>  }
> @@ -309,11 +309,11 @@ static int virtio_net_set_vnet_endian_one(VirtIODevice *vdev,
>  }
>  
>  static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> -                                       int queues, bool enable)
> +                                       int qps, bool enable)
>  {
>      int i;
>  
> -    for (i = 0; i < queues; i++) {
> +    for (i = 0; i < qps; i++) {
>          if (virtio_net_set_vnet_endian_one(vdev, ncs[i].peer, enable) < 0 &&
>              enable) {
>              while (--i >= 0) {
> @@ -330,7 +330,7 @@ static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
>  static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> -    int queues = n->multiqueue ? n->max_queues : 1;
> +    int qps = n->multiqueue ? n->max_qps : 1;
>  
>      if (virtio_net_started(n, status)) {
>          /* Before using the device, we tell the network backend about the
> @@ -339,14 +339,14 @@ static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
>           * virtio-net code.
>           */
>          n->needs_vnet_hdr_swap = virtio_net_set_vnet_endian(vdev, n->nic->ncs,
> -                                                            queues, true);
> +                                                            qps, true);
>      } else if (virtio_net_started(n, vdev->status)) {
>          /* After using the device, we need to reset the network backend to
>           * the default (guest native endianness), otherwise the guest may
>           * lose network connectivity if it is rebooted into a different
>           * endianness.
>           */
> -        virtio_net_set_vnet_endian(vdev, n->nic->ncs, queues, false);
> +        virtio_net_set_vnet_endian(vdev, n->nic->ncs, qps, false);
>      }
>  }
>  
> @@ -368,12 +368,12 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
>      virtio_net_vnet_endian_status(n, status);
>      virtio_net_vhost_status(n, status);
>  
> -    for (i = 0; i < n->max_queues; i++) {
> +    for (i = 0; i < n->max_qps; i++) {
>          NetClientState *ncs = qemu_get_subqueue(n->nic, i);
>          bool queue_started;
>          q = &n->vqs[i];
>  
> -        if ((!n->multiqueue && i != 0) || i >= n->curr_queues) {
> +        if ((!n->multiqueue && i != 0) || i >= n->curr_qps) {
>              queue_status = 0;
>          } else {
>              queue_status = status;
> @@ -540,7 +540,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
>      n->nouni = 0;
>      n->nobcast = 0;
>      /* multiqueue is disabled by default */
> -    n->curr_queues = 1;
> +    n->curr_qps = 1;
>      timer_del(n->announce_timer.tm);
>      n->announce_timer.round = 0;
>      n->status &= ~VIRTIO_NET_S_ANNOUNCE;
> @@ -556,7 +556,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
>      memset(n->vlans, 0, MAX_VLAN >> 3);
>  
>      /* Flush any async TX */
> -    for (i = 0;  i < n->max_queues; i++) {
> +    for (i = 0;  i < n->max_qps; i++) {
>          NetClientState *nc = qemu_get_subqueue(n->nic, i);
>  
>          if (nc->peer) {
> @@ -610,7 +610,7 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs,
>              sizeof(struct virtio_net_hdr);
>      }
>  
> -    for (i = 0; i < n->max_queues; i++) {
> +    for (i = 0; i < n->max_qps; i++) {
>          nc = qemu_get_subqueue(n->nic, i);
>  
>          if (peer_has_vnet_hdr(n) &&
> @@ -655,7 +655,7 @@ static int peer_attach(VirtIONet *n, int index)
>          return 0;
>      }
>  
> -    if (n->max_queues == 1) {
> +    if (n->max_qps == 1) {
>          return 0;
>      }
>  
> @@ -681,7 +681,7 @@ static int peer_detach(VirtIONet *n, int index)
>      return tap_disable(nc->peer);
>  }
>  
> -static void virtio_net_set_queues(VirtIONet *n)
> +static void virtio_net_set_qps(VirtIONet *n)
>  {
>      int i;
>      int r;
> @@ -690,8 +690,8 @@ static void virtio_net_set_queues(VirtIONet *n)
>          return;
>      }
>  
> -    for (i = 0; i < n->max_queues; i++) {
> -        if (i < n->curr_queues) {
> +    for (i = 0; i < n->max_qps; i++) {
> +        if (i < n->curr_qps) {
>              r = peer_attach(n, i);
>              assert(!r);
>          } else {
> @@ -920,7 +920,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
>          virtio_net_apply_guest_offloads(n);
>      }
>  
> -    for (i = 0;  i < n->max_queues; i++) {
> +    for (i = 0;  i < n->max_qps; i++) {
>          NetClientState *nc = qemu_get_subqueue(n->nic, i);
>  
>          if (!get_vhost_net(nc->peer)) {
> @@ -1247,7 +1247,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
>      VirtIODevice *vdev = VIRTIO_DEVICE(n);
>      struct virtio_net_rss_config cfg;
>      size_t s, offset = 0, size_get;
> -    uint16_t queues, i;
> +    uint16_t qps, i;
>      struct {
>          uint16_t us;
>          uint8_t b;
> @@ -1289,7 +1289,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
>      }
>      n->rss_data.default_queue = do_rss ?
>          virtio_lduw_p(vdev, &cfg.unclassified_queue) : 0;
> -    if (n->rss_data.default_queue >= n->max_queues) {
> +    if (n->rss_data.default_queue >= n->max_qps) {
>          err_msg = "Invalid default queue";
>          err_value = n->rss_data.default_queue;
>          goto error;
> @@ -1318,14 +1318,14 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
>      size_get = sizeof(temp);
>      s = iov_to_buf(iov, iov_cnt, offset, &temp, size_get);
>      if (s != size_get) {
> -        err_msg = "Can't get queues";
> +        err_msg = "Can't get qps";
>          err_value = (uint32_t)s;
>          goto error;
>      }
> -    queues = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_queues;
> -    if (queues == 0 || queues > n->max_queues) {
> -        err_msg = "Invalid number of queues";
> -        err_value = queues;
> +    qps = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_qps;
> +    if (qps == 0 || qps > n->max_qps) {
> +        err_msg = "Invalid number of qps";
> +        err_value = qps;
>          goto error;
>      }
>      if (temp.b > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
> @@ -1340,7 +1340,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
>      }
>      if (!temp.b && !n->rss_data.hash_types) {
>          virtio_net_disable_rss(n);
> -        return queues;
> +        return qps;
>      }
>      offset += size_get;
>      size_get = temp.b;
> @@ -1373,7 +1373,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
>      trace_virtio_net_rss_enable(n->rss_data.hash_types,
>                                  n->rss_data.indirections_len,
>                                  temp.b);
> -    return queues;
> +    return qps;
>  error:
>      trace_virtio_net_rss_error(err_msg, err_value);
>      virtio_net_disable_rss(n);
> @@ -1384,15 +1384,15 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
>                                  struct iovec *iov, unsigned int iov_cnt)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> -    uint16_t queues;
> +    uint16_t qps;
>  
>      virtio_net_disable_rss(n);
>      if (cmd == VIRTIO_NET_CTRL_MQ_HASH_CONFIG) {
> -        queues = virtio_net_handle_rss(n, iov, iov_cnt, false);
> -        return queues ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> +        qps = virtio_net_handle_rss(n, iov, iov_cnt, false);
> +        return qps ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
>      }
>      if (cmd == VIRTIO_NET_CTRL_MQ_RSS_CONFIG) {
> -        queues = virtio_net_handle_rss(n, iov, iov_cnt, true);
> +        qps = virtio_net_handle_rss(n, iov, iov_cnt, true);
>      } else if (cmd == VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET) {
>          struct virtio_net_ctrl_mq mq;
>          size_t s;
> @@ -1403,24 +1403,24 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
>          if (s != sizeof(mq)) {
>              return VIRTIO_NET_ERR;
>          }
> -        queues = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> +        qps = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
>  
>      } else {
>          return VIRTIO_NET_ERR;
>      }
>  
> -    if (queues < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> -        queues > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> -        queues > n->max_queues ||
> +    if (qps < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> +        qps > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> +        qps > n->max_qps ||
>          !n->multiqueue) {
>          return VIRTIO_NET_ERR;
>      }
>  
> -    n->curr_queues = queues;
> -    /* stop the backend before changing the number of queues to avoid handling a
> +    n->curr_qps = qps;
> +    /* stop the backend before changing the number of qps to avoid handling a
>       * disabled queue */
>      virtio_net_set_status(vdev, vdev->status);
> -    virtio_net_set_queues(n);
> +    virtio_net_set_qps(n);
>  
>      return VIRTIO_NET_OK;
>  }
> @@ -1498,7 +1498,7 @@ static bool virtio_net_can_receive(NetClientState *nc)
>          return false;
>      }
>  
> -    if (nc->queue_index >= n->curr_queues) {
> +    if (nc->queue_index >= n->curr_qps) {
>          return false;
>      }
>  
> @@ -2753,11 +2753,11 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
>      virtio_del_queue(vdev, index * 2 + 1);
>  }
>  
> -static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> +static void virtio_net_change_num_qps(VirtIONet *n, int new_max_qps)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(n);
>      int old_num_queues = virtio_get_num_queues(vdev);
> -    int new_num_queues = new_max_queues * 2 + 1;
> +    int new_num_queues = new_max_qps * 2 + 1;
>      int i;
>  
>      assert(old_num_queues >= 3);
> @@ -2790,12 +2790,12 @@ static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
>  
>  static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
>  {
> -    int max = multiqueue ? n->max_queues : 1;
> +    int max = multiqueue ? n->max_qps : 1;
>  
>      n->multiqueue = multiqueue;
> -    virtio_net_change_num_queues(n, max);
> +    virtio_net_change_num_qps(n, max);
>  
> -    virtio_net_set_queues(n);
> +    virtio_net_set_qps(n);
>  }
>  
>  static int virtio_net_post_load_device(void *opaque, int version_id)
> @@ -2828,7 +2828,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
>       */
>      n->saved_guest_offloads = n->curr_guest_offloads;
>  
> -    virtio_net_set_queues(n);
> +    virtio_net_set_qps(n);
>  
>      /* Find the first multicast entry in the saved MAC filter */
>      for (i = 0; i < n->mac_table.in_use; i++) {
> @@ -2841,7 +2841,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
>      /* nc.link_down can't be migrated, so infer link_down according
>       * to link status bit in n->status */
>      link_down = (n->status & VIRTIO_NET_S_LINK_UP) == 0;
> -    for (i = 0; i < n->max_queues; i++) {
> +    for (i = 0; i < n->max_qps; i++) {
>          qemu_get_subqueue(n->nic, i)->link_down = link_down;
>      }
>  
> @@ -2906,9 +2906,9 @@ static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
>     },
>  };
>  
> -static bool max_queues_gt_1(void *opaque, int version_id)
> +static bool max_qps_gt_1(void *opaque, int version_id)
>  {
> -    return VIRTIO_NET(opaque)->max_queues > 1;
> +    return VIRTIO_NET(opaque)->max_qps > 1;
>  }
>  
>  static bool has_ctrl_guest_offloads(void *opaque, int version_id)
> @@ -2933,13 +2933,13 @@ static bool mac_table_doesnt_fit(void *opaque, int version_id)
>  struct VirtIONetMigTmp {
>      VirtIONet      *parent;
>      VirtIONetQueue *vqs_1;
> -    uint16_t        curr_queues_1;
> +    uint16_t        curr_qps_1;
>      uint8_t         has_ufo;
>      uint32_t        has_vnet_hdr;
>  };
>  
>  /* The 2nd and subsequent tx_waiting flags are loaded later than
> - * the 1st entry in the queues and only if there's more than one
> + * the 1st entry in the qps and only if there's more than one
>   * entry.  We use the tmp mechanism to calculate a temporary
>   * pointer and count and also validate the count.
>   */
> @@ -2949,9 +2949,9 @@ static int virtio_net_tx_waiting_pre_save(void *opaque)
>      struct VirtIONetMigTmp *tmp = opaque;
>  
>      tmp->vqs_1 = tmp->parent->vqs + 1;
> -    tmp->curr_queues_1 = tmp->parent->curr_queues - 1;
> -    if (tmp->parent->curr_queues == 0) {
> -        tmp->curr_queues_1 = 0;
> +    tmp->curr_qps_1 = tmp->parent->curr_qps - 1;
> +    if (tmp->parent->curr_qps == 0) {
> +        tmp->curr_qps_1 = 0;
>      }
>  
>      return 0;
> @@ -2964,9 +2964,9 @@ static int virtio_net_tx_waiting_pre_load(void *opaque)
>      /* Reuse the pointer setup from save */
>      virtio_net_tx_waiting_pre_save(opaque);
>  
> -    if (tmp->parent->curr_queues > tmp->parent->max_queues) {
> -        error_report("virtio-net: curr_queues %x > max_queues %x",
> -            tmp->parent->curr_queues, tmp->parent->max_queues);
> +    if (tmp->parent->curr_qps > tmp->parent->max_qps) {
> +        error_report("virtio-net: curr_qps %x > max_qps %x",
> +            tmp->parent->curr_qps, tmp->parent->max_qps);
>  
>          return -EINVAL;
>      }
> @@ -2980,7 +2980,7 @@ static const VMStateDescription vmstate_virtio_net_tx_waiting = {
>      .pre_save  = virtio_net_tx_waiting_pre_save,
>      .fields    = (VMStateField[]) {
>          VMSTATE_STRUCT_VARRAY_POINTER_UINT16(vqs_1, struct VirtIONetMigTmp,
> -                                     curr_queues_1,
> +                                     curr_qps_1,
>                                       vmstate_virtio_net_queue_tx_waiting,
>                                       struct VirtIONetQueue),
>          VMSTATE_END_OF_LIST()
> @@ -3122,9 +3122,9 @@ static const VMStateDescription vmstate_virtio_net_device = {
>          VMSTATE_UINT8(nobcast, VirtIONet),
>          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
>                           vmstate_virtio_net_has_ufo),
> -        VMSTATE_SINGLE_TEST(max_queues, VirtIONet, max_queues_gt_1, 0,
> +        VMSTATE_SINGLE_TEST(max_qps, VirtIONet, max_qps_gt_1, 0,
>                              vmstate_info_uint16_equal, uint16_t),
> -        VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
> +        VMSTATE_UINT16_TEST(curr_qps, VirtIONet, max_qps_gt_1),
>          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
>                           vmstate_virtio_net_tx_waiting),
>          VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
> @@ -3368,16 +3368,16 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
>          return;
>      }
>  
> -    n->max_queues = MAX(n->nic_conf.peers.queues, 1);
> -    if (n->max_queues * 2 + 1 > VIRTIO_QUEUE_MAX) {
> -        error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
> +    n->max_qps = MAX(n->nic_conf.peers.queues, 1);
> +    if (n->max_qps * 2 + 1 > VIRTIO_QUEUE_MAX) {
> +        error_setg(errp, "Invalid number of qps (= %" PRIu32 "), "
>                     "must be a positive integer less than %d.",
> -                   n->max_queues, (VIRTIO_QUEUE_MAX - 1) / 2);
> +                   n->max_qps, (VIRTIO_QUEUE_MAX - 1) / 2);
>          virtio_cleanup(vdev);
>          return;
>      }
> -    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_queues);
> -    n->curr_queues = 1;
> +    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_qps);
> +    n->curr_qps = 1;
>      n->tx_timeout = n->net_conf.txtimer;
>  
>      if (n->net_conf.tx && strcmp(n->net_conf.tx, "timer")
> @@ -3391,7 +3391,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
>      n->net_conf.tx_queue_size = MIN(virtio_net_max_tx_queue_size(n),
>                                      n->net_conf.tx_queue_size);
>  
> -    for (i = 0; i < n->max_queues; i++) {
> +    for (i = 0; i < n->max_qps; i++) {
>          virtio_net_add_queue(n, i);
>      }
>  
> @@ -3415,13 +3415,13 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
>                                object_get_typename(OBJECT(dev)), dev->id, n);
>      }
>  
> -    for (i = 0; i < n->max_queues; i++) {
> +    for (i = 0; i < n->max_qps; i++) {
>          n->nic->ncs[i].do_not_pad = true;
>      }
>  
>      peer_test_vnet_hdr(n);
>      if (peer_has_vnet_hdr(n)) {
> -        for (i = 0; i < n->max_queues; i++) {
> +        for (i = 0; i < n->max_qps; i++) {
>              qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true);
>          }
>          n->host_hdr_len = sizeof(struct virtio_net_hdr);
> @@ -3463,7 +3463,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
>      VirtIONet *n = VIRTIO_NET(dev);
> -    int i, max_queues;
> +    int i, max_qps;
>  
>      if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) {
>          virtio_net_unload_ebpf(n);
> @@ -3485,12 +3485,12 @@ static void virtio_net_device_unrealize(DeviceState *dev)
>          remove_migration_state_change_notifier(&n->migration_state);
>      }
>  
> -    max_queues = n->multiqueue ? n->max_queues : 1;
> -    for (i = 0; i < max_queues; i++) {
> +    max_qps = n->multiqueue ? n->max_qps : 1;
> +    for (i = 0; i < max_qps; i++) {
>          virtio_net_del_queue(n, i);
>      }
>      /* delete also control vq */
> -    virtio_del_queue(vdev, max_queues * 2);
> +    virtio_del_queue(vdev, max_qps * 2);
>      qemu_announce_timer_del(&n->announce_timer, false);
>      g_free(n->vqs);
>      qemu_del_nic(n->nic);
> diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
> index 824a69c23f..a9b6dc252e 100644
> --- a/include/hw/virtio/virtio-net.h
> +++ b/include/hw/virtio/virtio-net.h
> @@ -194,8 +194,8 @@ struct VirtIONet {
>      NICConf nic_conf;
>      DeviceState *qdev;
>      int multiqueue;
> -    uint16_t max_queues;
> -    uint16_t curr_queues;
> +    uint16_t max_qps;
> +    uint16_t curr_qps;
>      size_t config_size;
>      char *netclient_name;
>      char *netclient_type;
> -- 
> 2.25.1


Re: [PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible
Posted by Jason Wang 4 years, 5 months ago
On Sun, Sep 5, 2021 at 4:42 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Fri, Sep 03, 2021 at 05:10:28PM +0800, Jason Wang wrote:
> > Most of the time, "queues" really means queue pairs. So this patch
> > switch to use "qps" to avoid confusion.
> >
> > Signed-off-by: Jason Wang <jasowang@redhat.com>
>
> This is far from a standard terminology, except for the people
> like me, who's mind is permanently warped by close contact with infiniband
> hardware. Please eschew abbreviation, just say queue_pairs.

Ok, I will do that in the next version.

Thanks

>
> > ---
> >  hw/net/vhost_net.c             |   6 +-
> >  hw/net/virtio-net.c            | 150 ++++++++++++++++-----------------
> >  include/hw/virtio/virtio-net.h |   4 +-
> >  3 files changed, 80 insertions(+), 80 deletions(-)
> >
> > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
> > index 7e0b60b4d9..b40fdfa625 100644
> > --- a/hw/net/vhost_net.c
> > +++ b/hw/net/vhost_net.c
> > @@ -337,7 +337,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> >          if (i < data_qps) {
> >              peer = qemu_get_peer(ncs, i);
> >          } else { /* Control Virtqueue */
> > -            peer = qemu_get_peer(ncs, n->max_queues);
> > +            peer = qemu_get_peer(ncs, n->max_qps);
> >          }
> >
> >          net = get_vhost_net(peer);
> > @@ -362,7 +362,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> >          if (i < data_qps) {
> >              peer = qemu_get_peer(ncs, i);
> >          } else {
> > -            peer = qemu_get_peer(ncs, n->max_queues);
> > +            peer = qemu_get_peer(ncs, n->max_qps);
> >          }
> >          r = vhost_net_start_one(get_vhost_net(peer), dev);
> >
> > @@ -412,7 +412,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
> >          if (i < data_qps) {
> >              peer = qemu_get_peer(ncs, i);
> >          } else {
> > -            peer = qemu_get_peer(ncs, n->max_queues);
> > +            peer = qemu_get_peer(ncs, n->max_qps);
> >          }
> >          vhost_net_stop_one(get_vhost_net(peer), dev);
> >      }
> > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> > index 8fccbaa44c..0a5d9862ec 100644
> > --- a/hw/net/virtio-net.c
> > +++ b/hw/net/virtio-net.c
> > @@ -54,7 +54,7 @@
> >  #define VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE 256
> >  #define VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE 256
> >
> > -/* for now, only allow larger queues; with virtio-1, guest can downsize */
> > +/* for now, only allow larger qps; with virtio-1, guest can downsize */
> >  #define VIRTIO_NET_RX_QUEUE_MIN_SIZE VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE
> >  #define VIRTIO_NET_TX_QUEUE_MIN_SIZE VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE
> >
> > @@ -131,7 +131,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)
> >      int ret = 0;
> >      memset(&netcfg, 0 , sizeof(struct virtio_net_config));
> >      virtio_stw_p(vdev, &netcfg.status, n->status);
> > -    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_queues);
> > +    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_qps);
> >      virtio_stw_p(vdev, &netcfg.mtu, n->net_conf.mtu);
> >      memcpy(netcfg.mac, n->mac, ETH_ALEN);
> >      virtio_stl_p(vdev, &netcfg.speed, n->net_conf.speed);
> > @@ -243,7 +243,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> >  {
> >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> >      NetClientState *nc = qemu_get_queue(n->nic);
> > -    int queues = n->multiqueue ? n->max_queues : 1;
> > +    int qps = n->multiqueue ? n->max_qps : 1;
> >
> >      if (!get_vhost_net(nc->peer)) {
> >          return;
> > @@ -266,7 +266,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> >          /* Any packets outstanding? Purge them to avoid touching rings
> >           * when vhost is running.
> >           */
> > -        for (i = 0;  i < queues; i++) {
> > +        for (i = 0;  i < qps; i++) {
> >              NetClientState *qnc = qemu_get_subqueue(n->nic, i);
> >
> >              /* Purge both directions: TX and RX. */
> > @@ -285,14 +285,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> >          }
> >
> >          n->vhost_started = 1;
> > -        r = vhost_net_start(vdev, n->nic->ncs, queues, 0);
> > +        r = vhost_net_start(vdev, n->nic->ncs, qps, 0);
> >          if (r < 0) {
> >              error_report("unable to start vhost net: %d: "
> >                           "falling back on userspace virtio", -r);
> >              n->vhost_started = 0;
> >          }
> >      } else {
> > -        vhost_net_stop(vdev, n->nic->ncs, queues, 0);
> > +        vhost_net_stop(vdev, n->nic->ncs, qps, 0);
> >          n->vhost_started = 0;
> >      }
> >  }
> > @@ -309,11 +309,11 @@ static int virtio_net_set_vnet_endian_one(VirtIODevice *vdev,
> >  }
> >
> >  static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> > -                                       int queues, bool enable)
> > +                                       int qps, bool enable)
> >  {
> >      int i;
> >
> > -    for (i = 0; i < queues; i++) {
> > +    for (i = 0; i < qps; i++) {
> >          if (virtio_net_set_vnet_endian_one(vdev, ncs[i].peer, enable) < 0 &&
> >              enable) {
> >              while (--i >= 0) {
> > @@ -330,7 +330,7 @@ static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> >  static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> >  {
> >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > -    int queues = n->multiqueue ? n->max_queues : 1;
> > +    int qps = n->multiqueue ? n->max_qps : 1;
> >
> >      if (virtio_net_started(n, status)) {
> >          /* Before using the device, we tell the network backend about the
> > @@ -339,14 +339,14 @@ static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> >           * virtio-net code.
> >           */
> >          n->needs_vnet_hdr_swap = virtio_net_set_vnet_endian(vdev, n->nic->ncs,
> > -                                                            queues, true);
> > +                                                            qps, true);
> >      } else if (virtio_net_started(n, vdev->status)) {
> >          /* After using the device, we need to reset the network backend to
> >           * the default (guest native endianness), otherwise the guest may
> >           * lose network connectivity if it is rebooted into a different
> >           * endianness.
> >           */
> > -        virtio_net_set_vnet_endian(vdev, n->nic->ncs, queues, false);
> > +        virtio_net_set_vnet_endian(vdev, n->nic->ncs, qps, false);
> >      }
> >  }
> >
> > @@ -368,12 +368,12 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
> >      virtio_net_vnet_endian_status(n, status);
> >      virtio_net_vhost_status(n, status);
> >
> > -    for (i = 0; i < n->max_queues; i++) {
> > +    for (i = 0; i < n->max_qps; i++) {
> >          NetClientState *ncs = qemu_get_subqueue(n->nic, i);
> >          bool queue_started;
> >          q = &n->vqs[i];
> >
> > -        if ((!n->multiqueue && i != 0) || i >= n->curr_queues) {
> > +        if ((!n->multiqueue && i != 0) || i >= n->curr_qps) {
> >              queue_status = 0;
> >          } else {
> >              queue_status = status;
> > @@ -540,7 +540,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> >      n->nouni = 0;
> >      n->nobcast = 0;
> >      /* multiqueue is disabled by default */
> > -    n->curr_queues = 1;
> > +    n->curr_qps = 1;
> >      timer_del(n->announce_timer.tm);
> >      n->announce_timer.round = 0;
> >      n->status &= ~VIRTIO_NET_S_ANNOUNCE;
> > @@ -556,7 +556,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> >      memset(n->vlans, 0, MAX_VLAN >> 3);
> >
> >      /* Flush any async TX */
> > -    for (i = 0;  i < n->max_queues; i++) {
> > +    for (i = 0;  i < n->max_qps; i++) {
> >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> >
> >          if (nc->peer) {
> > @@ -610,7 +610,7 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs,
> >              sizeof(struct virtio_net_hdr);
> >      }
> >
> > -    for (i = 0; i < n->max_queues; i++) {
> > +    for (i = 0; i < n->max_qps; i++) {
> >          nc = qemu_get_subqueue(n->nic, i);
> >
> >          if (peer_has_vnet_hdr(n) &&
> > @@ -655,7 +655,7 @@ static int peer_attach(VirtIONet *n, int index)
> >          return 0;
> >      }
> >
> > -    if (n->max_queues == 1) {
> > +    if (n->max_qps == 1) {
> >          return 0;
> >      }
> >
> > @@ -681,7 +681,7 @@ static int peer_detach(VirtIONet *n, int index)
> >      return tap_disable(nc->peer);
> >  }
> >
> > -static void virtio_net_set_queues(VirtIONet *n)
> > +static void virtio_net_set_qps(VirtIONet *n)
> >  {
> >      int i;
> >      int r;
> > @@ -690,8 +690,8 @@ static void virtio_net_set_queues(VirtIONet *n)
> >          return;
> >      }
> >
> > -    for (i = 0; i < n->max_queues; i++) {
> > -        if (i < n->curr_queues) {
> > +    for (i = 0; i < n->max_qps; i++) {
> > +        if (i < n->curr_qps) {
> >              r = peer_attach(n, i);
> >              assert(!r);
> >          } else {
> > @@ -920,7 +920,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
> >          virtio_net_apply_guest_offloads(n);
> >      }
> >
> > -    for (i = 0;  i < n->max_queues; i++) {
> > +    for (i = 0;  i < n->max_qps; i++) {
> >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> >
> >          if (!get_vhost_net(nc->peer)) {
> > @@ -1247,7 +1247,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> >      struct virtio_net_rss_config cfg;
> >      size_t s, offset = 0, size_get;
> > -    uint16_t queues, i;
> > +    uint16_t qps, i;
> >      struct {
> >          uint16_t us;
> >          uint8_t b;
> > @@ -1289,7 +1289,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> >      }
> >      n->rss_data.default_queue = do_rss ?
> >          virtio_lduw_p(vdev, &cfg.unclassified_queue) : 0;
> > -    if (n->rss_data.default_queue >= n->max_queues) {
> > +    if (n->rss_data.default_queue >= n->max_qps) {
> >          err_msg = "Invalid default queue";
> >          err_value = n->rss_data.default_queue;
> >          goto error;
> > @@ -1318,14 +1318,14 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> >      size_get = sizeof(temp);
> >      s = iov_to_buf(iov, iov_cnt, offset, &temp, size_get);
> >      if (s != size_get) {
> > -        err_msg = "Can't get queues";
> > +        err_msg = "Can't get qps";
> >          err_value = (uint32_t)s;
> >          goto error;
> >      }
> > -    queues = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_queues;
> > -    if (queues == 0 || queues > n->max_queues) {
> > -        err_msg = "Invalid number of queues";
> > -        err_value = queues;
> > +    qps = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_qps;
> > +    if (qps == 0 || qps > n->max_qps) {
> > +        err_msg = "Invalid number of qps";
> > +        err_value = qps;
> >          goto error;
> >      }
> >      if (temp.b > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
> > @@ -1340,7 +1340,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> >      }
> >      if (!temp.b && !n->rss_data.hash_types) {
> >          virtio_net_disable_rss(n);
> > -        return queues;
> > +        return qps;
> >      }
> >      offset += size_get;
> >      size_get = temp.b;
> > @@ -1373,7 +1373,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> >      trace_virtio_net_rss_enable(n->rss_data.hash_types,
> >                                  n->rss_data.indirections_len,
> >                                  temp.b);
> > -    return queues;
> > +    return qps;
> >  error:
> >      trace_virtio_net_rss_error(err_msg, err_value);
> >      virtio_net_disable_rss(n);
> > @@ -1384,15 +1384,15 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> >                                  struct iovec *iov, unsigned int iov_cnt)
> >  {
> >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > -    uint16_t queues;
> > +    uint16_t qps;
> >
> >      virtio_net_disable_rss(n);
> >      if (cmd == VIRTIO_NET_CTRL_MQ_HASH_CONFIG) {
> > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > -        return queues ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > +        return qps ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> >      }
> >      if (cmd == VIRTIO_NET_CTRL_MQ_RSS_CONFIG) {
> > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, true);
> > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, true);
> >      } else if (cmd == VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET) {
> >          struct virtio_net_ctrl_mq mq;
> >          size_t s;
> > @@ -1403,24 +1403,24 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> >          if (s != sizeof(mq)) {
> >              return VIRTIO_NET_ERR;
> >          }
> > -        queues = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> > +        qps = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> >
> >      } else {
> >          return VIRTIO_NET_ERR;
> >      }
> >
> > -    if (queues < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > -        queues > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > -        queues > n->max_queues ||
> > +    if (qps < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > +        qps > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > +        qps > n->max_qps ||
> >          !n->multiqueue) {
> >          return VIRTIO_NET_ERR;
> >      }
> >
> > -    n->curr_queues = queues;
> > -    /* stop the backend before changing the number of queues to avoid handling a
> > +    n->curr_qps = qps;
> > +    /* stop the backend before changing the number of qps to avoid handling a
> >       * disabled queue */
> >      virtio_net_set_status(vdev, vdev->status);
> > -    virtio_net_set_queues(n);
> > +    virtio_net_set_qps(n);
> >
> >      return VIRTIO_NET_OK;
> >  }
> > @@ -1498,7 +1498,7 @@ static bool virtio_net_can_receive(NetClientState *nc)
> >          return false;
> >      }
> >
> > -    if (nc->queue_index >= n->curr_queues) {
> > +    if (nc->queue_index >= n->curr_qps) {
> >          return false;
> >      }
> >
> > @@ -2753,11 +2753,11 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
> >      virtio_del_queue(vdev, index * 2 + 1);
> >  }
> >
> > -static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> > +static void virtio_net_change_num_qps(VirtIONet *n, int new_max_qps)
> >  {
> >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> >      int old_num_queues = virtio_get_num_queues(vdev);
> > -    int new_num_queues = new_max_queues * 2 + 1;
> > +    int new_num_queues = new_max_qps * 2 + 1;
> >      int i;
> >
> >      assert(old_num_queues >= 3);
> > @@ -2790,12 +2790,12 @@ static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> >
> >  static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
> >  {
> > -    int max = multiqueue ? n->max_queues : 1;
> > +    int max = multiqueue ? n->max_qps : 1;
> >
> >      n->multiqueue = multiqueue;
> > -    virtio_net_change_num_queues(n, max);
> > +    virtio_net_change_num_qps(n, max);
> >
> > -    virtio_net_set_queues(n);
> > +    virtio_net_set_qps(n);
> >  }
> >
> >  static int virtio_net_post_load_device(void *opaque, int version_id)
> > @@ -2828,7 +2828,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> >       */
> >      n->saved_guest_offloads = n->curr_guest_offloads;
> >
> > -    virtio_net_set_queues(n);
> > +    virtio_net_set_qps(n);
> >
> >      /* Find the first multicast entry in the saved MAC filter */
> >      for (i = 0; i < n->mac_table.in_use; i++) {
> > @@ -2841,7 +2841,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> >      /* nc.link_down can't be migrated, so infer link_down according
> >       * to link status bit in n->status */
> >      link_down = (n->status & VIRTIO_NET_S_LINK_UP) == 0;
> > -    for (i = 0; i < n->max_queues; i++) {
> > +    for (i = 0; i < n->max_qps; i++) {
> >          qemu_get_subqueue(n->nic, i)->link_down = link_down;
> >      }
> >
> > @@ -2906,9 +2906,9 @@ static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
> >     },
> >  };
> >
> > -static bool max_queues_gt_1(void *opaque, int version_id)
> > +static bool max_qps_gt_1(void *opaque, int version_id)
> >  {
> > -    return VIRTIO_NET(opaque)->max_queues > 1;
> > +    return VIRTIO_NET(opaque)->max_qps > 1;
> >  }
> >
> >  static bool has_ctrl_guest_offloads(void *opaque, int version_id)
> > @@ -2933,13 +2933,13 @@ static bool mac_table_doesnt_fit(void *opaque, int version_id)
> >  struct VirtIONetMigTmp {
> >      VirtIONet      *parent;
> >      VirtIONetQueue *vqs_1;
> > -    uint16_t        curr_queues_1;
> > +    uint16_t        curr_qps_1;
> >      uint8_t         has_ufo;
> >      uint32_t        has_vnet_hdr;
> >  };
> >
> >  /* The 2nd and subsequent tx_waiting flags are loaded later than
> > - * the 1st entry in the queues and only if there's more than one
> > + * the 1st entry in the qps and only if there's more than one
> >   * entry.  We use the tmp mechanism to calculate a temporary
> >   * pointer and count and also validate the count.
> >   */
> > @@ -2949,9 +2949,9 @@ static int virtio_net_tx_waiting_pre_save(void *opaque)
> >      struct VirtIONetMigTmp *tmp = opaque;
> >
> >      tmp->vqs_1 = tmp->parent->vqs + 1;
> > -    tmp->curr_queues_1 = tmp->parent->curr_queues - 1;
> > -    if (tmp->parent->curr_queues == 0) {
> > -        tmp->curr_queues_1 = 0;
> > +    tmp->curr_qps_1 = tmp->parent->curr_qps - 1;
> > +    if (tmp->parent->curr_qps == 0) {
> > +        tmp->curr_qps_1 = 0;
> >      }
> >
> >      return 0;
> > @@ -2964,9 +2964,9 @@ static int virtio_net_tx_waiting_pre_load(void *opaque)
> >      /* Reuse the pointer setup from save */
> >      virtio_net_tx_waiting_pre_save(opaque);
> >
> > -    if (tmp->parent->curr_queues > tmp->parent->max_queues) {
> > -        error_report("virtio-net: curr_queues %x > max_queues %x",
> > -            tmp->parent->curr_queues, tmp->parent->max_queues);
> > +    if (tmp->parent->curr_qps > tmp->parent->max_qps) {
> > +        error_report("virtio-net: curr_qps %x > max_qps %x",
> > +            tmp->parent->curr_qps, tmp->parent->max_qps);
> >
> >          return -EINVAL;
> >      }
> > @@ -2980,7 +2980,7 @@ static const VMStateDescription vmstate_virtio_net_tx_waiting = {
> >      .pre_save  = virtio_net_tx_waiting_pre_save,
> >      .fields    = (VMStateField[]) {
> >          VMSTATE_STRUCT_VARRAY_POINTER_UINT16(vqs_1, struct VirtIONetMigTmp,
> > -                                     curr_queues_1,
> > +                                     curr_qps_1,
> >                                       vmstate_virtio_net_queue_tx_waiting,
> >                                       struct VirtIONetQueue),
> >          VMSTATE_END_OF_LIST()
> > @@ -3122,9 +3122,9 @@ static const VMStateDescription vmstate_virtio_net_device = {
> >          VMSTATE_UINT8(nobcast, VirtIONet),
> >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> >                           vmstate_virtio_net_has_ufo),
> > -        VMSTATE_SINGLE_TEST(max_queues, VirtIONet, max_queues_gt_1, 0,
> > +        VMSTATE_SINGLE_TEST(max_qps, VirtIONet, max_qps_gt_1, 0,
> >                              vmstate_info_uint16_equal, uint16_t),
> > -        VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
> > +        VMSTATE_UINT16_TEST(curr_qps, VirtIONet, max_qps_gt_1),
> >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> >                           vmstate_virtio_net_tx_waiting),
> >          VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
> > @@ -3368,16 +3368,16 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> >          return;
> >      }
> >
> > -    n->max_queues = MAX(n->nic_conf.peers.queues, 1);
> > -    if (n->max_queues * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > -        error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
> > +    n->max_qps = MAX(n->nic_conf.peers.queues, 1);
> > +    if (n->max_qps * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > +        error_setg(errp, "Invalid number of qps (= %" PRIu32 "), "
> >                     "must be a positive integer less than %d.",
> > -                   n->max_queues, (VIRTIO_QUEUE_MAX - 1) / 2);
> > +                   n->max_qps, (VIRTIO_QUEUE_MAX - 1) / 2);
> >          virtio_cleanup(vdev);
> >          return;
> >      }
> > -    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_queues);
> > -    n->curr_queues = 1;
> > +    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_qps);
> > +    n->curr_qps = 1;
> >      n->tx_timeout = n->net_conf.txtimer;
> >
> >      if (n->net_conf.tx && strcmp(n->net_conf.tx, "timer")
> > @@ -3391,7 +3391,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> >      n->net_conf.tx_queue_size = MIN(virtio_net_max_tx_queue_size(n),
> >                                      n->net_conf.tx_queue_size);
> >
> > -    for (i = 0; i < n->max_queues; i++) {
> > +    for (i = 0; i < n->max_qps; i++) {
> >          virtio_net_add_queue(n, i);
> >      }
> >
> > @@ -3415,13 +3415,13 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> >                                object_get_typename(OBJECT(dev)), dev->id, n);
> >      }
> >
> > -    for (i = 0; i < n->max_queues; i++) {
> > +    for (i = 0; i < n->max_qps; i++) {
> >          n->nic->ncs[i].do_not_pad = true;
> >      }
> >
> >      peer_test_vnet_hdr(n);
> >      if (peer_has_vnet_hdr(n)) {
> > -        for (i = 0; i < n->max_queues; i++) {
> > +        for (i = 0; i < n->max_qps; i++) {
> >              qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true);
> >          }
> >          n->host_hdr_len = sizeof(struct virtio_net_hdr);
> > @@ -3463,7 +3463,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> >  {
> >      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> >      VirtIONet *n = VIRTIO_NET(dev);
> > -    int i, max_queues;
> > +    int i, max_qps;
> >
> >      if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) {
> >          virtio_net_unload_ebpf(n);
> > @@ -3485,12 +3485,12 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> >          remove_migration_state_change_notifier(&n->migration_state);
> >      }
> >
> > -    max_queues = n->multiqueue ? n->max_queues : 1;
> > -    for (i = 0; i < max_queues; i++) {
> > +    max_qps = n->multiqueue ? n->max_qps : 1;
> > +    for (i = 0; i < max_qps; i++) {
> >          virtio_net_del_queue(n, i);
> >      }
> >      /* delete also control vq */
> > -    virtio_del_queue(vdev, max_queues * 2);
> > +    virtio_del_queue(vdev, max_qps * 2);
> >      qemu_announce_timer_del(&n->announce_timer, false);
> >      g_free(n->vqs);
> >      qemu_del_nic(n->nic);
> > diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
> > index 824a69c23f..a9b6dc252e 100644
> > --- a/include/hw/virtio/virtio-net.h
> > +++ b/include/hw/virtio/virtio-net.h
> > @@ -194,8 +194,8 @@ struct VirtIONet {
> >      NICConf nic_conf;
> >      DeviceState *qdev;
> >      int multiqueue;
> > -    uint16_t max_queues;
> > -    uint16_t curr_queues;
> > +    uint16_t max_qps;
> > +    uint16_t curr_qps;
> >      size_t config_size;
> >      char *netclient_name;
> >      char *netclient_type;
> > --
> > 2.25.1
>


Re: [PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible
Posted by Michael S. Tsirkin 4 years, 5 months ago
On Mon, Sep 06, 2021 at 11:42:41AM +0800, Jason Wang wrote:
> On Sun, Sep 5, 2021 at 4:42 AM Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > On Fri, Sep 03, 2021 at 05:10:28PM +0800, Jason Wang wrote:
> > > Most of the time, "queues" really means queue pairs. So this patch
> > > switch to use "qps" to avoid confusion.
> > >
> > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> >
> > This is far from a standard terminology, except for the people
> > like me, who's mind is permanently warped by close contact with infiniband
> > hardware. Please eschew abbreviation, just say queue_pairs.
> 
> Ok, I will do that in the next version.
> 
> Thanks


Also, s/virito/virtio/
Happens to me too, often enough that I have an abbreviation set up in
vimrc.

> >
> > > ---
> > >  hw/net/vhost_net.c             |   6 +-
> > >  hw/net/virtio-net.c            | 150 ++++++++++++++++-----------------
> > >  include/hw/virtio/virtio-net.h |   4 +-
> > >  3 files changed, 80 insertions(+), 80 deletions(-)
> > >
> > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
> > > index 7e0b60b4d9..b40fdfa625 100644
> > > --- a/hw/net/vhost_net.c
> > > +++ b/hw/net/vhost_net.c
> > > @@ -337,7 +337,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> > >          if (i < data_qps) {
> > >              peer = qemu_get_peer(ncs, i);
> > >          } else { /* Control Virtqueue */
> > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > >          }
> > >
> > >          net = get_vhost_net(peer);
> > > @@ -362,7 +362,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> > >          if (i < data_qps) {
> > >              peer = qemu_get_peer(ncs, i);
> > >          } else {
> > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > >          }
> > >          r = vhost_net_start_one(get_vhost_net(peer), dev);
> > >
> > > @@ -412,7 +412,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
> > >          if (i < data_qps) {
> > >              peer = qemu_get_peer(ncs, i);
> > >          } else {
> > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > >          }
> > >          vhost_net_stop_one(get_vhost_net(peer), dev);
> > >      }
> > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> > > index 8fccbaa44c..0a5d9862ec 100644
> > > --- a/hw/net/virtio-net.c
> > > +++ b/hw/net/virtio-net.c
> > > @@ -54,7 +54,7 @@
> > >  #define VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE 256
> > >  #define VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE 256
> > >
> > > -/* for now, only allow larger queues; with virtio-1, guest can downsize */
> > > +/* for now, only allow larger qps; with virtio-1, guest can downsize */
> > >  #define VIRTIO_NET_RX_QUEUE_MIN_SIZE VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE
> > >  #define VIRTIO_NET_TX_QUEUE_MIN_SIZE VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE
> > >
> > > @@ -131,7 +131,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)
> > >      int ret = 0;
> > >      memset(&netcfg, 0 , sizeof(struct virtio_net_config));
> > >      virtio_stw_p(vdev, &netcfg.status, n->status);
> > > -    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_queues);
> > > +    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_qps);
> > >      virtio_stw_p(vdev, &netcfg.mtu, n->net_conf.mtu);
> > >      memcpy(netcfg.mac, n->mac, ETH_ALEN);
> > >      virtio_stl_p(vdev, &netcfg.speed, n->net_conf.speed);
> > > @@ -243,7 +243,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > >  {
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > >      NetClientState *nc = qemu_get_queue(n->nic);
> > > -    int queues = n->multiqueue ? n->max_queues : 1;
> > > +    int qps = n->multiqueue ? n->max_qps : 1;
> > >
> > >      if (!get_vhost_net(nc->peer)) {
> > >          return;
> > > @@ -266,7 +266,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > >          /* Any packets outstanding? Purge them to avoid touching rings
> > >           * when vhost is running.
> > >           */
> > > -        for (i = 0;  i < queues; i++) {
> > > +        for (i = 0;  i < qps; i++) {
> > >              NetClientState *qnc = qemu_get_subqueue(n->nic, i);
> > >
> > >              /* Purge both directions: TX and RX. */
> > > @@ -285,14 +285,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > >          }
> > >
> > >          n->vhost_started = 1;
> > > -        r = vhost_net_start(vdev, n->nic->ncs, queues, 0);
> > > +        r = vhost_net_start(vdev, n->nic->ncs, qps, 0);
> > >          if (r < 0) {
> > >              error_report("unable to start vhost net: %d: "
> > >                           "falling back on userspace virtio", -r);
> > >              n->vhost_started = 0;
> > >          }
> > >      } else {
> > > -        vhost_net_stop(vdev, n->nic->ncs, queues, 0);
> > > +        vhost_net_stop(vdev, n->nic->ncs, qps, 0);
> > >          n->vhost_started = 0;
> > >      }
> > >  }
> > > @@ -309,11 +309,11 @@ static int virtio_net_set_vnet_endian_one(VirtIODevice *vdev,
> > >  }
> > >
> > >  static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> > > -                                       int queues, bool enable)
> > > +                                       int qps, bool enable)
> > >  {
> > >      int i;
> > >
> > > -    for (i = 0; i < queues; i++) {
> > > +    for (i = 0; i < qps; i++) {
> > >          if (virtio_net_set_vnet_endian_one(vdev, ncs[i].peer, enable) < 0 &&
> > >              enable) {
> > >              while (--i >= 0) {
> > > @@ -330,7 +330,7 @@ static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> > >  static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> > >  {
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > -    int queues = n->multiqueue ? n->max_queues : 1;
> > > +    int qps = n->multiqueue ? n->max_qps : 1;
> > >
> > >      if (virtio_net_started(n, status)) {
> > >          /* Before using the device, we tell the network backend about the
> > > @@ -339,14 +339,14 @@ static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> > >           * virtio-net code.
> > >           */
> > >          n->needs_vnet_hdr_swap = virtio_net_set_vnet_endian(vdev, n->nic->ncs,
> > > -                                                            queues, true);
> > > +                                                            qps, true);
> > >      } else if (virtio_net_started(n, vdev->status)) {
> > >          /* After using the device, we need to reset the network backend to
> > >           * the default (guest native endianness), otherwise the guest may
> > >           * lose network connectivity if it is rebooted into a different
> > >           * endianness.
> > >           */
> > > -        virtio_net_set_vnet_endian(vdev, n->nic->ncs, queues, false);
> > > +        virtio_net_set_vnet_endian(vdev, n->nic->ncs, qps, false);
> > >      }
> > >  }
> > >
> > > @@ -368,12 +368,12 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
> > >      virtio_net_vnet_endian_status(n, status);
> > >      virtio_net_vhost_status(n, status);
> > >
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > >          NetClientState *ncs = qemu_get_subqueue(n->nic, i);
> > >          bool queue_started;
> > >          q = &n->vqs[i];
> > >
> > > -        if ((!n->multiqueue && i != 0) || i >= n->curr_queues) {
> > > +        if ((!n->multiqueue && i != 0) || i >= n->curr_qps) {
> > >              queue_status = 0;
> > >          } else {
> > >              queue_status = status;
> > > @@ -540,7 +540,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> > >      n->nouni = 0;
> > >      n->nobcast = 0;
> > >      /* multiqueue is disabled by default */
> > > -    n->curr_queues = 1;
> > > +    n->curr_qps = 1;
> > >      timer_del(n->announce_timer.tm);
> > >      n->announce_timer.round = 0;
> > >      n->status &= ~VIRTIO_NET_S_ANNOUNCE;
> > > @@ -556,7 +556,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> > >      memset(n->vlans, 0, MAX_VLAN >> 3);
> > >
> > >      /* Flush any async TX */
> > > -    for (i = 0;  i < n->max_queues; i++) {
> > > +    for (i = 0;  i < n->max_qps; i++) {
> > >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> > >
> > >          if (nc->peer) {
> > > @@ -610,7 +610,7 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs,
> > >              sizeof(struct virtio_net_hdr);
> > >      }
> > >
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > >          nc = qemu_get_subqueue(n->nic, i);
> > >
> > >          if (peer_has_vnet_hdr(n) &&
> > > @@ -655,7 +655,7 @@ static int peer_attach(VirtIONet *n, int index)
> > >          return 0;
> > >      }
> > >
> > > -    if (n->max_queues == 1) {
> > > +    if (n->max_qps == 1) {
> > >          return 0;
> > >      }
> > >
> > > @@ -681,7 +681,7 @@ static int peer_detach(VirtIONet *n, int index)
> > >      return tap_disable(nc->peer);
> > >  }
> > >
> > > -static void virtio_net_set_queues(VirtIONet *n)
> > > +static void virtio_net_set_qps(VirtIONet *n)
> > >  {
> > >      int i;
> > >      int r;
> > > @@ -690,8 +690,8 @@ static void virtio_net_set_queues(VirtIONet *n)
> > >          return;
> > >      }
> > >
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > -        if (i < n->curr_queues) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > > +        if (i < n->curr_qps) {
> > >              r = peer_attach(n, i);
> > >              assert(!r);
> > >          } else {
> > > @@ -920,7 +920,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
> > >          virtio_net_apply_guest_offloads(n);
> > >      }
> > >
> > > -    for (i = 0;  i < n->max_queues; i++) {
> > > +    for (i = 0;  i < n->max_qps; i++) {
> > >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> > >
> > >          if (!get_vhost_net(nc->peer)) {
> > > @@ -1247,7 +1247,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > >      struct virtio_net_rss_config cfg;
> > >      size_t s, offset = 0, size_get;
> > > -    uint16_t queues, i;
> > > +    uint16_t qps, i;
> > >      struct {
> > >          uint16_t us;
> > >          uint8_t b;
> > > @@ -1289,7 +1289,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > >      }
> > >      n->rss_data.default_queue = do_rss ?
> > >          virtio_lduw_p(vdev, &cfg.unclassified_queue) : 0;
> > > -    if (n->rss_data.default_queue >= n->max_queues) {
> > > +    if (n->rss_data.default_queue >= n->max_qps) {
> > >          err_msg = "Invalid default queue";
> > >          err_value = n->rss_data.default_queue;
> > >          goto error;
> > > @@ -1318,14 +1318,14 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > >      size_get = sizeof(temp);
> > >      s = iov_to_buf(iov, iov_cnt, offset, &temp, size_get);
> > >      if (s != size_get) {
> > > -        err_msg = "Can't get queues";
> > > +        err_msg = "Can't get qps";
> > >          err_value = (uint32_t)s;
> > >          goto error;
> > >      }
> > > -    queues = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_queues;
> > > -    if (queues == 0 || queues > n->max_queues) {
> > > -        err_msg = "Invalid number of queues";
> > > -        err_value = queues;
> > > +    qps = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_qps;
> > > +    if (qps == 0 || qps > n->max_qps) {
> > > +        err_msg = "Invalid number of qps";
> > > +        err_value = qps;
> > >          goto error;
> > >      }
> > >      if (temp.b > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
> > > @@ -1340,7 +1340,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > >      }
> > >      if (!temp.b && !n->rss_data.hash_types) {
> > >          virtio_net_disable_rss(n);
> > > -        return queues;
> > > +        return qps;
> > >      }
> > >      offset += size_get;
> > >      size_get = temp.b;
> > > @@ -1373,7 +1373,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > >      trace_virtio_net_rss_enable(n->rss_data.hash_types,
> > >                                  n->rss_data.indirections_len,
> > >                                  temp.b);
> > > -    return queues;
> > > +    return qps;
> > >  error:
> > >      trace_virtio_net_rss_error(err_msg, err_value);
> > >      virtio_net_disable_rss(n);
> > > @@ -1384,15 +1384,15 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> > >                                  struct iovec *iov, unsigned int iov_cnt)
> > >  {
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > -    uint16_t queues;
> > > +    uint16_t qps;
> > >
> > >      virtio_net_disable_rss(n);
> > >      if (cmd == VIRTIO_NET_CTRL_MQ_HASH_CONFIG) {
> > > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > > -        return queues ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> > > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > > +        return qps ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> > >      }
> > >      if (cmd == VIRTIO_NET_CTRL_MQ_RSS_CONFIG) {
> > > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, true);
> > > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, true);
> > >      } else if (cmd == VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET) {
> > >          struct virtio_net_ctrl_mq mq;
> > >          size_t s;
> > > @@ -1403,24 +1403,24 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> > >          if (s != sizeof(mq)) {
> > >              return VIRTIO_NET_ERR;
> > >          }
> > > -        queues = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> > > +        qps = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> > >
> > >      } else {
> > >          return VIRTIO_NET_ERR;
> > >      }
> > >
> > > -    if (queues < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > > -        queues > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > > -        queues > n->max_queues ||
> > > +    if (qps < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > > +        qps > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > > +        qps > n->max_qps ||
> > >          !n->multiqueue) {
> > >          return VIRTIO_NET_ERR;
> > >      }
> > >
> > > -    n->curr_queues = queues;
> > > -    /* stop the backend before changing the number of queues to avoid handling a
> > > +    n->curr_qps = qps;
> > > +    /* stop the backend before changing the number of qps to avoid handling a
> > >       * disabled queue */
> > >      virtio_net_set_status(vdev, vdev->status);
> > > -    virtio_net_set_queues(n);
> > > +    virtio_net_set_qps(n);
> > >
> > >      return VIRTIO_NET_OK;
> > >  }
> > > @@ -1498,7 +1498,7 @@ static bool virtio_net_can_receive(NetClientState *nc)
> > >          return false;
> > >      }
> > >
> > > -    if (nc->queue_index >= n->curr_queues) {
> > > +    if (nc->queue_index >= n->curr_qps) {
> > >          return false;
> > >      }
> > >
> > > @@ -2753,11 +2753,11 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
> > >      virtio_del_queue(vdev, index * 2 + 1);
> > >  }
> > >
> > > -static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> > > +static void virtio_net_change_num_qps(VirtIONet *n, int new_max_qps)
> > >  {
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > >      int old_num_queues = virtio_get_num_queues(vdev);
> > > -    int new_num_queues = new_max_queues * 2 + 1;
> > > +    int new_num_queues = new_max_qps * 2 + 1;
> > >      int i;
> > >
> > >      assert(old_num_queues >= 3);
> > > @@ -2790,12 +2790,12 @@ static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> > >
> > >  static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
> > >  {
> > > -    int max = multiqueue ? n->max_queues : 1;
> > > +    int max = multiqueue ? n->max_qps : 1;
> > >
> > >      n->multiqueue = multiqueue;
> > > -    virtio_net_change_num_queues(n, max);
> > > +    virtio_net_change_num_qps(n, max);
> > >
> > > -    virtio_net_set_queues(n);
> > > +    virtio_net_set_qps(n);
> > >  }
> > >
> > >  static int virtio_net_post_load_device(void *opaque, int version_id)
> > > @@ -2828,7 +2828,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> > >       */
> > >      n->saved_guest_offloads = n->curr_guest_offloads;
> > >
> > > -    virtio_net_set_queues(n);
> > > +    virtio_net_set_qps(n);
> > >
> > >      /* Find the first multicast entry in the saved MAC filter */
> > >      for (i = 0; i < n->mac_table.in_use; i++) {
> > > @@ -2841,7 +2841,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> > >      /* nc.link_down can't be migrated, so infer link_down according
> > >       * to link status bit in n->status */
> > >      link_down = (n->status & VIRTIO_NET_S_LINK_UP) == 0;
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > >          qemu_get_subqueue(n->nic, i)->link_down = link_down;
> > >      }
> > >
> > > @@ -2906,9 +2906,9 @@ static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
> > >     },
> > >  };
> > >
> > > -static bool max_queues_gt_1(void *opaque, int version_id)
> > > +static bool max_qps_gt_1(void *opaque, int version_id)
> > >  {
> > > -    return VIRTIO_NET(opaque)->max_queues > 1;
> > > +    return VIRTIO_NET(opaque)->max_qps > 1;
> > >  }
> > >
> > >  static bool has_ctrl_guest_offloads(void *opaque, int version_id)
> > > @@ -2933,13 +2933,13 @@ static bool mac_table_doesnt_fit(void *opaque, int version_id)
> > >  struct VirtIONetMigTmp {
> > >      VirtIONet      *parent;
> > >      VirtIONetQueue *vqs_1;
> > > -    uint16_t        curr_queues_1;
> > > +    uint16_t        curr_qps_1;
> > >      uint8_t         has_ufo;
> > >      uint32_t        has_vnet_hdr;
> > >  };
> > >
> > >  /* The 2nd and subsequent tx_waiting flags are loaded later than
> > > - * the 1st entry in the queues and only if there's more than one
> > > + * the 1st entry in the qps and only if there's more than one
> > >   * entry.  We use the tmp mechanism to calculate a temporary
> > >   * pointer and count and also validate the count.
> > >   */
> > > @@ -2949,9 +2949,9 @@ static int virtio_net_tx_waiting_pre_save(void *opaque)
> > >      struct VirtIONetMigTmp *tmp = opaque;
> > >
> > >      tmp->vqs_1 = tmp->parent->vqs + 1;
> > > -    tmp->curr_queues_1 = tmp->parent->curr_queues - 1;
> > > -    if (tmp->parent->curr_queues == 0) {
> > > -        tmp->curr_queues_1 = 0;
> > > +    tmp->curr_qps_1 = tmp->parent->curr_qps - 1;
> > > +    if (tmp->parent->curr_qps == 0) {
> > > +        tmp->curr_qps_1 = 0;
> > >      }
> > >
> > >      return 0;
> > > @@ -2964,9 +2964,9 @@ static int virtio_net_tx_waiting_pre_load(void *opaque)
> > >      /* Reuse the pointer setup from save */
> > >      virtio_net_tx_waiting_pre_save(opaque);
> > >
> > > -    if (tmp->parent->curr_queues > tmp->parent->max_queues) {
> > > -        error_report("virtio-net: curr_queues %x > max_queues %x",
> > > -            tmp->parent->curr_queues, tmp->parent->max_queues);
> > > +    if (tmp->parent->curr_qps > tmp->parent->max_qps) {
> > > +        error_report("virtio-net: curr_qps %x > max_qps %x",
> > > +            tmp->parent->curr_qps, tmp->parent->max_qps);
> > >
> > >          return -EINVAL;
> > >      }
> > > @@ -2980,7 +2980,7 @@ static const VMStateDescription vmstate_virtio_net_tx_waiting = {
> > >      .pre_save  = virtio_net_tx_waiting_pre_save,
> > >      .fields    = (VMStateField[]) {
> > >          VMSTATE_STRUCT_VARRAY_POINTER_UINT16(vqs_1, struct VirtIONetMigTmp,
> > > -                                     curr_queues_1,
> > > +                                     curr_qps_1,
> > >                                       vmstate_virtio_net_queue_tx_waiting,
> > >                                       struct VirtIONetQueue),
> > >          VMSTATE_END_OF_LIST()
> > > @@ -3122,9 +3122,9 @@ static const VMStateDescription vmstate_virtio_net_device = {
> > >          VMSTATE_UINT8(nobcast, VirtIONet),
> > >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> > >                           vmstate_virtio_net_has_ufo),
> > > -        VMSTATE_SINGLE_TEST(max_queues, VirtIONet, max_queues_gt_1, 0,
> > > +        VMSTATE_SINGLE_TEST(max_qps, VirtIONet, max_qps_gt_1, 0,
> > >                              vmstate_info_uint16_equal, uint16_t),
> > > -        VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
> > > +        VMSTATE_UINT16_TEST(curr_qps, VirtIONet, max_qps_gt_1),
> > >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> > >                           vmstate_virtio_net_tx_waiting),
> > >          VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
> > > @@ -3368,16 +3368,16 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > >          return;
> > >      }
> > >
> > > -    n->max_queues = MAX(n->nic_conf.peers.queues, 1);
> > > -    if (n->max_queues * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > > -        error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
> > > +    n->max_qps = MAX(n->nic_conf.peers.queues, 1);
> > > +    if (n->max_qps * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > > +        error_setg(errp, "Invalid number of qps (= %" PRIu32 "), "
> > >                     "must be a positive integer less than %d.",
> > > -                   n->max_queues, (VIRTIO_QUEUE_MAX - 1) / 2);
> > > +                   n->max_qps, (VIRTIO_QUEUE_MAX - 1) / 2);
> > >          virtio_cleanup(vdev);
> > >          return;
> > >      }
> > > -    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_queues);
> > > -    n->curr_queues = 1;
> > > +    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_qps);
> > > +    n->curr_qps = 1;
> > >      n->tx_timeout = n->net_conf.txtimer;
> > >
> > >      if (n->net_conf.tx && strcmp(n->net_conf.tx, "timer")
> > > @@ -3391,7 +3391,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > >      n->net_conf.tx_queue_size = MIN(virtio_net_max_tx_queue_size(n),
> > >                                      n->net_conf.tx_queue_size);
> > >
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > >          virtio_net_add_queue(n, i);
> > >      }
> > >
> > > @@ -3415,13 +3415,13 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > >                                object_get_typename(OBJECT(dev)), dev->id, n);
> > >      }
> > >
> > > -    for (i = 0; i < n->max_queues; i++) {
> > > +    for (i = 0; i < n->max_qps; i++) {
> > >          n->nic->ncs[i].do_not_pad = true;
> > >      }
> > >
> > >      peer_test_vnet_hdr(n);
> > >      if (peer_has_vnet_hdr(n)) {
> > > -        for (i = 0; i < n->max_queues; i++) {
> > > +        for (i = 0; i < n->max_qps; i++) {
> > >              qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true);
> > >          }
> > >          n->host_hdr_len = sizeof(struct virtio_net_hdr);
> > > @@ -3463,7 +3463,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> > >  {
> > >      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> > >      VirtIONet *n = VIRTIO_NET(dev);
> > > -    int i, max_queues;
> > > +    int i, max_qps;
> > >
> > >      if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) {
> > >          virtio_net_unload_ebpf(n);
> > > @@ -3485,12 +3485,12 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> > >          remove_migration_state_change_notifier(&n->migration_state);
> > >      }
> > >
> > > -    max_queues = n->multiqueue ? n->max_queues : 1;
> > > -    for (i = 0; i < max_queues; i++) {
> > > +    max_qps = n->multiqueue ? n->max_qps : 1;
> > > +    for (i = 0; i < max_qps; i++) {
> > >          virtio_net_del_queue(n, i);
> > >      }
> > >      /* delete also control vq */
> > > -    virtio_del_queue(vdev, max_queues * 2);
> > > +    virtio_del_queue(vdev, max_qps * 2);
> > >      qemu_announce_timer_del(&n->announce_timer, false);
> > >      g_free(n->vqs);
> > >      qemu_del_nic(n->nic);
> > > diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
> > > index 824a69c23f..a9b6dc252e 100644
> > > --- a/include/hw/virtio/virtio-net.h
> > > +++ b/include/hw/virtio/virtio-net.h
> > > @@ -194,8 +194,8 @@ struct VirtIONet {
> > >      NICConf nic_conf;
> > >      DeviceState *qdev;
> > >      int multiqueue;
> > > -    uint16_t max_queues;
> > > -    uint16_t curr_queues;
> > > +    uint16_t max_qps;
> > > +    uint16_t curr_qps;
> > >      size_t config_size;
> > >      char *netclient_name;
> > >      char *netclient_type;
> > > --
> > > 2.25.1
> >


Re: [PATCH V2 18/21] virito-net: use "qps" instead of "queues" when possible
Posted by Jason Wang 4 years, 5 months ago
On Mon, Sep 6, 2021 at 1:49 PM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Mon, Sep 06, 2021 at 11:42:41AM +0800, Jason Wang wrote:
> > On Sun, Sep 5, 2021 at 4:42 AM Michael S. Tsirkin <mst@redhat.com> wrote:
> > >
> > > On Fri, Sep 03, 2021 at 05:10:28PM +0800, Jason Wang wrote:
> > > > Most of the time, "queues" really means queue pairs. So this patch
> > > > switch to use "qps" to avoid confusion.
> > > >
> > > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > >
> > > This is far from a standard terminology, except for the people
> > > like me, who's mind is permanently warped by close contact with infiniband
> > > hardware. Please eschew abbreviation, just say queue_pairs.
> >
> > Ok, I will do that in the next version.
> >
> > Thanks
>
>
> Also, s/virito/virtio/
> Happens to me too, often enough that I have an abbreviation set up in
> vimrc.

Let me try to set it up.

Thanks

>
> > >
> > > > ---
> > > >  hw/net/vhost_net.c             |   6 +-
> > > >  hw/net/virtio-net.c            | 150 ++++++++++++++++-----------------
> > > >  include/hw/virtio/virtio-net.h |   4 +-
> > > >  3 files changed, 80 insertions(+), 80 deletions(-)
> > > >
> > > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
> > > > index 7e0b60b4d9..b40fdfa625 100644
> > > > --- a/hw/net/vhost_net.c
> > > > +++ b/hw/net/vhost_net.c
> > > > @@ -337,7 +337,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> > > >          if (i < data_qps) {
> > > >              peer = qemu_get_peer(ncs, i);
> > > >          } else { /* Control Virtqueue */
> > > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > > >          }
> > > >
> > > >          net = get_vhost_net(peer);
> > > > @@ -362,7 +362,7 @@ int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> > > >          if (i < data_qps) {
> > > >              peer = qemu_get_peer(ncs, i);
> > > >          } else {
> > > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > > >          }
> > > >          r = vhost_net_start_one(get_vhost_net(peer), dev);
> > > >
> > > > @@ -412,7 +412,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
> > > >          if (i < data_qps) {
> > > >              peer = qemu_get_peer(ncs, i);
> > > >          } else {
> > > > -            peer = qemu_get_peer(ncs, n->max_queues);
> > > > +            peer = qemu_get_peer(ncs, n->max_qps);
> > > >          }
> > > >          vhost_net_stop_one(get_vhost_net(peer), dev);
> > > >      }
> > > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> > > > index 8fccbaa44c..0a5d9862ec 100644
> > > > --- a/hw/net/virtio-net.c
> > > > +++ b/hw/net/virtio-net.c
> > > > @@ -54,7 +54,7 @@
> > > >  #define VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE 256
> > > >  #define VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE 256
> > > >
> > > > -/* for now, only allow larger queues; with virtio-1, guest can downsize */
> > > > +/* for now, only allow larger qps; with virtio-1, guest can downsize */
> > > >  #define VIRTIO_NET_RX_QUEUE_MIN_SIZE VIRTIO_NET_RX_QUEUE_DEFAULT_SIZE
> > > >  #define VIRTIO_NET_TX_QUEUE_MIN_SIZE VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE
> > > >
> > > > @@ -131,7 +131,7 @@ static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)
> > > >      int ret = 0;
> > > >      memset(&netcfg, 0 , sizeof(struct virtio_net_config));
> > > >      virtio_stw_p(vdev, &netcfg.status, n->status);
> > > > -    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_queues);
> > > > +    virtio_stw_p(vdev, &netcfg.max_virtqueue_pairs, n->max_qps);
> > > >      virtio_stw_p(vdev, &netcfg.mtu, n->net_conf.mtu);
> > > >      memcpy(netcfg.mac, n->mac, ETH_ALEN);
> > > >      virtio_stl_p(vdev, &netcfg.speed, n->net_conf.speed);
> > > > @@ -243,7 +243,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > > >  {
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > >      NetClientState *nc = qemu_get_queue(n->nic);
> > > > -    int queues = n->multiqueue ? n->max_queues : 1;
> > > > +    int qps = n->multiqueue ? n->max_qps : 1;
> > > >
> > > >      if (!get_vhost_net(nc->peer)) {
> > > >          return;
> > > > @@ -266,7 +266,7 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > > >          /* Any packets outstanding? Purge them to avoid touching rings
> > > >           * when vhost is running.
> > > >           */
> > > > -        for (i = 0;  i < queues; i++) {
> > > > +        for (i = 0;  i < qps; i++) {
> > > >              NetClientState *qnc = qemu_get_subqueue(n->nic, i);
> > > >
> > > >              /* Purge both directions: TX and RX. */
> > > > @@ -285,14 +285,14 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
> > > >          }
> > > >
> > > >          n->vhost_started = 1;
> > > > -        r = vhost_net_start(vdev, n->nic->ncs, queues, 0);
> > > > +        r = vhost_net_start(vdev, n->nic->ncs, qps, 0);
> > > >          if (r < 0) {
> > > >              error_report("unable to start vhost net: %d: "
> > > >                           "falling back on userspace virtio", -r);
> > > >              n->vhost_started = 0;
> > > >          }
> > > >      } else {
> > > > -        vhost_net_stop(vdev, n->nic->ncs, queues, 0);
> > > > +        vhost_net_stop(vdev, n->nic->ncs, qps, 0);
> > > >          n->vhost_started = 0;
> > > >      }
> > > >  }
> > > > @@ -309,11 +309,11 @@ static int virtio_net_set_vnet_endian_one(VirtIODevice *vdev,
> > > >  }
> > > >
> > > >  static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> > > > -                                       int queues, bool enable)
> > > > +                                       int qps, bool enable)
> > > >  {
> > > >      int i;
> > > >
> > > > -    for (i = 0; i < queues; i++) {
> > > > +    for (i = 0; i < qps; i++) {
> > > >          if (virtio_net_set_vnet_endian_one(vdev, ncs[i].peer, enable) < 0 &&
> > > >              enable) {
> > > >              while (--i >= 0) {
> > > > @@ -330,7 +330,7 @@ static bool virtio_net_set_vnet_endian(VirtIODevice *vdev, NetClientState *ncs,
> > > >  static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> > > >  {
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > > -    int queues = n->multiqueue ? n->max_queues : 1;
> > > > +    int qps = n->multiqueue ? n->max_qps : 1;
> > > >
> > > >      if (virtio_net_started(n, status)) {
> > > >          /* Before using the device, we tell the network backend about the
> > > > @@ -339,14 +339,14 @@ static void virtio_net_vnet_endian_status(VirtIONet *n, uint8_t status)
> > > >           * virtio-net code.
> > > >           */
> > > >          n->needs_vnet_hdr_swap = virtio_net_set_vnet_endian(vdev, n->nic->ncs,
> > > > -                                                            queues, true);
> > > > +                                                            qps, true);
> > > >      } else if (virtio_net_started(n, vdev->status)) {
> > > >          /* After using the device, we need to reset the network backend to
> > > >           * the default (guest native endianness), otherwise the guest may
> > > >           * lose network connectivity if it is rebooted into a different
> > > >           * endianness.
> > > >           */
> > > > -        virtio_net_set_vnet_endian(vdev, n->nic->ncs, queues, false);
> > > > +        virtio_net_set_vnet_endian(vdev, n->nic->ncs, qps, false);
> > > >      }
> > > >  }
> > > >
> > > > @@ -368,12 +368,12 @@ static void virtio_net_set_status(struct VirtIODevice *vdev, uint8_t status)
> > > >      virtio_net_vnet_endian_status(n, status);
> > > >      virtio_net_vhost_status(n, status);
> > > >
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > >          NetClientState *ncs = qemu_get_subqueue(n->nic, i);
> > > >          bool queue_started;
> > > >          q = &n->vqs[i];
> > > >
> > > > -        if ((!n->multiqueue && i != 0) || i >= n->curr_queues) {
> > > > +        if ((!n->multiqueue && i != 0) || i >= n->curr_qps) {
> > > >              queue_status = 0;
> > > >          } else {
> > > >              queue_status = status;
> > > > @@ -540,7 +540,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> > > >      n->nouni = 0;
> > > >      n->nobcast = 0;
> > > >      /* multiqueue is disabled by default */
> > > > -    n->curr_queues = 1;
> > > > +    n->curr_qps = 1;
> > > >      timer_del(n->announce_timer.tm);
> > > >      n->announce_timer.round = 0;
> > > >      n->status &= ~VIRTIO_NET_S_ANNOUNCE;
> > > > @@ -556,7 +556,7 @@ static void virtio_net_reset(VirtIODevice *vdev)
> > > >      memset(n->vlans, 0, MAX_VLAN >> 3);
> > > >
> > > >      /* Flush any async TX */
> > > > -    for (i = 0;  i < n->max_queues; i++) {
> > > > +    for (i = 0;  i < n->max_qps; i++) {
> > > >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> > > >
> > > >          if (nc->peer) {
> > > > @@ -610,7 +610,7 @@ static void virtio_net_set_mrg_rx_bufs(VirtIONet *n, int mergeable_rx_bufs,
> > > >              sizeof(struct virtio_net_hdr);
> > > >      }
> > > >
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > >          nc = qemu_get_subqueue(n->nic, i);
> > > >
> > > >          if (peer_has_vnet_hdr(n) &&
> > > > @@ -655,7 +655,7 @@ static int peer_attach(VirtIONet *n, int index)
> > > >          return 0;
> > > >      }
> > > >
> > > > -    if (n->max_queues == 1) {
> > > > +    if (n->max_qps == 1) {
> > > >          return 0;
> > > >      }
> > > >
> > > > @@ -681,7 +681,7 @@ static int peer_detach(VirtIONet *n, int index)
> > > >      return tap_disable(nc->peer);
> > > >  }
> > > >
> > > > -static void virtio_net_set_queues(VirtIONet *n)
> > > > +static void virtio_net_set_qps(VirtIONet *n)
> > > >  {
> > > >      int i;
> > > >      int r;
> > > > @@ -690,8 +690,8 @@ static void virtio_net_set_queues(VirtIONet *n)
> > > >          return;
> > > >      }
> > > >
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > -        if (i < n->curr_queues) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > > +        if (i < n->curr_qps) {
> > > >              r = peer_attach(n, i);
> > > >              assert(!r);
> > > >          } else {
> > > > @@ -920,7 +920,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
> > > >          virtio_net_apply_guest_offloads(n);
> > > >      }
> > > >
> > > > -    for (i = 0;  i < n->max_queues; i++) {
> > > > +    for (i = 0;  i < n->max_qps; i++) {
> > > >          NetClientState *nc = qemu_get_subqueue(n->nic, i);
> > > >
> > > >          if (!get_vhost_net(nc->peer)) {
> > > > @@ -1247,7 +1247,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > >      struct virtio_net_rss_config cfg;
> > > >      size_t s, offset = 0, size_get;
> > > > -    uint16_t queues, i;
> > > > +    uint16_t qps, i;
> > > >      struct {
> > > >          uint16_t us;
> > > >          uint8_t b;
> > > > @@ -1289,7 +1289,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > > >      }
> > > >      n->rss_data.default_queue = do_rss ?
> > > >          virtio_lduw_p(vdev, &cfg.unclassified_queue) : 0;
> > > > -    if (n->rss_data.default_queue >= n->max_queues) {
> > > > +    if (n->rss_data.default_queue >= n->max_qps) {
> > > >          err_msg = "Invalid default queue";
> > > >          err_value = n->rss_data.default_queue;
> > > >          goto error;
> > > > @@ -1318,14 +1318,14 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > > >      size_get = sizeof(temp);
> > > >      s = iov_to_buf(iov, iov_cnt, offset, &temp, size_get);
> > > >      if (s != size_get) {
> > > > -        err_msg = "Can't get queues";
> > > > +        err_msg = "Can't get qps";
> > > >          err_value = (uint32_t)s;
> > > >          goto error;
> > > >      }
> > > > -    queues = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_queues;
> > > > -    if (queues == 0 || queues > n->max_queues) {
> > > > -        err_msg = "Invalid number of queues";
> > > > -        err_value = queues;
> > > > +    qps = do_rss ? virtio_lduw_p(vdev, &temp.us) : n->curr_qps;
> > > > +    if (qps == 0 || qps > n->max_qps) {
> > > > +        err_msg = "Invalid number of qps";
> > > > +        err_value = qps;
> > > >          goto error;
> > > >      }
> > > >      if (temp.b > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
> > > > @@ -1340,7 +1340,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > > >      }
> > > >      if (!temp.b && !n->rss_data.hash_types) {
> > > >          virtio_net_disable_rss(n);
> > > > -        return queues;
> > > > +        return qps;
> > > >      }
> > > >      offset += size_get;
> > > >      size_get = temp.b;
> > > > @@ -1373,7 +1373,7 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n,
> > > >      trace_virtio_net_rss_enable(n->rss_data.hash_types,
> > > >                                  n->rss_data.indirections_len,
> > > >                                  temp.b);
> > > > -    return queues;
> > > > +    return qps;
> > > >  error:
> > > >      trace_virtio_net_rss_error(err_msg, err_value);
> > > >      virtio_net_disable_rss(n);
> > > > @@ -1384,15 +1384,15 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> > > >                                  struct iovec *iov, unsigned int iov_cnt)
> > > >  {
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > > -    uint16_t queues;
> > > > +    uint16_t qps;
> > > >
> > > >      virtio_net_disable_rss(n);
> > > >      if (cmd == VIRTIO_NET_CTRL_MQ_HASH_CONFIG) {
> > > > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > > > -        return queues ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> > > > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, false);
> > > > +        return qps ? VIRTIO_NET_OK : VIRTIO_NET_ERR;
> > > >      }
> > > >      if (cmd == VIRTIO_NET_CTRL_MQ_RSS_CONFIG) {
> > > > -        queues = virtio_net_handle_rss(n, iov, iov_cnt, true);
> > > > +        qps = virtio_net_handle_rss(n, iov, iov_cnt, true);
> > > >      } else if (cmd == VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET) {
> > > >          struct virtio_net_ctrl_mq mq;
> > > >          size_t s;
> > > > @@ -1403,24 +1403,24 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
> > > >          if (s != sizeof(mq)) {
> > > >              return VIRTIO_NET_ERR;
> > > >          }
> > > > -        queues = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> > > > +        qps = virtio_lduw_p(vdev, &mq.virtqueue_pairs);
> > > >
> > > >      } else {
> > > >          return VIRTIO_NET_ERR;
> > > >      }
> > > >
> > > > -    if (queues < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > > > -        queues > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > > > -        queues > n->max_queues ||
> > > > +    if (qps < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
> > > > +        qps > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
> > > > +        qps > n->max_qps ||
> > > >          !n->multiqueue) {
> > > >          return VIRTIO_NET_ERR;
> > > >      }
> > > >
> > > > -    n->curr_queues = queues;
> > > > -    /* stop the backend before changing the number of queues to avoid handling a
> > > > +    n->curr_qps = qps;
> > > > +    /* stop the backend before changing the number of qps to avoid handling a
> > > >       * disabled queue */
> > > >      virtio_net_set_status(vdev, vdev->status);
> > > > -    virtio_net_set_queues(n);
> > > > +    virtio_net_set_qps(n);
> > > >
> > > >      return VIRTIO_NET_OK;
> > > >  }
> > > > @@ -1498,7 +1498,7 @@ static bool virtio_net_can_receive(NetClientState *nc)
> > > >          return false;
> > > >      }
> > > >
> > > > -    if (nc->queue_index >= n->curr_queues) {
> > > > +    if (nc->queue_index >= n->curr_qps) {
> > > >          return false;
> > > >      }
> > > >
> > > > @@ -2753,11 +2753,11 @@ static void virtio_net_del_queue(VirtIONet *n, int index)
> > > >      virtio_del_queue(vdev, index * 2 + 1);
> > > >  }
> > > >
> > > > -static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> > > > +static void virtio_net_change_num_qps(VirtIONet *n, int new_max_qps)
> > > >  {
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(n);
> > > >      int old_num_queues = virtio_get_num_queues(vdev);
> > > > -    int new_num_queues = new_max_queues * 2 + 1;
> > > > +    int new_num_queues = new_max_qps * 2 + 1;
> > > >      int i;
> > > >
> > > >      assert(old_num_queues >= 3);
> > > > @@ -2790,12 +2790,12 @@ static void virtio_net_change_num_queues(VirtIONet *n, int new_max_queues)
> > > >
> > > >  static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
> > > >  {
> > > > -    int max = multiqueue ? n->max_queues : 1;
> > > > +    int max = multiqueue ? n->max_qps : 1;
> > > >
> > > >      n->multiqueue = multiqueue;
> > > > -    virtio_net_change_num_queues(n, max);
> > > > +    virtio_net_change_num_qps(n, max);
> > > >
> > > > -    virtio_net_set_queues(n);
> > > > +    virtio_net_set_qps(n);
> > > >  }
> > > >
> > > >  static int virtio_net_post_load_device(void *opaque, int version_id)
> > > > @@ -2828,7 +2828,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> > > >       */
> > > >      n->saved_guest_offloads = n->curr_guest_offloads;
> > > >
> > > > -    virtio_net_set_queues(n);
> > > > +    virtio_net_set_qps(n);
> > > >
> > > >      /* Find the first multicast entry in the saved MAC filter */
> > > >      for (i = 0; i < n->mac_table.in_use; i++) {
> > > > @@ -2841,7 +2841,7 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
> > > >      /* nc.link_down can't be migrated, so infer link_down according
> > > >       * to link status bit in n->status */
> > > >      link_down = (n->status & VIRTIO_NET_S_LINK_UP) == 0;
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > >          qemu_get_subqueue(n->nic, i)->link_down = link_down;
> > > >      }
> > > >
> > > > @@ -2906,9 +2906,9 @@ static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
> > > >     },
> > > >  };
> > > >
> > > > -static bool max_queues_gt_1(void *opaque, int version_id)
> > > > +static bool max_qps_gt_1(void *opaque, int version_id)
> > > >  {
> > > > -    return VIRTIO_NET(opaque)->max_queues > 1;
> > > > +    return VIRTIO_NET(opaque)->max_qps > 1;
> > > >  }
> > > >
> > > >  static bool has_ctrl_guest_offloads(void *opaque, int version_id)
> > > > @@ -2933,13 +2933,13 @@ static bool mac_table_doesnt_fit(void *opaque, int version_id)
> > > >  struct VirtIONetMigTmp {
> > > >      VirtIONet      *parent;
> > > >      VirtIONetQueue *vqs_1;
> > > > -    uint16_t        curr_queues_1;
> > > > +    uint16_t        curr_qps_1;
> > > >      uint8_t         has_ufo;
> > > >      uint32_t        has_vnet_hdr;
> > > >  };
> > > >
> > > >  /* The 2nd and subsequent tx_waiting flags are loaded later than
> > > > - * the 1st entry in the queues and only if there's more than one
> > > > + * the 1st entry in the qps and only if there's more than one
> > > >   * entry.  We use the tmp mechanism to calculate a temporary
> > > >   * pointer and count and also validate the count.
> > > >   */
> > > > @@ -2949,9 +2949,9 @@ static int virtio_net_tx_waiting_pre_save(void *opaque)
> > > >      struct VirtIONetMigTmp *tmp = opaque;
> > > >
> > > >      tmp->vqs_1 = tmp->parent->vqs + 1;
> > > > -    tmp->curr_queues_1 = tmp->parent->curr_queues - 1;
> > > > -    if (tmp->parent->curr_queues == 0) {
> > > > -        tmp->curr_queues_1 = 0;
> > > > +    tmp->curr_qps_1 = tmp->parent->curr_qps - 1;
> > > > +    if (tmp->parent->curr_qps == 0) {
> > > > +        tmp->curr_qps_1 = 0;
> > > >      }
> > > >
> > > >      return 0;
> > > > @@ -2964,9 +2964,9 @@ static int virtio_net_tx_waiting_pre_load(void *opaque)
> > > >      /* Reuse the pointer setup from save */
> > > >      virtio_net_tx_waiting_pre_save(opaque);
> > > >
> > > > -    if (tmp->parent->curr_queues > tmp->parent->max_queues) {
> > > > -        error_report("virtio-net: curr_queues %x > max_queues %x",
> > > > -            tmp->parent->curr_queues, tmp->parent->max_queues);
> > > > +    if (tmp->parent->curr_qps > tmp->parent->max_qps) {
> > > > +        error_report("virtio-net: curr_qps %x > max_qps %x",
> > > > +            tmp->parent->curr_qps, tmp->parent->max_qps);
> > > >
> > > >          return -EINVAL;
> > > >      }
> > > > @@ -2980,7 +2980,7 @@ static const VMStateDescription vmstate_virtio_net_tx_waiting = {
> > > >      .pre_save  = virtio_net_tx_waiting_pre_save,
> > > >      .fields    = (VMStateField[]) {
> > > >          VMSTATE_STRUCT_VARRAY_POINTER_UINT16(vqs_1, struct VirtIONetMigTmp,
> > > > -                                     curr_queues_1,
> > > > +                                     curr_qps_1,
> > > >                                       vmstate_virtio_net_queue_tx_waiting,
> > > >                                       struct VirtIONetQueue),
> > > >          VMSTATE_END_OF_LIST()
> > > > @@ -3122,9 +3122,9 @@ static const VMStateDescription vmstate_virtio_net_device = {
> > > >          VMSTATE_UINT8(nobcast, VirtIONet),
> > > >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> > > >                           vmstate_virtio_net_has_ufo),
> > > > -        VMSTATE_SINGLE_TEST(max_queues, VirtIONet, max_queues_gt_1, 0,
> > > > +        VMSTATE_SINGLE_TEST(max_qps, VirtIONet, max_qps_gt_1, 0,
> > > >                              vmstate_info_uint16_equal, uint16_t),
> > > > -        VMSTATE_UINT16_TEST(curr_queues, VirtIONet, max_queues_gt_1),
> > > > +        VMSTATE_UINT16_TEST(curr_qps, VirtIONet, max_qps_gt_1),
> > > >          VMSTATE_WITH_TMP(VirtIONet, struct VirtIONetMigTmp,
> > > >                           vmstate_virtio_net_tx_waiting),
> > > >          VMSTATE_UINT64_TEST(curr_guest_offloads, VirtIONet,
> > > > @@ -3368,16 +3368,16 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > > >          return;
> > > >      }
> > > >
> > > > -    n->max_queues = MAX(n->nic_conf.peers.queues, 1);
> > > > -    if (n->max_queues * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > > > -        error_setg(errp, "Invalid number of queues (= %" PRIu32 "), "
> > > > +    n->max_qps = MAX(n->nic_conf.peers.queues, 1);
> > > > +    if (n->max_qps * 2 + 1 > VIRTIO_QUEUE_MAX) {
> > > > +        error_setg(errp, "Invalid number of qps (= %" PRIu32 "), "
> > > >                     "must be a positive integer less than %d.",
> > > > -                   n->max_queues, (VIRTIO_QUEUE_MAX - 1) / 2);
> > > > +                   n->max_qps, (VIRTIO_QUEUE_MAX - 1) / 2);
> > > >          virtio_cleanup(vdev);
> > > >          return;
> > > >      }
> > > > -    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_queues);
> > > > -    n->curr_queues = 1;
> > > > +    n->vqs = g_malloc0(sizeof(VirtIONetQueue) * n->max_qps);
> > > > +    n->curr_qps = 1;
> > > >      n->tx_timeout = n->net_conf.txtimer;
> > > >
> > > >      if (n->net_conf.tx && strcmp(n->net_conf.tx, "timer")
> > > > @@ -3391,7 +3391,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > > >      n->net_conf.tx_queue_size = MIN(virtio_net_max_tx_queue_size(n),
> > > >                                      n->net_conf.tx_queue_size);
> > > >
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > >          virtio_net_add_queue(n, i);
> > > >      }
> > > >
> > > > @@ -3415,13 +3415,13 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
> > > >                                object_get_typename(OBJECT(dev)), dev->id, n);
> > > >      }
> > > >
> > > > -    for (i = 0; i < n->max_queues; i++) {
> > > > +    for (i = 0; i < n->max_qps; i++) {
> > > >          n->nic->ncs[i].do_not_pad = true;
> > > >      }
> > > >
> > > >      peer_test_vnet_hdr(n);
> > > >      if (peer_has_vnet_hdr(n)) {
> > > > -        for (i = 0; i < n->max_queues; i++) {
> > > > +        for (i = 0; i < n->max_qps; i++) {
> > > >              qemu_using_vnet_hdr(qemu_get_subqueue(n->nic, i)->peer, true);
> > > >          }
> > > >          n->host_hdr_len = sizeof(struct virtio_net_hdr);
> > > > @@ -3463,7 +3463,7 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> > > >  {
> > > >      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> > > >      VirtIONet *n = VIRTIO_NET(dev);
> > > > -    int i, max_queues;
> > > > +    int i, max_qps;
> > > >
> > > >      if (virtio_has_feature(n->host_features, VIRTIO_NET_F_RSS)) {
> > > >          virtio_net_unload_ebpf(n);
> > > > @@ -3485,12 +3485,12 @@ static void virtio_net_device_unrealize(DeviceState *dev)
> > > >          remove_migration_state_change_notifier(&n->migration_state);
> > > >      }
> > > >
> > > > -    max_queues = n->multiqueue ? n->max_queues : 1;
> > > > -    for (i = 0; i < max_queues; i++) {
> > > > +    max_qps = n->multiqueue ? n->max_qps : 1;
> > > > +    for (i = 0; i < max_qps; i++) {
> > > >          virtio_net_del_queue(n, i);
> > > >      }
> > > >      /* delete also control vq */
> > > > -    virtio_del_queue(vdev, max_queues * 2);
> > > > +    virtio_del_queue(vdev, max_qps * 2);
> > > >      qemu_announce_timer_del(&n->announce_timer, false);
> > > >      g_free(n->vqs);
> > > >      qemu_del_nic(n->nic);
> > > > diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
> > > > index 824a69c23f..a9b6dc252e 100644
> > > > --- a/include/hw/virtio/virtio-net.h
> > > > +++ b/include/hw/virtio/virtio-net.h
> > > > @@ -194,8 +194,8 @@ struct VirtIONet {
> > > >      NICConf nic_conf;
> > > >      DeviceState *qdev;
> > > >      int multiqueue;
> > > > -    uint16_t max_queues;
> > > > -    uint16_t curr_queues;
> > > > +    uint16_t max_qps;
> > > > +    uint16_t curr_qps;
> > > >      size_t config_size;
> > > >      char *netclient_name;
> > > >      char *netclient_type;
> > > > --
> > > > 2.25.1
> > >
>