X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fflow_classify%2Fflow_classify.c;h=94c1553648428e786ee3596808ddd373c336a2a9;hb=92ed77dce68d45e7a343163cdc41ac9bdd099eec;hp=c75a410f4fcf94811f2273f0897bbed4ac8967e9;hpb=a7c528e5d71ff3f569898d268f9de129fdfc152b;p=dpdk.git diff --git a/examples/flow_classify/flow_classify.c b/examples/flow_classify/flow_classify.c index c75a410f4f..94c1553648 100644 --- a/examples/flow_classify/flow_classify.c +++ b/examples/flow_classify/flow_classify.c @@ -133,7 +133,7 @@ static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = { .input_index = SRCP_DESTP_INPUT_IPV4, .offset = sizeof(struct rte_ether_hdr) + sizeof(struct rte_ipv4_hdr) + - offsetof(struct tcp_hdr, src_port), + offsetof(struct rte_tcp_hdr, src_port), }, { /* rte_flow uses a bit mask for protocol ports */ @@ -143,7 +143,7 @@ static struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = { .input_index = SRCP_DESTP_INPUT_IPV4, .offset = sizeof(struct rte_ether_hdr) + sizeof(struct rte_ipv4_hdr) + - offsetof(struct tcp_hdr, dst_port), + offsetof(struct rte_tcp_hdr, dst_port), }, }; @@ -202,7 +202,13 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) if (!rte_eth_dev_is_valid_port(port)) return -1; - 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; @@ -236,7 +242,10 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) return retval; /* Display the port MAC address. */ - rte_eth_macaddr_get(port, &addr); + retval = rte_eth_macaddr_get(port, &addr); + if (retval != 0) + return retval; + printf("Port %u MAC: %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 " %02" PRIx8 "\n", port, @@ -245,7 +254,9 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) addr.addr_bytes[4], addr.addr_bytes[5]); /* Enable RX in promiscuous mode for the Ethernet device. */ - rte_eth_promiscuous_enable(port); + retval = rte_eth_promiscuous_enable(port); + if (retval != 0) + return retval; return 0; } @@ -254,7 +265,7 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) * The lcore main. This is the main thread that does the work, reading from * an input port classifying the packets and writing to an output port. */ -static __attribute__((noreturn)) void +static __rte_noreturn void lcore_main(struct flow_classifier *cls_app) { uint16_t port; @@ -273,7 +284,7 @@ lcore_main(struct flow_classifier *cls_app) * for best performance. */ RTE_ETH_FOREACH_DEV(port) - if (rte_eth_dev_socket_id(port) > 0 && + if (rte_eth_dev_socket_id(port) >= 0 && rte_eth_dev_socket_id(port) != (int)rte_socket_id()) { printf("\n\n"); printf("WARNING: port %u is on remote NUMA node\n", @@ -379,7 +390,7 @@ parse_ipv4_net(char *in, uint32_t *addr, uint32_t *mask_len) if (get_cb_field(&in, &m, 0, sizeof(uint32_t) * CHAR_BIT, 0)) return -EINVAL; - addr[0] = IPv4(a, b, c, d); + addr[0] = RTE_IPV4(a, b, c, d); mask_len[0] = m; return 0; } @@ -839,8 +850,11 @@ main(int argc, char *argv[]) rte_exit(EXIT_FAILURE, "Failed to add rules\n"); } - /* Call lcore_main on the master core only. */ + /* Call lcore_main on the main core only. */ lcore_main(cls_app); + /* clean up the EAL */ + rte_eal_cleanup(); + return 0; }