#include <rte_eal.h>
#include <rte_per_lcore.h>
#include <rte_lcore.h>
-#include <rte_atomic.h>
#include <rte_branch_prediction.h>
#include <rte_mempool.h>
#include <rte_mbuf.h>
#include "testpmd.h"
#if defined(RTE_ARCH_X86)
#include "macswap_sse.h"
-#elif defined(RTE_MACHINE_CPUFLAG_NEON)
+#elif defined(__ARM_NEON)
#include "macswap_neon.h"
#else
#include "macswap.h"
*/
nb_rx = rte_eth_rx_burst(fs->rx_port, fs->rx_queue, pkts_burst,
nb_pkt_per_burst);
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
- fs->rx_burst_stats.pkt_burst_spread[nb_rx]++;
-#endif
+ inc_rx_burst_stats(fs, nb_rx);
if (unlikely(nb_rx == 0))
return;
}
}
fs->tx_packets += nb_tx;
-#ifdef RTE_TEST_PMD_RECORD_BURST_STATS
- fs->tx_burst_stats.pkt_burst_spread[nb_tx]++;
-#endif
+ inc_tx_burst_stats(fs, nb_tx);
if (unlikely(nb_tx < nb_rx)) {
fs->fwd_dropped += (nb_rx - nb_tx);
do {
get_end_cycles(fs, start_tsc);
}
+static void
+stream_init_mac_swap(struct fwd_stream *fs)
+{
+ bool rx_stopped, tx_stopped;
+
+ rx_stopped = ports[fs->rx_port].rxq[fs->rx_queue].state ==
+ RTE_ETH_QUEUE_STATE_STOPPED;
+ tx_stopped = ports[fs->tx_port].txq[fs->tx_queue].state ==
+ RTE_ETH_QUEUE_STATE_STOPPED;
+ fs->disabled = rx_stopped || tx_stopped;
+}
+
struct fwd_engine mac_swap_engine = {
.fwd_mode_name = "macswap",
.port_fwd_begin = NULL,
.port_fwd_end = NULL,
+ .stream_init = stream_init_mac_swap,
.packet_fwd = pkt_burst_mac_swap,
};