diff options
author | Mohsin Kazmi <sykazmi@cisco.com> | 2021-05-24 18:33:50 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2021-05-27 12:53:02 +0000 |
commit | 005605f9b4db0b98c720fc4a9d8fbd9087a6ad83 (patch) | |
tree | 87474899b2ca8814dca4c0e02d4db45ff7a55c6a /src/vnet/interface | |
parent | dfef64b4cd99a610159a790faa618584157edc63 (diff) |
interface: add tx-queue cli support for new tx infra
Type: improvement
set interface tx-queue tap1 queue 2 threads 1-2
show hardware-interfaces tap1
Name Idx Link Hardware
tap1 2 up tap1
Link speed: unknown
RX Queues:
queue thread mode
0 vpp_wk_1 (2) polling
TX Queues:
queue shared thread(s)
0 no 0
1 no 1
2 yes 1-2
3 no 3
4 no 4
Ethernet address 02:fe:09:3a:48:ff
VIRTIO interface
instance 1
set interface tx-queue tap0 queue 4 threads
show hardware-interfaces tap0
Name Idx Link Hardware
tap0 1 up tap0
Link speed: unknown
RX Queues:
queue thread mode
0 vpp_wk_0 (1) polling
TX Queues:
queue shared thread(s)
0 no 0
1 no 1
2 no 2
3 no 3
4 no
Ethernet address 02:fe:03:6a:66:fc
VIRTIO interface
instance 0
Change-Id: I6154476ec9ff0b14287098529c88a14b779371a5
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Diffstat (limited to 'src/vnet/interface')
-rw-r--r-- | src/vnet/interface/runtime.c | 1 | ||||
-rw-r--r-- | src/vnet/interface/tx_queue.c | 16 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/vnet/interface/runtime.c b/src/vnet/interface/runtime.c index e899d7ab9c8..462f7bbfba7 100644 --- a/src/vnet/interface/runtime.c +++ b/src/vnet/interface/runtime.c @@ -196,7 +196,6 @@ vnet_hw_if_update_runtime_data (vnet_main_t *vnm, u32 hw_if_index) something_changed_on_tx = 1; rt->frame.queue_id = txq->queue_id; rt->frame.shared_queue = txq->shared_queue; - rt->frame.shared_queue = n_threads > 1 ? 1 : 0; rt->n_threads = n_threads; } } diff --git a/src/vnet/interface/tx_queue.c b/src/vnet/interface/tx_queue.c index 3041a58414d..8a6cd9da304 100644 --- a/src/vnet/interface/tx_queue.c +++ b/src/vnet/interface/tx_queue.c @@ -112,8 +112,12 @@ vnet_hw_if_tx_queue_assign_thread (vnet_main_t *vnm, u32 queue_index, vnet_hw_if_tx_queue_t *txq = vnet_hw_if_get_tx_queue (vnm, queue_index); vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, txq->hw_if_index); txq->threads = clib_bitmap_set (txq->threads, thread_index, 1); - log_debug ("assign_thread: interface %v queue-id %u thread %u", hi->name, - txq->queue_id, thread_index); + if (clib_bitmap_count_set_bits (txq->threads) > 1) + txq->shared_queue = 1; + log_debug ( + "assign_thread: interface %v queue-id %u thread %u queue-shared %s", + hi->name, txq->queue_id, thread_index, + (txq->shared_queue == 1 ? "yes" : "no")); } void @@ -123,6 +127,10 @@ vnet_hw_if_tx_queue_unassign_thread (vnet_main_t *vnm, u32 queue_index, vnet_hw_if_tx_queue_t *txq = vnet_hw_if_get_tx_queue (vnm, queue_index); vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, txq->hw_if_index); txq->threads = clib_bitmap_set (txq->threads, thread_index, 0); - log_debug ("unassign_thread: interface %v queue-id %u thread %u", hi->name, - txq->queue_id, thread_index); + if (clib_bitmap_count_set_bits (txq->threads) < 2) + txq->shared_queue = 0; + log_debug ( + "unassign_thread: interface %v queue-id %u thread %u queue-shared %s", + hi->name, txq->queue_id, thread_index, + (txq->shared_queue == 1 ? "yes" : "no")); } |