common/sfc_efx/base: allow creating invalid mport selectors
[dpdk.git] / examples / l2fwd-keepalive / main.c
index d0e8bf3..af59d51 100644 (file)
@@ -24,7 +24,6 @@
 #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>
@@ -177,11 +176,11 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid)
        eth = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
 
        /* 02:00:00:00:00:xx */
-       tmp = &eth->d_addr.addr_bytes[0];
+       tmp = &eth->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], &eth->s_addr);
+       rte_ether_addr_copy(&l2fwd_ports_eth_addr[dst_port], &eth->src_addr);
 
        buffer = tx_buffer[dst_port];
        sent = rte_eth_tx_buffer(dst_port, 0, buffer, m);
@@ -227,7 +226,7 @@ l2fwd_main_loop(void)
        uint64_t tsc_lifetime = (rand()&0x07) * rte_get_tsc_hz();
 
        while (!terminate_signal_received) {
-               /* Keepalive heartbeat */
+               /* Keepalive heartbeat. 8< */
                rte_keepalive_mark_alive(rte_global_keepalive_info);
 
                cur_tsc = rte_rdtsc();
@@ -238,6 +237,7 @@ l2fwd_main_loop(void)
                 */
                if (check_period > 0 && cur_tsc - tsc_initial > tsc_lifetime)
                        break;
+               /* >8 End of keepalive heartbeat. */
 
                /*
                 * TX burst queue drain
@@ -729,14 +729,9 @@ main(int argc, char **argv)
                                 rte_strerror(-ret), portid);
 
                printf("Port %u, MAC address: "
-                       "%02X:%02X:%02X:%02X:%02X:%02X\n\n",
+                       RTE_ETHER_ADDR_PRT_FMT "\n\n",
                        portid,
-                       l2fwd_ports_eth_addr[portid].addr_bytes[0],
-                       l2fwd_ports_eth_addr[portid].addr_bytes[1],
-                       l2fwd_ports_eth_addr[portid].addr_bytes[2],
-                       l2fwd_ports_eth_addr[portid].addr_bytes[3],
-                       l2fwd_ports_eth_addr[portid].addr_bytes[4],
-                       l2fwd_ports_eth_addr[portid].addr_bytes[5]);
+                       RTE_ETHER_ADDR_BYTES(&l2fwd_ports_eth_addr[portid]));
 
                /* initialize port stats */
                memset(&port_statistics, 0, sizeof(port_statistics));
@@ -760,10 +755,12 @@ main(int argc, char **argv)
                if (ka_shm == NULL)
                        rte_exit(EXIT_FAILURE,
                                "rte_keepalive_shm_create() failed");
+               /* Initialize keepalive functionality. 8< */
                rte_global_keepalive_info =
                        rte_keepalive_create(&dead_core, ka_shm);
                if (rte_global_keepalive_info == NULL)
                        rte_exit(EXIT_FAILURE, "init_keep_alive() failed");
+               /* >8 End of initializing keepalive functionality. */
                rte_keepalive_register_relay_callback(rte_global_keepalive_info,
                        relay_core_state, ka_shm);
                rte_timer_init(&hb_timer);
@@ -778,6 +775,7 @@ main(int argc, char **argv)
                        rte_exit(EXIT_FAILURE, "Keepalive setup failure.\n");
        }
        if (timer_period > 0) {
+               /* Issues the pings keepalive_dispatch_pings(). 8< */
                if (rte_timer_reset(&stats_timer,
                                (timer_period * rte_get_timer_hz()) / 1000,
                                PERIODICAL,
@@ -785,9 +783,10 @@ main(int argc, char **argv)
                                &print_stats, NULL
                                ) != 0 )
                        rte_exit(EXIT_FAILURE, "Stats setup failure.\n");
+               /* >8 End of issuing the pings keepalive_dispatch_pings(). */
        }
-       /* launch per-lcore init on every slave lcore */
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       /* launch per-lcore init on every worker lcore */
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                struct lcore_queue_conf *qconf = &lcore_queue_conf[lcore_id];
 
                if (qconf->n_rx_port == 0)
@@ -810,12 +809,16 @@ main(int argc, char **argv)
                rte_delay_ms(5);
                }
 
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (rte_eal_wait_lcore(lcore_id) < 0)
                        return -1;
        }
 
        if (ka_shm != NULL)
                rte_keepalive_shm_cleanup(ka_shm);
+
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }