printf("%s%s", what, buf);
}
-static void
+static int
main_loop(void)
{
struct rte_mbuf *mbufs[32];
uint16_t nb_rx;
uint16_t i;
uint16_t j;
+ int ret;
while (!force_quit) {
for (i = 0; i < nr_queues; i++) {
/* closing and releasing resources */
rte_flow_flush(port_id, &error);
- rte_eth_dev_stop(port_id);
+ ret = rte_eth_dev_stop(port_id);
+ if (ret < 0)
+ printf("Failed to stop port %u: %s",
+ port_id, rte_strerror(-ret));
rte_eth_dev_close(port_id);
+ return ret;
}
#define CHECK_INTERVAL 1000 /* 100ms */
{
struct rte_eth_link link;
uint8_t rep_cnt = MAX_REPEAT_TIMES;
+ int link_get_err = -EINVAL;
memset(&link, 0, sizeof(link));
do {
- rte_eth_link_get(port_id, &link);
- if (link.link_status == ETH_LINK_UP)
+ link_get_err = rte_eth_link_get(port_id, &link);
+ if (link_get_err == 0 && link.link_status == ETH_LINK_UP)
break;
rte_delay_ms(CHECK_INTERVAL);
} while (--rep_cnt);
+ if (link_get_err < 0)
+ rte_exit(EXIT_FAILURE, ":: error: link get is failing: %s\n",
+ rte_strerror(-link_get_err));
if (link.link_status == ETH_LINK_DOWN)
rte_exit(EXIT_FAILURE, ":: error: link is still down\n");
}
rte_exit(EXIT_FAILURE, "error in creating flow");
}
- main_loop();
-
- return 0;
+ return main_loop();
}