net: add macro to extract MAC address bytes
[dpdk.git] / examples / distributor / main.c
index 81d7ca6..d0f40a1 100644 (file)
@@ -120,7 +120,13 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
        if (!rte_eth_dev_is_valid_port(port))
                return -1;
 
-       rte_eth_dev_info_get(port, &dev_info);
+       retval = rte_eth_dev_info_get(port, &dev_info);
+       if (retval != 0) {
+               printf("Error during getting device (port %u) info: %s\n",
+                               port, strerror(-retval));
+               return retval;
+       }
+
        if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
                port_conf.txmode.offloads |=
                        DEV_TX_OFFLOAD_MBUF_FAST_FREE;
@@ -167,12 +173,18 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
                return retval;
 
        struct rte_eth_link link;
-       rte_eth_link_get_nowait(port, &link);
-       while (!link.link_status) {
+       do {
+               retval = rte_eth_link_get_nowait(port, &link);
+               if (retval < 0) {
+                       printf("Failed link get (port %u): %s\n",
+                               port, rte_strerror(-retval));
+                       return retval;
+               } else if (link.link_status)
+                       break;
+
                printf("Waiting for Link up on port %"PRIu16"\n", port);
                sleep(1);
-               rte_eth_link_get_nowait(port, &link);
-       }
+       } while (!link.link_status);
 
        if (!link.link_status) {
                printf("Link down on port %"PRIu16"\n", port);
@@ -180,15 +192,20 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool)
        }
 
        struct rte_ether_addr addr;
-       rte_eth_macaddr_get(port, &addr);
+       retval = rte_eth_macaddr_get(port, &addr);
+       if (retval < 0) {
+               printf("Failed to get MAC address (port %u): %s\n",
+                               port, rte_strerror(-retval));
+               return retval;
+       }
+
        printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8
                        " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n",
-                       port,
-                       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, RTE_ETHER_ADDR_BYTES(&addr));
 
-       rte_eth_promiscuous_enable(port);
+       retval = rte_eth_promiscuous_enable(port);
+       if (retval != 0)
+               return retval;
 
        return 0;
 }
@@ -592,7 +609,7 @@ static int
 init_power_library(void)
 {
        int ret = 0, lcore_id;
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                /* init power management library */
                ret = rte_power_init(lcore_id);
                if (ret) {
@@ -627,10 +644,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;
 }
@@ -788,7 +802,7 @@ main(int argc, char *argv[])
                 * available, the higher frequency cores will go to the
                 * distributor first, then rx, then tx.
                 */
-               RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+               RTE_LCORE_FOREACH_WORKER(lcore_id) {
 
                        rte_power_get_capabilities(lcore_id, &lcore_cap);
 
@@ -821,7 +835,7 @@ main(int argc, char *argv[])
         * after the high performing core assignment above, pre-assign
         * them here.
         */
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (lcore_id == (unsigned int)distr_core_id ||
                                lcore_id == (unsigned int)rx_core_id ||
                                lcore_id == (unsigned int)tx_core_id)
@@ -852,7 +866,7 @@ main(int argc, char *argv[])
         * Kick off all the worker threads first, avoiding the pre-assigned
         * lcore_ids for tx, rx and distributor workloads.
         */
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (lcore_id == (unsigned int)distr_core_id ||
                                lcore_id == (unsigned int)rx_core_id ||
                                lcore_id == (unsigned int)tx_core_id)
@@ -905,7 +919,7 @@ main(int argc, char *argv[])
                usleep(1000);
        }
 
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (rte_eal_wait_lcore(lcore_id) < 0)
                        return -1;
        }
@@ -915,5 +929,8 @@ main(int argc, char *argv[])
        rte_free(pd);
        rte_free(pr);
 
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }