net/i40e: support power management on VF
[dpdk.git] / examples / l2fwd-event / main.c
index 9cc29d7..0acfee4 100644 (file)
@@ -39,10 +39,7 @@ l2fwd_event_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;
 }
@@ -366,6 +363,7 @@ check_all_ports_link_status(struct l2fwd_resources *rsrc,
        uint8_t count, all_ports_up, print_flag = 0;
        struct rte_eth_link link;
        int ret;
+       char link_status_text[RTE_ETH_LINK_MAX_STR_LEN];
 
        printf("\nChecking link status...");
        fflush(stdout);
@@ -389,14 +387,10 @@ check_all_ports_link_status(struct l2fwd_resources *rsrc,
                        }
                        /* print link status if flag set */
                        if (print_flag == 1) {
-                               if (link.link_status)
-                                       printf(
-                                       "Port%d Link Up. Speed %u Mbps - %s\n",
-                                               port_id, link.link_speed,
-                               (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
-                                       ("full-duplex") : ("half-duplex\n"));
-                               else
-                                       printf("Port %d Link Down\n", port_id);
+                               rte_eth_link_to_str(link_status_text,
+                                       sizeof(link_status_text), &link);
+                               printf("Port %d %s\n", port_id,
+                                      link_status_text);
                                continue;
                        }
                        /* clear all_ports_up flag if any link down */
@@ -516,6 +510,8 @@ print_stats(struct l2fwd_resources *rsrc)
                   total_packets_rx,
                   total_packets_dropped);
        printf("\n====================================================\n");
+
+       fflush(stdout);
 }
 
 static void
@@ -671,7 +667,7 @@ main(int argc, char **argv)
 
        /* launch per-lcore init on every lcore */
        rte_eal_mp_remote_launch(l2fwd_launch_one_lcore, rsrc,
-                                SKIP_MASTER);
+                                SKIP_MAIN);
        l2fwd_event_print_stats(rsrc);
        if (rsrc->event_mode) {
                struct l2fwd_event_resources *evt_rsrc =
@@ -687,7 +683,10 @@ main(int argc, char **argv)
                        if ((rsrc->enabled_port_mask &
                                                        (1 << port_id)) == 0)
                                continue;
-                       rte_eth_dev_stop(port_id);
+                       ret = rte_eth_dev_stop(port_id);
+                       if (ret < 0)
+                               printf("rte_eth_dev_stop:err=%d, port=%u\n",
+                                      ret, port_id);
                }
 
                rte_eal_mp_wait_lcore();
@@ -709,11 +708,17 @@ main(int argc, char **argv)
                                                        (1 << port_id)) == 0)
                                continue;
                        printf("Closing port %d...", port_id);
-                       rte_eth_dev_stop(port_id);
+                       ret = rte_eth_dev_stop(port_id);
+                       if (ret < 0)
+                               printf("rte_eth_dev_stop:err=%d, port=%u\n",
+                                      ret, port_id);
                        rte_eth_dev_close(port_id);
                        printf(" Done\n");
                }
        }
+
+       /* clean up the EAL */
+       rte_eal_cleanup();
        printf("Bye...\n");
 
        return 0;