diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-03-29 03:48:31 +0300 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-03-29 05:36:13 +0300 |
commit | 44d65a47aeabc40619ad6d1900e0f54e5b5145b8 (patch) | |
tree | e75ec8e269a5f30f9a14528baa454e9f5d074704 /drivers/net/ethernet/netronome/nfp/bpf/main.c | |
parent | 289c5b763018be846900da706dc582e572a13864 (diff) | |
download | linux-44d65a47aeabc40619ad6d1900e0f54e5b5145b8.tar.xz |
nfp: bpf: add map updates from the datapath
Support calling map_update_elem() from the datapath programs
by calling into FW-provided helper. Value pointer is passed
in LM pointer #2. Keeping track of old state for arg3 is not
necessary, since LM pointer #2 will be always loaded in this
case, the trivial optimization for value at the bottom of the
stack can't be done here.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: Jiong Wang <jiong.wang@netronome.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/bpf/main.c')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/bpf/main.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.c b/drivers/net/ethernet/netronome/nfp/bpf/main.c index 34e98aa6b956..db6940551b32 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.c @@ -284,6 +284,9 @@ nfp_bpf_parse_cap_func(struct nfp_app_bpf *bpf, void __iomem *value, u32 length) case BPF_FUNC_map_lookup_elem: bpf->helpers.map_lookup = readl(&cap->func_addr); break; + case BPF_FUNC_map_update_elem: + bpf->helpers.map_update = readl(&cap->func_addr); + break; } return 0; |