linux/drivers/net/ethernet/netronome/nfp/bpf
Jiong Wang 8c90053858 nfp: bpf: implement memory bulk copy for length bigger than 32-bytes
When the gathered copy length is bigger than 32-bytes and within 128-bytes
(the maximum length a single CPP Pull/Push request can finish), the
strategy of read/write are changeed into:

  * Read.
      - use direct reference mode when length is within 32-bytes.
      - use indirect mode when length is bigger than 32-bytes.

  * Write.
      - length <= 8-bytes
        use write8 (direct_ref).
      - length <= 32-byte and 4-bytes aligned
        use write32 (direct_ref).
      - length <= 32-bytes but not 4-bytes aligned
        use write8 (indirect_ref).
      - length > 32-bytes and 4-bytes aligned
        use write32 (indirect_ref).
      - length > 32-bytes and not 4-bytes aligned and <= 40-bytes
        use write32 (direct_ref) to finish the first 32-bytes.
        use write8 (direct_ref) to finish all remaining hanging part.
      - length > 32-bytes and not 4-bytes aligned
        use write32 (indirect_ref) to finish those 4-byte aligned parts.
        use write8 (direct_ref) to finish all remaining hanging part.

Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2017-12-01 20:59:20 +01:00
..
jit.c nfp: bpf: implement memory bulk copy for length bigger than 32-bytes 2017-12-01 20:59:20 +01:00
main.c nfp: bpf: move to new BPF program offload infrastructure 2017-11-05 22:26:19 +09:00
main.h nfp: bpf: implement memory bulk copy for length within 32-bytes 2017-12-01 20:59:20 +01:00
offload.c nfp: bpf: flag jump destination to guide insn combine optimizations 2017-12-01 20:59:19 +01:00
verifier.c nfp: bpf: factor out is_mbpf_load & is_mbpf_store 2017-12-01 20:59:20 +01:00