diff options
author | Radu Nicolau <radu.nicolau@intel.com> | 2020-12-02 11:45:11 +0000 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2021-01-25 08:37:40 +0000 |
commit | 5a48b3b9d88fa2793793e2bf3db8bf156fe2951f (patch) | |
tree | 2bca0953b744b4f37265924cc90fa1033e04dc3c /src/vppinfra | |
parent | 78de92de0ddb5de67ceb70bd30ff6dfae345baf1 (diff) |
vlib: startup multi-arch variant configuration fix for interfaces
Propagate the multi-arch variant selection to interfaces.
Type: fix
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Change-Id: I99c4a7896f172f0d14d2ded22a27383825529a7d
Diffstat (limited to 'src/vppinfra')
-rw-r--r-- | src/vppinfra/cpu.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h index 6a812180008..bef2a029e94 100644 --- a/src/vppinfra/cpu.h +++ b/src/vppinfra/cpu.h @@ -84,9 +84,29 @@ clib_march_select_fn_ptr (clib_march_fn_registration * r) return rv; } +static_always_inline void * +clib_march_select_fn_ptr_by_name (clib_march_fn_registration * r, char *name) +{ + void *rv = 0; + + while (r) + { + if (strncmp (name, r->name, vec_len (r->name) - 1) == 0) + { + rv = r->function; + break; + } + r = r->next; + } + return rv; +} + #define CLIB_MARCH_FN_POINTER(fn) \ clib_march_select_fn_ptr (fn##_march_fn_registrations); +#define CLIB_MARCH_FN_POINTER_BY_NAME(fn, name) \ + clib_march_select_fn_ptr_by_name (fn##_march_fn_registrations, name); + #define _CLIB_MARCH_FN_REGISTRATION(fn) \ static clib_march_fn_registration \ CLIB_MARCH_SFX(fn##_march_fn_registration) = \ |