The mlx5_core driver uses several indirect calls in fast-path, some of them are invoked on each ingress packet, even for the XDP-only traffic.
This series leverage the indirect call wrappers infrastructure the avoid the expansive RETPOLINE overhead for 2 indirect calls in fast-path. Each call is addressed on a different patch, plus we need to introduce a couple of additional helpers to cope with the higher number of possible direct-call alternatives. v1 - v2: - update the direct call list and use a macro to define it, as per Saeed suggestion. An intermediated additional macro is needed to allow arg list expansion - patch 2/3 is unchanged, as the generated code looks better this way than with possible alternative (dropping BP hits) Paolo Abeni (3): net/mlx5e: use indirect calls wrapper for skb allocation indirect call wrappers: add helpers for 3 and 4 ways switch net/mlx5e: use indirect calls wrapper for the rx packet handler drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 +++ .../net/ethernet/mellanox/mlx5/core/en_rx.c | 27 ++++++++++++++----- include/linux/indirect_call_wrapper.h | 12 +++++++++ 3 files changed, 37 insertions(+), 6 deletions(-) -- 2.20.1