From 0f841d29ed2f17f54bc4c13ef01f364ef4c633ac Mon Sep 17 00:00:00 2001
From: hkk <hankangkang5@huawei.com>
Date: Sat, 20 Jul 2024 16:52:52 +0800
Subject: [PATCH] vitio_user: modify mbuf index for bond4

---
 src/lstack/core/lstack_virtio.c | 6 ++++--
 src/ltran/ltran_dfx.c           | 4 ++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/lstack/core/lstack_virtio.c b/src/lstack/core/lstack_virtio.c
index 36159c9..f907a99 100644
--- a/src/lstack/core/lstack_virtio.c
+++ b/src/lstack/core/lstack_virtio.c
@@ -205,6 +205,7 @@ static int virtio_port_init(uint16_t port)
     int retval;
     uint16_t rx_queue_num = g_virtio_instance.rx_queue_num;
     uint16_t tx_queue_num = g_virtio_instance.tx_queue_num;
+    int mbuf_total_num = get_global_cfg_params()->num_cpu * get_global_cfg_params()->num_process;
 
     LSTACK_LOG(INFO, LSTACK, "virtio_port_init port= %u rx_queue_num=%u tx_queue_num=%u \n",
                port, rx_queue_num, tx_queue_num);
@@ -226,7 +227,8 @@ static int virtio_port_init(uint16_t port)
     }
 
     for (uint16_t q = 0; q < tx_queue_num; q++) {
-        retval = rte_eth_tx_queue_setup(port, q, VIRTIO_TX_RX_RING_SIZE, rte_eth_dev_socket_id(port), NULL);
+        retval = rte_eth_tx_queue_setup(port, q % mbuf_total_num, VIRTIO_TX_RX_RING_SIZE,
+                                        rte_eth_dev_socket_id(port), NULL);
         if (retval < 0) {
             LSTACK_LOG(ERR, LSTACK, "rte_eth_tx_queue_setup failed (queue %u) retval=%d \n", q, retval);
             return retval;
@@ -341,4 +343,4 @@ bool virtio_distribute_pkg_to_kernel(uint16_t dst_port)
     }
 
     return (port_map_get(dst_port) == 0);
-}
\ No newline at end of file
+}
diff --git a/src/ltran/ltran_dfx.c b/src/ltran/ltran_dfx.c
index 005b09c..1bf5451 100644
--- a/src/ltran/ltran_dfx.c
+++ b/src/ltran/ltran_dfx.c
@@ -1177,11 +1177,11 @@ static void gazelle_print_lstack_stat_virtio(void *buf, const struct gazelle_sta
     struct gazelle_stat_lstack_virtio *virtio = &stat->data.virtio;
     printf("\nStatistics of lstack virtio:\n");
 
-    printf("\nlstack_port_id =%u virtio_port_id =%u rx_queue_num =%u tx_queue_num =%u \n",
+    printf("\nlstack_port_id: %u virtio_port_id: %u rx_queue_num: %u tx_queue_num: %u \n",
            virtio->lstack_port_id, virtio->virtio_port_id, virtio->rx_queue_num,
            virtio->tx_queue_num);
 
-    printf("\n%-8s %-8s  %-8s  %-8s  %-8s\n", "queue_id", "rx_pkg", "rx_drop", "tx_pkg", "tx_drop");
+    printf("\n%-8s  %-8s  %-8s  %-8s  %-8s\n", "queue_id", "rx_pkg", "rx_drop", "tx_pkg", "tx_drop");
     for (int i = 0; i < virtio->rx_queue_num; i++) {
         printf("%-8d  %-8lu  %-8lu  %-8lu  %-8lu\n", i,
                virtio->rx_pkg[i], virtio->rx_drop[i], virtio->tx_pkg[i], virtio->tx_drop[i]);
-- 
2.33.0

