> -----Original Message-----
> From: Zhang, Roy Fan <roy.fan.zh...@intel.com>
> Sent: Thursday, June 23, 2022 2:17 PM
> To: Rahul Bhansali <rbhans...@marvell.com>; dev@dpdk.org; Nicolau, Radu
> <radu.nico...@intel.com>; Akhil Goyal <gak...@marvell.com>; Ruifeng Wang
> <ruifeng.w...@arm.com>
> Cc: Jerin Jacob Kollanukkaran <jer...@marvell.com>
> Subject: [EXT] RE: [PATCH v2 2/2] examples/ipsec-secgw: add support of NEON
> with poll mode
>
> External Email
>
> ----------------------------------------------------------------------
> Hi Rahul
>
> > -----Original Message-----
> > From: Rahul Bhansali <rbhans...@marvell.com>
> > Sent: Friday, June 17, 2022 8:43 AM
> > To: dev@dpdk.org; Nicolau, Radu <radu.nico...@intel.com>; Akhil Goyal
> > <gak...@marvell.com>; Ruifeng Wang <ruifeng.w...@arm.com>
> > Cc: jer...@marvell.com; Rahul Bhansali <rbhans...@marvell.com>
> > Subject: [PATCH v2 2/2] examples/ipsec-secgw: add support of NEON with
> > poll mode
> >
> > This adds the support of NEON based lpm lookup along with multi packet
> > processing for burst send in packets routing.
> >
> > Performance impact:
> > On cn10k, with poll mode inline protocol, outbound performance
> > increased by upto ~8% and inbound performance increased by upto ~6%.
> >
> > Signed-off-by: Rahul Bhansali <rbhans...@marvell.com>
> > ---
> --snip--
> >
> > static inline void
> > @@ -1403,6 +1420,8 @@ add_dst_ethaddr(uint16_t port, const struct
> > rte_ether_addr *addr)
> > return -EINVAL;
> >
>
> Fan: I failed to understand why do we need to overwrite address to do an
> address copy here. Was it a bug?
It is not overwriting the ethaddr_tbl[port].dst address, instead it is copying
from dst to xmm_t val_eth data in a format as required by Neon based packet
processing path on routing.
>
> > ethaddr_tbl[port].dst = ETHADDR_TO_UINT64(addr);
> > + rte_ether_addr_copy((struct rte_ether_addr *)ðaddr_tbl[port].dst,
> > + (struct rte_ether_addr *)(val_eth + port));
> > return 0;
> > }
> >
> > @@ -1865,6 +1884,12 @@ port_init(uint16_t portid, uint64_t
> > req_rx_offloads, uint64_t req_tx_offloads)
> > portid, rte_strerror(-ret));
> >
> > ethaddr_tbl[portid].src = ETHADDR_TO_UINT64(ðaddr);
>
> Fan: Same here
>
> > +
> > + rte_ether_addr_copy((struct rte_ether_addr *)ðaddr_tbl[portid].dst,
> > + (struct rte_ether_addr *)(val_eth + portid));
> > + rte_ether_addr_copy((struct rte_ether_addr *)ðaddr_tbl[portid].src,
> > + (struct rte_ether_addr *)(val_eth + portid) + 1);
> > +
> > print_ethaddr("Address: ", ðaddr);
> > printf("\n");