From 29dc67b5cbc96c988d6f859728ee040ff4991cf4 Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Tue, 1 Jun 2021 14:09:28 -0700 Subject: vmxnet3: set RX interrupt pending only when needed When an RX thread handles more than one RX queue and has a mix of queues in interrupt mode and polling mode, the RX input routine is naturally in polling mode. In that case, there is no need to set RX interrupt pending when descriptor is available in the queue for interrupt mode. Type: fix Signed-off-by: Steven Luong Change-Id: Iedbe57941eca3152c0e8ab9096cc81f315e0a915 --- src/plugins/vmxnet3/cli.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/plugins/vmxnet3/cli.c') diff --git a/src/plugins/vmxnet3/cli.c b/src/plugins/vmxnet3/cli.c index 71342bd535c..574d86fe220 100644 --- a/src/plugins/vmxnet3/cli.c +++ b/src/plugins/vmxnet3/cli.c @@ -213,6 +213,15 @@ show_vmxnet3 (vlib_main_t * vm, u32 * hw_if_indices, u8 show_descr, vmxnet3_tx_comp *tx_comp; u16 qid; + vlib_cli_output (vm, "Global:"); + for (u32 tid = 0; tid <= vlib_num_workers (); tid++) + { + vmxnet3_per_thread_data_t *ptd = + vec_elt_at_index (vmxm->per_thread_data, tid); + vlib_cli_output (vm, " Thread %u: polling queue count %u", tid, + ptd->polling_q_count); + } + if (!hw_if_indices) return; @@ -581,11 +590,14 @@ clib_error_t * vmxnet3_cli_init (vlib_main_t * vm) { vmxnet3_main_t *vmxm = &vmxnet3_main; + vlib_thread_main_t *tm = vlib_get_thread_main (); /* initialize binary API */ vmxnet3_plugin_api_hookup (vm); vmxm->log_default = vlib_log_register_class ("vmxnet3", 0); + + vec_validate (vmxm->per_thread_data, tm->n_vlib_mains - 1); return 0; } -- cgit 1.2.3-korg