X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fioat%2Fioatfwd.c;h=75d8d5b9fed271b0c5993b33fba8ec687e13e451;hb=38a57046298da634dd6b8dec072e9fa435589d28;hp=5e623a4d53b6423c09ac5461ca6dc1423b36adc9;hpb=632bcd9b5d4f30b2391553c4e542bc1575cd40a5;p=dpdk.git diff --git a/examples/ioat/ioatfwd.c b/examples/ioat/ioatfwd.c index 5e623a4d53..75d8d5b9fe 100644 --- a/examples/ioat/ioatfwd.c +++ b/examples/ioat/ioatfwd.c @@ -170,7 +170,7 @@ print_stats(char *prgname) unsigned int *ids_xstats, nb_xstats; char status_string[120]; /* to print at the top of the output */ int status_strlen; - + int ret; const char clr[] = { 27, '[', '2', 'J', '\0' }; const char topLeft[] = { 27, '[', '1', ';', '1', 'H', '\0' }; @@ -197,8 +197,11 @@ print_stats(char *prgname) "Ring Size = %d\n", ring_size); /* Allocate memory for xstats names and values */ - nb_xstats = rte_rawdev_xstats_names_get( + ret = rte_rawdev_xstats_names_get( cfg.ports[0].ioat_ids[0], NULL, 0); + if (ret < 0) + return; + nb_xstats = (unsigned int)ret; names_xstats = malloc(sizeof(*names_xstats) * nb_xstats); if (names_xstats == NULL) { @@ -291,6 +294,8 @@ print_stats(char *prgname) printf("\n"); print_total_stats(&delta_ts); + fflush(stdout); + ts.total_packets_tx += delta_ts.total_packets_tx; ts.total_packets_rx += delta_ts.total_packets_rx; ts.total_packets_dropped += delta_ts.total_packets_dropped; @@ -457,7 +462,7 @@ ioat_tx_port(struct rxtx_port_config *tx_config) MAX_PKT_BURST, NULL); } - if (nb_dq == 0) + if ((int32_t) nb_dq <= 0) return; if (copy_mode == COPY_MODE_IOAT_NUM) @@ -579,7 +584,7 @@ ioat_parse_portmask(const char *portmask) /* Parse hexadecimal string */ pm = strtoul(portmask, &end, 16); if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0')) - return -1; + return 0; return pm; } @@ -694,7 +699,7 @@ check_link_status(uint32_t port_mask) { uint16_t portid; struct rte_eth_link link; - int retval = 0; + int ret, link_status = 0; printf("\nChecking link status\n"); RTE_ETH_FOREACH_DEV(portid) { @@ -702,7 +707,12 @@ check_link_status(uint32_t port_mask) continue; memset(&link, 0, sizeof(link)); - rte_eth_link_get(portid, &link); + ret = rte_eth_link_get(portid, &link); + if (ret < 0) { + printf("Port %u link get failed: err=%d\n", + portid, ret); + continue; + } /* Print link status */ if (link.link_status) { @@ -710,12 +720,12 @@ check_link_status(uint32_t port_mask) "Port %d Link Up. Speed %u Mbps - %s\n", portid, link.link_speed, (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? - ("full-duplex") : ("half-duplex\n")); - retval = 1; + ("full-duplex") : ("half-duplex")); + link_status = 1; } else printf("Port %d Link Down\n", portid); } - return retval; + return link_status; } static void @@ -748,8 +758,9 @@ assign_rawdevs(void) if (rdev_id == rte_rawdev_count()) goto end; rte_rawdev_info_get(rdev_id++, &rdev_info); - } while (strcmp(rdev_info.driver_name, - IOAT_PMD_RAWDEV_NAME_STR) != 0); + } while (rdev_info.driver_name == NULL || + strcmp(rdev_info.driver_name, + IOAT_PMD_RAWDEV_NAME_STR) != 0); cfg.ports[i].ioat_ids[j] = rdev_id - 1; configure_rawdev_queue(cfg.ports[i].ioat_ids[j]); @@ -820,7 +831,11 @@ port_init(uint16_t portid, struct rte_mempool *mbuf_pool, uint16_t nb_queues) /* Init port */ printf("Initializing port %u... ", portid); fflush(stdout); - rte_eth_dev_info_get(portid, &dev_info); + ret = rte_eth_dev_info_get(portid, &dev_info); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Cannot get device info: %s, port=%u\n", + rte_strerror(-ret), portid); + local_port_conf.rx_adv_conf.rss_conf.rss_hf &= dev_info.flow_type_rss_offloads; if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)