From 8e3f109a0664404c36bdcb6b5a20d836c1d7d887 Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Thu, 17 Jun 2021 08:22:50 -0700 Subject: [PATCH] interface: unable to to assign tx queue to last worker thread Using the cli "set interface tx-queue", it is not possible to assign tx queue to the last worker thread. The reason is that vdm->first_worker_thread_index is 1. Adding that to clib_bitmap_last_set (bitmap) exceeds vdm->last_worker_thread_index when the CLI specifies the last worker thread. Also make the threads argument optional to enable user to unbind a queue from any thread. Type: fix Signed-off-by: Steven Luong Change-Id: I796259c20f571289c8f5a97b9418caf452d0ab3d --- src/vnet/interface_cli.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/vnet/interface_cli.c b/src/vnet/interface_cli.c index e5d0ab280db..73b275785b8 100644 --- a/src/vnet/interface_cli.c +++ b/src/vnet/interface_cli.c @@ -1822,9 +1822,8 @@ set_hw_interface_tx_queue (u32 hw_if_index, u32 queue_id, uword *bitmap) hw = vnet_get_hw_interface (vnm, hw_if_index); /* highest set bit in bitmap should not exceed last worker thread index */ - thread_index = - clib_bitmap_last_set (bitmap) + vdm->first_worker_thread_index; - if (thread_index > vdm->last_worker_thread_index) + thread_index = clib_bitmap_last_set (bitmap); + if ((thread_index != ~0) && (thread_index > vdm->last_worker_thread_index)) return clib_error_return (0, "please specify valid thread(s)"); queue_index = @@ -1900,7 +1899,7 @@ error: VLIB_CLI_COMMAND (cmd_set_if_tx_queue, static) = { .path = "set interface tx-queue", .short_help = "set interface tx-queue queue " - "threads ", + "[threads ]", .function = set_interface_tx_queue, .is_mp_safe = 1, }; -- 2.16.6