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)) + forward_shared_rxq(fs, nb_rx, pkts_burst, fwd); + else + (*fwd)(fs, nb_rx, pkts_burst); + 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