X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fvmdq_dcb%2Fmain.c;h=ba992802e965c2528cff5504b55fcbeb2aba7021;hb=48fbc1be82b551e41c58e94de780fdd2ffaaeb78;hp=75cf31a106ef1769e2f5d95a5b66f55b2a509727;hpb=6d13ea8e8e49ab957deae2bba5ecf4a4bfe747d1;p=dpdk.git diff --git a/examples/vmdq_dcb/main.c b/examples/vmdq_dcb/main.c index 75cf31a106..ba992802e9 100644 --- a/examples/vmdq_dcb/main.c +++ b/examples/vmdq_dcb/main.c @@ -202,7 +202,14 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) * The max pool number from dev_info will be used to validate the pool * number specified in cmd line */ - rte_eth_dev_info_get(port, &dev_info); + retval = rte_eth_dev_info_get(port, &dev_info); + if (retval != 0) { + printf("Error during getting device (port %u) info: %s\n", + port, strerror(-retval)); + + return retval; + } + max_nb_pools = (uint32_t)dev_info.max_vmdq_pools; /* * We allow to process part of VMDQ pools specified by num_pools in @@ -253,7 +260,14 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) if (retval < 0) return retval; - rte_eth_dev_info_get(port, &dev_info); + retval = rte_eth_dev_info_get(port, &dev_info); + if (retval != 0) { + printf("Error during getting device (port %u) info: %s\n", + port, strerror(-retval)); + + return retval; + } + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE; @@ -319,7 +333,12 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) return retval; } - rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + retval = rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); + if (retval < 0) { + printf("port %d MAC address get failed: %s\n", port, + rte_strerror(-retval)); + return retval; + } printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n", (unsigned)port, @@ -405,10 +424,7 @@ 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; } @@ -504,7 +520,7 @@ update_mac_address(struct rte_mbuf *m, unsigned dst_port) *((uint64_t *)tmp) = 0x000000000002 + ((uint64_t)dst_port << 40); /* src addr */ - ether_addr_copy(&vmdq_ports_eth_addr[dst_port], ð->s_addr); + rte_ether_addr_copy(&vmdq_ports_eth_addr[dst_port], ð->s_addr); } /* When we receive a HUP signal, print out our stats */ @@ -563,7 +579,7 @@ lcore_main(void *arg) for (;;) { struct rte_mbuf *buf[MAX_PKT_BURST]; - const uint16_t buf_size = sizeof(buf) / sizeof(buf[0]); + const uint16_t buf_size = RTE_DIM(buf); for (p = 0; p < num_ports; p++) { const uint8_t src = ports[p]; const uint8_t dst = ports[p ^ 1]; /* 0 <-> 1, 2 <-> 3 etc */ @@ -683,13 +699,16 @@ main(int argc, char *argv[]) rte_exit(EXIT_FAILURE, "Cannot initialize network ports\n"); } - /* call lcore_main() on every slave lcore */ + /* call lcore_main() on every worker lcore */ i = 0; - RTE_LCORE_FOREACH_SLAVE(lcore_id) { + RTE_LCORE_FOREACH_WORKER(lcore_id) { rte_eal_remote_launch(lcore_main, (void*)i++, lcore_id); } - /* call on master too */ + /* call on main too */ (void) lcore_main((void*)i); + /* clean up the EAL */ + rte_eal_cleanup(); + return 0; }