vhost: fix packed ring index wrapping
[dpdk.git] / examples / flow_classify / flow_classify.c
index 2130c13..94c1553 100644 (file)
@@ -242,7 +242,10 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
                return retval;
 
        /* Display the port MAC address. */
-       rte_eth_macaddr_get(port, &addr);
+       retval = rte_eth_macaddr_get(port, &addr);
+       if (retval != 0)
+               return retval;
+
        printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8
                           " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n",
                        port,
@@ -251,7 +254,9 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
                        addr.addr_bytes[4], addr.addr_bytes[5]);
 
        /* Enable RX in promiscuous mode for the Ethernet device. */
-       rte_eth_promiscuous_enable(port);
+       retval = rte_eth_promiscuous_enable(port);
+       if (retval != 0)
+               return retval;
 
        return 0;
 }
@@ -260,7 +265,7 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool)
  * The lcore main. This is the main thread that does the work, reading from
  * an input port classifying the packets and writing to an output port.
  */
-static __attribute__((noreturn)) void
+static __rte_noreturn void
 lcore_main(struct flow_classifier *cls_app)
 {
        uint16_t port;
@@ -279,7 +284,7 @@ lcore_main(struct flow_classifier *cls_app)
         * for best performance.
         */
        RTE_ETH_FOREACH_DEV(port)
-               if (rte_eth_dev_socket_id(port) > 0 &&
+               if (rte_eth_dev_socket_id(port) >= 0 &&
                        rte_eth_dev_socket_id(port) != (int)rte_socket_id()) {
                        printf("\n\n");
                        printf("WARNING: port %u is on remote NUMA node\n",
@@ -845,8 +850,11 @@ main(int argc, char *argv[])
                rte_exit(EXIT_FAILURE, "Failed to add rules\n");
        }
 
-       /* Call lcore_main on the master core only. */
+       /* Call lcore_main on the main core only. */
        lcore_main(cls_app);
 
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }