On Wed, Aug 11, 2021 at 7:35 PM Xueming Li <xuemi...@nvidia.com> wrote: > > From: Xiaoyu Min <jack...@nvidia.com> > > Added an inline common wrapper function for all fwd engines > which do the following in common: > > 1. get_start_cycles > 2. rte_eth_rx_burst(...,nb_pkt_per_burst) > 3. if rxq_share do forward_shared_rxq(), otherwise do fwd directly > 4. get_end_cycle > > Signed-off-by: Xiaoyu Min <jack...@nvidia.com> > --- > app/test-pmd/testpmd.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index 13141dfed9..b685ac48d6 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -1022,6 +1022,30 @@ void add_tx_dynf_callback(portid_t portid); > void remove_tx_dynf_callback(portid_t portid); > int update_jumbo_frame_offload(portid_t portid); > > +static inline void > +do_burst_fwd(struct fwd_stream *fs, packet_fwd_cb fwd) > +{ > + struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; > + uint16_t nb_rx; > + uint64_t start_tsc = 0; > + > + get_start_cycles(&start_tsc); > + > + /* > + * Receive a burst of packets and forward them. > + */ > + nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, > + pkts_burst, nb_pkt_per_burst); > + inc_rx_burst_stats(fs, nb_rx); > + if (unlikely(nb_rx == 0)) > + return; > + if (unlikely(rxq_share > 0))
See below. It reads a global memory. > + forward_shared_rxq(fs, nb_rx, pkts_burst, fwd); > + else > + (*fwd)(fs, nb_rx, pkts_burst); New function pointer in fastpath. IMO, We should not create performance regression for the existing forward engine. Can we have a new forward engine just for shared memory testing? > + get_end_cycles(fs, start_tsc); > +} > + > /* > * Work-around of a compilation error with ICC on invocations of the > * rte_be_to_cpu_16() function. > -- > 2.25.1 >