Supports shared Rx queue. If shared Rx queue is enabled, group received packets by stream according to mbuf->port value and then and forward in stream basis as before.
If shared Rx queue is not enabled, just forward in stream basis. Signed-off-by: Xueming Li <xuemi...@nvidia.com> --- app/test-pmd/iofwd.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/app/test-pmd/iofwd.c b/app/test-pmd/iofwd.c index 83d098adcb..316a80d65c 100644 --- a/app/test-pmd/iofwd.c +++ b/app/test-pmd/iofwd.c @@ -44,25 +44,11 @@ * to packets data. */ static void -pkt_burst_io_forward(struct fwd_stream *fs) +io_forward_stream(struct fwd_stream *fs, uint16_t nb_rx, + struct rte_mbuf **pkts_burst) { - struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; - uint16_t nb_rx; uint16_t nb_tx; uint32_t retry; - 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; - fs->rx_packets += nb_rx; nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_rx); @@ -85,8 +71,15 @@ pkt_burst_io_forward(struct fwd_stream *fs) rte_pktmbuf_free(pkts_burst[nb_tx]); } while (++nb_tx < nb_rx); } +} - get_end_cycles(fs, start_tsc); +/* + * Wrapper of real fwd engine. + */ +static void +pkt_burst_io_forward(struct fwd_stream *fs) +{ + return do_burst_fwd(fs, io_forward_stream); } struct fwd_engine io_fwd_engine = { -- 2.25.1