test/spinlock: use compile atomics for lcores sync
[dpdk.git] / examples / kni / main.c
index 2223bd3..beabb3c 100644 (file)
@@ -782,7 +782,12 @@ kni_change_mtu_(uint16_t port_id, unsigned int new_mtu)
        RTE_LOG(INFO, APP, "Change MTU of port %d to %u\n", port_id, new_mtu);
 
        /* Stop specific port */
-       rte_eth_dev_stop(port_id);
+       ret = rte_eth_dev_stop(port_id);
+       if (ret != 0) {
+               RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n",
+                       port_id, rte_strerror(-ret));
+               return ret;
+       }
 
        memcpy(&conf, &port_conf, sizeof(conf));
        /* Set new MTU */
@@ -875,10 +880,23 @@ kni_config_network_interface(uint16_t port_id, uint8_t if_up)
        rte_atomic32_inc(&kni_pause);
 
        if (if_up != 0) { /* Configure network interface up */
-               rte_eth_dev_stop(port_id);
+               ret = rte_eth_dev_stop(port_id);
+               if (ret != 0) {
+                       RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n",
+                               port_id, rte_strerror(-ret));
+                       rte_atomic32_dec(&kni_pause);
+                       return ret;
+               }
                ret = rte_eth_dev_start(port_id);
-       } else /* Configure network interface down */
-               rte_eth_dev_stop(port_id);
+       } else { /* Configure network interface down */
+               ret = rte_eth_dev_stop(port_id);
+               if (ret != 0) {
+                       RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n",
+                               port_id, rte_strerror(-ret));
+                       rte_atomic32_dec(&kni_pause);
+                       return ret;
+               }
+       }
 
        rte_atomic32_dec(&kni_pause);
 
@@ -949,7 +967,7 @@ kni_alloc(uint16_t port_id)
                conf.mbuf_size = MAX_PACKET_SZ;
                /*
                 * The first KNI device associated to a port
-                * is the master, for multiple kernel thread
+                * is the main, for multiple kernel thread
                 * environment.
                 */
                if (i == 0) {
@@ -998,6 +1016,7 @@ static int
 kni_free_kni(uint16_t port_id)
 {
        uint8_t i;
+       int ret;
        struct kni_port_params **p = kni_port_params_array;
 
        if (port_id >= RTE_MAX_ETHPORTS || !p[port_id])
@@ -1008,7 +1027,10 @@ kni_free_kni(uint16_t port_id)
                        printf("Fail to release kni\n");
                p[port_id]->kni[i] = NULL;
        }
-       rte_eth_dev_stop(port_id);
+       ret = rte_eth_dev_stop(port_id);
+       if (ret != 0)
+               RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n",
+                       port_id, rte_strerror(-ret));
 
        return 0;
 }
@@ -1098,8 +1120,8 @@ main(int argc, char** argv)
                        "Could not create link status thread!\n");
 
        /* Launch per-lcore function on every lcore */
-       rte_eal_mp_remote_launch(main_loop, NULL, CALL_MASTER);
-       RTE_LCORE_FOREACH_SLAVE(i) {
+       rte_eal_mp_remote_launch(main_loop, NULL, CALL_MAIN);
+       RTE_LCORE_FOREACH_WORKER(i) {
                if (rte_eal_wait_lcore(i) < 0)
                        return -1;
        }
@@ -1118,5 +1140,8 @@ main(int argc, char** argv)
                        kni_port_params_array[i] = NULL;
                }
 
+       /* clean up the EAL */
+       rte_eal_cleanup();
+
        return 0;
 }