-/* *INDENT-OFF* */
-VLIB_BUFFER_REGISTER_CALLBACKS (dpdk, static) = {
- .vlib_buffer_alloc_cb = &dpdk_buffer_alloc,
- .vlib_buffer_alloc_from_free_list_cb = &dpdk_buffer_alloc_from_free_list,
- .vlib_buffer_free_cb = &dpdk_buffer_free,
- .vlib_buffer_free_no_next_cb = &dpdk_buffer_free_no_next,
- .vlib_packet_template_init_cb = &dpdk_packet_template_init,
- .vlib_buffer_delete_free_list_cb = &dpdk_buffer_delete_free_list,
-};
-/* *INDENT-ON* */
-
-#if __x86_64__
-vlib_buffer_alloc_cb_t __clib_weak dpdk_buffer_alloc_avx512;
-vlib_buffer_alloc_cb_t __clib_weak dpdk_buffer_alloc_avx2;
-vlib_buffer_alloc_from_free_list_cb_t __clib_weak
- dpdk_buffer_alloc_from_free_list_avx512;
-vlib_buffer_alloc_from_free_list_cb_t __clib_weak
- dpdk_buffer_alloc_from_free_list_avx2;
-vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_cb_avx512;
-vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_cb_avx2;
-vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_cb_avx512;
-vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_cb_avx2;
-
-static void __clib_constructor
-dpdk_input_multiarch_select (void)
-{
- vlib_buffer_callbacks_t *cb = &__dpdk_buffer_callbacks;
- if (dpdk_buffer_alloc_avx512 && clib_cpu_supports_avx512f ())
- {
- cb->vlib_buffer_alloc_cb = dpdk_buffer_alloc_avx512;
- cb->vlib_buffer_alloc_from_free_list_cb =
- dpdk_buffer_alloc_from_free_list_avx512;
- cb->vlib_buffer_free_cb = dpdk_buffer_free_cb_avx512;
- cb->vlib_buffer_free_no_next_cb = dpdk_buffer_free_no_next_cb_avx512;
- }
- else if (dpdk_buffer_alloc_avx2 && clib_cpu_supports_avx2 ())
- {
- cb->vlib_buffer_alloc_cb = dpdk_buffer_alloc_avx2;
- cb->vlib_buffer_alloc_from_free_list_cb =
- dpdk_buffer_alloc_from_free_list_avx2;
- cb->vlib_buffer_free_cb = dpdk_buffer_free_cb_avx2;
- cb->vlib_buffer_free_no_next_cb = dpdk_buffer_free_no_next_cb_avx2;
- }
-}
-#endif