On Sun, Jun 24, 2018 at 8:54 PM, Jakub Kicinski <jakub.kicin...@netronome.com> wrote: > From: Jiong Wang <jiong.w...@netronome.com> > > Map read has been supported on NFP, this patch enables optimization for > memcpy from map to packet. > > This patch also fixed one latent bug which will cause copying from > unexpected address once memcpy for map pointer enabled. > > Reported-by: Mary Pham <mary.p...@netronome.com> > Reported-by: David Beckett <david.beck...@netronome.com> > Signed-off-by: Jiong Wang <jiong.w...@netronome.com> > Reviewed-by: Jakub Kicinski <jakub.kicin...@netronome.com> > --- > drivers/net/ethernet/netronome/nfp/bpf/jit.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/netronome/nfp/bpf/jit.c > b/drivers/net/ethernet/netronome/nfp/bpf/jit.c > index 8a92088df0d7..33111739b210 100644 > --- a/drivers/net/ethernet/netronome/nfp/bpf/jit.c > +++ b/drivers/net/ethernet/netronome/nfp/bpf/jit.c > @@ -670,7 +670,7 @@ static int nfp_cpp_memcpy(struct nfp_prog *nfp_prog, > struct nfp_insn_meta *meta) > xfer_num = round_up(len, 4) / 4; > > if (src_40bit_addr) > - addr40_offset(nfp_prog, meta->insn.src_reg, off, &src_base, > + addr40_offset(nfp_prog, meta->insn.src_reg * 2, off, > &src_base, > &off);
Did this break other cases before this patch? I am sorry if this is a dumb question. I don't think I fully understand addr40_offset(). Song > > /* Setup PREV_ALU fields to override memory read length. */ > @@ -3299,7 +3299,8 @@ curr_pair_is_memcpy(struct nfp_insn_meta *ld_meta, > if (!is_mbpf_load(ld_meta) || !is_mbpf_store(st_meta)) > return false; > > - if (ld_meta->ptr.type != PTR_TO_PACKET) > + if (ld_meta->ptr.type != PTR_TO_PACKET && > + ld_meta->ptr.type != PTR_TO_MAP_VALUE) > return false; > > if (st_meta->ptr.type != PTR_TO_PACKET) > -- > 2.17.1 >