#include <rte_memcpy.h>
#include <rte_eal.h>
#include <rte_launch.h>
-#include <rte_atomic.h>
#include <rte_cycles.h>
#include <rte_prefetch.h>
#include <rte_lcore.h>
struct rte_jobstats idle_job;
struct rte_jobstats_context jobs_context;
- rte_atomic16_t stats_read_pending;
+ uint16_t stats_read_pending;
rte_spinlock_t lock;
} __rte_cache_aligned;
/* >8 End of list of queues to be polled for given lcore. */
uint64_t collection_time = rte_get_timer_cycles();
/* Ask forwarding thread to give us stats. */
- rte_atomic16_set(&qconf->stats_read_pending, 1);
+ __atomic_store_n(&qconf->stats_read_pending, 1, __ATOMIC_RELAXED);
rte_spinlock_lock(&qconf->lock);
- rte_atomic16_set(&qconf->stats_read_pending, 0);
+ __atomic_store_n(&qconf->stats_read_pending, 0, __ATOMIC_RELAXED);
/* Collect context statistics. */
stats_period = ctx->state_time - ctx->start_time;
eth = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
/* 02:00:00:00:00:xx */
- tmp = ð->d_addr.addr_bytes[0];
+ tmp = ð->dst_addr.addr_bytes[0];
*((uint64_t *)tmp) = 0x000000000002 + ((uint64_t)dst_port << 40);
/* src addr */
- rte_ether_addr_copy(&l2fwd_ports_eth_addr[dst_port], ð->s_addr);
+ rte_ether_addr_copy(&l2fwd_ports_eth_addr[dst_port], ð->src_addr);
buffer = tx_buffer[dst_port];
sent = rte_eth_tx_buffer(dst_port, 0, buffer, m);
repeats++;
need_manage = qconf->flush_timer.expire < now;
/* Check if we was esked to give a stats. */
- stats_read_pending =
- rte_atomic16_read(&qconf->stats_read_pending);
+ stats_read_pending = __atomic_load_n(&qconf->stats_read_pending,
+ __ATOMIC_RELAXED);
need_manage |= stats_read_pending;
for (i = 0; i < qconf->n_rx_port && !need_manage; i++)