ethdev: add namespace
[dpdk.git] / examples / packet_ordering / main.c
index 132f582..b01ac60 100644 (file)
 /* Macros for printing using RTE_LOG */
 #define RTE_LOGTYPE_REORDERAPP          RTE_LOGTYPE_USER1
 
+enum {
+#define OPT_DISABLE_REORDER "disable-reorder"
+       OPT_DISABLE_REORDER_NUM = 256,
+#define OPT_INSIGHT_WORKER  "insight-worker"
+       OPT_INSIGHT_WORKER_NUM,
+};
+
 unsigned int portmask;
 unsigned int disable_reorder;
 unsigned int insight_worker;
@@ -143,10 +150,7 @@ parse_portmask(const char *portmask)
        /* parse hexadecimal string */
        pm = strtoul(portmask, &end, 16);
        if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0'))
-               return -1;
-
-       if (pm == 0)
-               return -1;
+               return 0;
 
        return pm;
 }
@@ -160,9 +164,9 @@ parse_args(int argc, char **argv)
        char **argvopt;
        char *prgname = argv[0];
        static struct option lgopts[] = {
-               {"disable-reorder", 0, 0, 0},
-               {"insight-worker", 0, 0, 0},
-               {NULL, 0, 0, 0}
+               {OPT_DISABLE_REORDER, 0, NULL, OPT_DISABLE_REORDER_NUM},
+               {OPT_INSIGHT_WORKER,  0, NULL, OPT_INSIGHT_WORKER_NUM },
+               {NULL,                0, 0,    0                      }
        };
 
        argvopt = argv;
@@ -179,18 +183,18 @@ parse_args(int argc, char **argv)
                                return -1;
                        }
                        break;
+
                /* long options */
-               case 0:
-                       if (!strcmp(lgopts[option_index].name, "disable-reorder")) {
-                               printf("reorder disabled\n");
-                               disable_reorder = 1;
-                       }
-                       if (!strcmp(lgopts[option_index].name,
-                                               "insight-worker")) {
-                               printf("print all worker statistics\n");
-                               insight_worker = 1;
-                       }
+               case OPT_DISABLE_REORDER_NUM:
+                       printf("reorder disabled\n");
+                       disable_reorder = 1;
+                       break;
+
+               case OPT_INSIGHT_WORKER_NUM:
+                       printf("print all worker statistics\n");
+                       insight_worker = 1;
                        break;
+
                default:
                        print_usage(prgname);
                        return -1;
@@ -290,10 +294,10 @@ configure_eth_port(uint16_t port_id)
                return ret;
        }
 
-       if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
+       if (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE)
                port_conf.txmode.offloads |=
-                       DEV_TX_OFFLOAD_MBUF_FAST_FREE;
-       ret = rte_eth_dev_configure(port_id, rxRings, txRings, &port_conf_default);
+                       RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
+       ret = rte_eth_dev_configure(port_id, rxRings, txRings, &port_conf);
        if (ret != 0)
                return ret;
 
@@ -322,13 +326,16 @@ configure_eth_port(uint16_t port_id)
        if (ret < 0)
                return ret;
 
-       rte_eth_macaddr_get(port_id, &addr);
+       ret = rte_eth_macaddr_get(port_id, &addr);
+       if (ret != 0) {
+               printf("Failed to get MAC address (port %u): %s\n",
+                               port_id, rte_strerror(-ret));
+               return ret;
+       }
+
        printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8
                        " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n",
-                       port_id,
-                       addr.addr_bytes[0], addr.addr_bytes[1],
-                       addr.addr_bytes[2], addr.addr_bytes[3],
-                       addr.addr_bytes[4], addr.addr_bytes[5]);
+                       port_id, RTE_ETHER_ADDR_BYTES(&addr));
 
        ret = rte_eth_promiscuous_enable(port_id);
        if (ret != 0)
@@ -342,10 +349,10 @@ print_stats(void)
 {
        uint16_t i;
        struct rte_eth_stats eth_stats;
-       unsigned int lcore_id, last_lcore_id, master_lcore_id, end_w_lcore_id;
+       unsigned int lcore_id, last_lcore_id, main_lcore_id, end_w_lcore_id;
 
        last_lcore_id   = get_last_lcore_id();
-       master_lcore_id = rte_get_master_lcore();
+       main_lcore_id = rte_get_main_lcore();
        end_w_lcore_id  = get_previous_lcore_id(last_lcore_id);
 
        printf("\nRX thread stats:\n");
@@ -357,7 +364,7 @@ print_stats(void)
        for (lcore_id = 0; lcore_id <= end_w_lcore_id; lcore_id++) {
                if (insight_worker
                        && rte_lcore_is_enabled(lcore_id)
-                       && lcore_id != master_lcore_id) {
+                       && lcore_id != main_lcore_id) {
                        printf("\nWorker thread stats on core [%u]:\n",
                                        lcore_id);
                        printf(" - Pkts deqd from workers ring:         %"PRIu64"\n",
@@ -448,7 +455,7 @@ rx_thread(struct rte_ring *ring_out)
 
                                /* mark sequence number */
                                for (i = 0; i < nb_rx_pkts; )
-                                       pkts[i++]->seqn = seqn++;
+                                       *rte_reorder_seqn(pkts[i++]) = seqn++;
 
                                /* enqueue to rx_to_workers ring */
                                ret = rte_ring_enqueue_burst(ring_out,
@@ -655,7 +662,7 @@ main(int argc, char **argv)
 {
        int ret;
        unsigned nb_ports;
-       unsigned int lcore_id, last_lcore_id, master_lcore_id;
+       unsigned int lcore_id, last_lcore_id, main_lcore_id;
        uint16_t port_id;
        uint16_t nb_ports_available;
        struct worker_thread_args worker_args = {NULL, NULL};
@@ -669,7 +676,7 @@ main(int argc, char **argv)
        /* Initialize EAL */
        ret = rte_eal_init(argc, argv);
        if (ret < 0)
-               return -1;
+               rte_exit(EXIT_FAILURE, "Invalid EAL arguments\n");
 
        argc -= ret;
        argv += ret;
@@ -677,7 +684,7 @@ main(int argc, char **argv)
        /* Parse the application specific arguments */
        ret = parse_args(argc, argv);
        if (ret < 0)
-               return -1;
+               rte_exit(EXIT_FAILURE, "Invalid packet_ordering arguments\n");
 
        /* Check if we have enought cores */
        if (rte_lcore_count() < 3)
@@ -742,36 +749,40 @@ main(int argc, char **argv)
        }
 
        last_lcore_id   = get_last_lcore_id();
-       master_lcore_id = rte_get_master_lcore();
+       main_lcore_id = rte_get_main_lcore();
 
        worker_args.ring_in  = rx_to_workers;
        worker_args.ring_out = workers_to_tx;
 
-       /* Start worker_thread() on all the available slave cores but the last 1 */
+       /* Start worker_thread() on all the available worker cores but the last 1 */
        for (lcore_id = 0; lcore_id <= get_previous_lcore_id(last_lcore_id); lcore_id++)
-               if (rte_lcore_is_enabled(lcore_id) && lcore_id != master_lcore_id)
+               if (rte_lcore_is_enabled(lcore_id) && lcore_id != main_lcore_id)
                        rte_eal_remote_launch(worker_thread, (void *)&worker_args,
                                        lcore_id);
 
        if (disable_reorder) {
-               /* Start tx_thread() on the last slave core */
+               /* Start tx_thread() on the last worker core */
                rte_eal_remote_launch((lcore_function_t *)tx_thread, workers_to_tx,
                                last_lcore_id);
        } else {
                send_args.ring_in = workers_to_tx;
-               /* Start send_thread() on the last slave core */
+               /* Start send_thread() on the last worker core */
                rte_eal_remote_launch((lcore_function_t *)send_thread,
                                (void *)&send_args, last_lcore_id);
        }
 
-       /* Start rx_thread() on the master core */
+       /* Start rx_thread() on the main core */
        rx_thread(rx_to_workers);
 
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (rte_eal_wait_lcore(lcore_id) < 0)
                        return -1;
        }
 
        print_stats();
+
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }