Line data Source code
1 : /* SPDX-License-Identifier: Apache-2.0 2 : * Copyright(c) 2021 Cisco Systems, Inc. 3 : */ 4 : 5 : #include <vnet/vnet.h> 6 : 7 : /* funciton declarations */ 8 : 9 : u32 vnet_hw_if_get_tx_queue_index_by_id (vnet_main_t *vnm, u32 hw_if_index, 10 : u32 queue_id); 11 : u32 vnet_hw_if_register_tx_queue (vnet_main_t *vnm, u32 hw_if_index, 12 : u32 queue_id); 13 : void vnet_hw_if_unregister_tx_queue (vnet_main_t *vnm, u32 queue_index); 14 : void vnet_hw_if_unregister_all_tx_queues (vnet_main_t *vnm, u32 hw_if_index); 15 : void vnet_hw_if_tx_queue_assign_thread (vnet_main_t *vnm, u32 queue_index, 16 : u32 thread_index); 17 : void vnet_hw_if_tx_queue_unassign_thread (vnet_main_t *vnm, u32 queue_index, 18 : u32 thread_index); 19 : 20 : /* inline functions */ 21 : 22 : static_always_inline vnet_hw_if_tx_queue_t * 23 159939560 : vnet_hw_if_get_tx_queue (vnet_main_t *vnm, u32 queue_index) 24 : { 25 159939560 : vnet_interface_main_t *im = &vnm->interface_main; 26 159939560 : if (pool_is_free_index (im->hw_if_tx_queues, queue_index)) 27 0 : return 0; 28 159939560 : return pool_elt_at_index (im->hw_if_tx_queues, queue_index); 29 : } 30 : 31 : static_always_inline int 32 0 : vnet_hw_if_txq_cmp_cli_api (vnet_hw_if_tx_queue_t **a, 33 : vnet_hw_if_tx_queue_t **b) 34 : { 35 0 : if (*a == *b) 36 0 : return 0; 37 : 38 0 : if (a[0]->hw_if_index != b[0]->hw_if_index) 39 0 : return 2 * (a[0]->hw_if_index > b[0]->hw_if_index) - 1; 40 : 41 0 : if (a[0]->queue_id != b[0]->queue_id) 42 0 : return 2 * (a[0]->queue_id > b[0]->queue_id) - 1; 43 : 44 0 : ASSERT (0); 45 0 : return ~0; 46 : }