Re: [dpdk-dev] [PATCH v2 06/15] app/testpmd: add common fwd wrapper function
From: Jerin Jacob <hidden>
Date: 2021-08-17 09:37:32
On Wed, Aug 11, 2021 at 7:35 PM Xueming Li [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Xiaoyu Min <redacted> 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 <redacted> --- 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