diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-01-10 12:25:59 +0000 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2018-01-10 13:49:35 +0100 |
commit | 1549921da3e8efb6c95e39444c67ed1729a0ccaf (patch) | |
tree | f34ee230cc8547de4528861dc75d8e9aeaa67b22 /drivers/net/ethernet/netronome/nfp/bpf/jit.c | |
parent | a0f30c97acb685d391f40c527ddaf542c13966af (diff) |
nfp: bpf: move jump resolution to jit.c
Jump target resolution should be in jit.c not offload.c.
No functional changes.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Jiong Wang <jiong.wang@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/bpf/jit.c')
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/bpf/jit.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/bpf/jit.c b/drivers/net/ethernet/netronome/nfp/bpf/jit.c index 0de59f04da84..9caff3a7505a 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/jit.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/jit.c @@ -2742,3 +2742,26 @@ int nfp_bpf_jit(struct nfp_prog *nfp_prog) return nfp_bpf_ustore_calc(nfp_prog, (__force __le64 *)nfp_prog->prog); } + +void nfp_bpf_jit_prepare(struct nfp_prog *nfp_prog, unsigned int cnt) +{ + struct nfp_insn_meta *meta; + + /* Another pass to record jump information. */ + list_for_each_entry(meta, &nfp_prog->insns, l) { + u64 code = meta->insn.code; + + if (BPF_CLASS(code) == BPF_JMP && BPF_OP(code) != BPF_EXIT && + BPF_OP(code) != BPF_CALL) { + struct nfp_insn_meta *dst_meta; + unsigned short dst_indx; + + dst_indx = meta->n + 1 + meta->insn.off; + dst_meta = nfp_bpf_goto_meta(nfp_prog, meta, dst_indx, + cnt); + + meta->jmp_dst = dst_meta; + dst_meta->flags |= FLAG_INSN_IS_JUMP_DST; + } + } +} |