diff options
author | Damjan Marion <damarion@cisco.com> | 2021-03-26 13:06:13 +0100 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2021-03-26 16:33:21 +0100 |
commit | 6ffb7c61899eb782416cbd2f117042a583f189f7 (patch) | |
tree | f6bd132d53b0aded6b235d13200dba2864afc7d8 /src/vnet/interface | |
parent | 83f13e45bcd4b1018aa29bb6f32324c32f3a11a8 (diff) |
vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()
Type: improvement
Change-Id: If3da7d4338470912f37ff1794620418d928fb77f
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vnet/interface')
-rw-r--r-- | src/vnet/interface/runtime.c | 9 | ||||
-rw-r--r-- | src/vnet/interface/rx_queue_funcs.h | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/vnet/interface/runtime.c b/src/vnet/interface/runtime.c index c7631272d00..20ac51f5b29 100644 --- a/src/vnet/interface/runtime.c +++ b/src/vnet/interface/runtime.c @@ -63,7 +63,7 @@ vnet_hw_if_update_runtime_data (vnet_main_t *vnm, u32 hw_if_index) vnet_hw_if_rx_queue_t *rxq; vnet_hw_if_rxq_poll_vector_t *pv, **d = 0; vlib_node_state_t *per_thread_node_state = 0; - u32 n_threads = vec_len (vlib_mains); + u32 n_threads = vlib_get_n_threads (); u16 *per_thread_node_adaptive = 0; int something_changed = 0; clib_bitmap_t *pending_int = 0; @@ -133,10 +133,11 @@ vnet_hw_if_update_runtime_data (vnet_main_t *vnm, u32 hw_if_index) * unnecesary barrier */ for (int i = 0; i < n_threads; i++) { + vlib_main_t *ovm = vlib_get_main_by_index (i); vlib_node_state_t old_state; vec_sort_with_function (d[i], poll_data_sort); - old_state = vlib_node_get_state (vlib_mains[i], node_index); + old_state = vlib_node_get_state (ovm, node_index); if (per_thread_node_state[i] != old_state) { something_changed = 1; @@ -150,7 +151,7 @@ vnet_hw_if_update_runtime_data (vnet_main_t *vnm, u32 hw_if_index) if (something_changed == 0) { vnet_hw_if_rx_node_runtime_t *rt; - rt = vlib_node_get_runtime_data (vlib_mains[i], node_index); + rt = vlib_node_get_runtime_data (ovm, node_index); if (vec_len (rt->rxq_poll_vector) != vec_len (d[i])) something_changed = 1; else if (memcmp (d[i], rt->rxq_poll_vector, @@ -178,7 +179,7 @@ vnet_hw_if_update_runtime_data (vnet_main_t *vnm, u32 hw_if_index) for (int i = 0; i < n_threads; i++) { - vlib_main_t *vm = vlib_mains[i]; + vlib_main_t *vm = vlib_get_main_by_index (i); vnet_hw_if_rx_node_runtime_t *rt; rt = vlib_node_get_runtime_data (vm, node_index); pv = rt->rxq_poll_vector; diff --git a/src/vnet/interface/rx_queue_funcs.h b/src/vnet/interface/rx_queue_funcs.h index c36263ea02b..e1e6c33988a 100644 --- a/src/vnet/interface/rx_queue_funcs.h +++ b/src/vnet/interface/rx_queue_funcs.h @@ -53,7 +53,7 @@ vnet_hw_if_rx_queue_set_int_pending (vnet_main_t *vnm, u32 queue_index) { vnet_hw_if_rx_queue_t *rxq = vnet_hw_if_get_rx_queue (vnm, queue_index); vnet_hw_interface_t *hi = vnet_get_hw_interface (vnm, rxq->hw_if_index); - vlib_main_t *vm = vlib_mains[rxq->thread_index]; + vlib_main_t *vm = vlib_get_main_by_index (rxq->thread_index); vnet_hw_if_rx_node_runtime_t *rt; if (PREDICT_FALSE (rxq->mode != VNET_HW_IF_RX_MODE_INTERRUPT && rxq->mode != VNET_HW_IF_RX_MODE_ADAPTIVE)) |