diff options
author | 2018-01-23 19:21:34 -0500 | |
---|---|---|
committer | 2018-02-02 17:34:00 +0000 | |
commit | 5e150a06a8b291edc9427e740d441ac652f6e705 (patch) | |
tree | 2a3810c32b444a00ba1eed20bb805ae731969c2d /src/vnet/interface_funcs.h | |
parent | cba3675fabe618194bf80a9de0e9c53b89a541ca (diff) |
Improve tunnel interface creation performance
Modify interface creation to allow creation of tunnel interfaces
without dedicated per tunnel output and tx nodes which are not
used for most tunnel types. Also changed interface-output node
function vnet_per_buffer_interface_output() so it does not rely
on hw_if_index as the next node index which is not flexible nor
efficient for large scale tunnel interfaces.
The improvenemts are done for VXLAN, VXLAN-GPE, GENEVE and GTPU
tunnels. GRE tunnel is still using per tunnel output nodes which
will be changed in a separate patch with other GRE enhencements.
Change-Id: I4123c01c0d2ead814417a867adb8c8a407e4df55
Signed-off-by: John Lo <loj@cisco.com>
(cherry picked from commit e5453d0fa29f39a7f78a7e22815566a7f4c9e5ef)
Diffstat (limited to 'src/vnet/interface_funcs.h')
-rw-r--r-- | src/vnet/interface_funcs.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vnet/interface_funcs.h b/src/vnet/interface_funcs.h index 1f22e80f314..ac50e7cd6ca 100644 --- a/src/vnet/interface_funcs.h +++ b/src/vnet/interface_funcs.h @@ -160,6 +160,14 @@ u32 vnet_register_interface (vnet_main_t * vnm, u32 dev_instance, u32 hw_class_index, u32 hw_instance); +/** + * Set interface output node - for interface registered without its output/tx + * nodes created because its VNET_DEVICE_CLASS did not specify any tx_function. + * This is typically the case for tunnel interfaces. + */ +void vnet_set_interface_output_node (vnet_main_t * vnm, + u32 hw_if_index, u32 node_index); + /* Creates a software interface given template. */ clib_error_t *vnet_create_sw_interface (vnet_main_t * vnm, vnet_sw_interface_t * template, |