summaryrefslogtreecommitdiffstats
path: root/src/vppinfra
diff options
context:
space:
mode:
authorRadu Nicolau <radu.nicolau@intel.com>2020-12-02 11:45:11 +0000
committerDamjan Marion <dmarion@me.com>2021-01-25 08:37:40 +0000
commit5a48b3b9d88fa2793793e2bf3db8bf156fe2951f (patch)
tree2bca0953b744b4f37265924cc90fa1033e04dc3c /src/vppinfra
parent78de92de0ddb5de67ceb70bd30ff6dfae345baf1 (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.h20
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) = \