[dpdk-dev] [PATCH v2 06/15] app/testpmd: add common fwd wrapper function
Xueming Li
xuemingl at nvidia.com
Wed Aug 11 16:04:08 CEST 2021
From: Xiaoyu Min <jackmin at 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 <jackmin at 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
More information about the dev
mailing list