• Jiong Wang's avatar
    nfp: bpf: implement memory bulk copy for length bigger than 32-bytes · 8c900538
    Jiong Wang authored
    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: default avatarJiong Wang <jiong.wang@netronome.com>
    Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    8c900538
jit.c 63.3 KB