X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fflow_filtering%2Fmain.c;h=0bb81a8dd4d5f3d622b21e8027b2ed8823b396a8;hb=d80016310bb2eb280112293e28665ca9f9dd89ed;hp=4a07b632353de495f0d41a03c210b12aed5d3641;hpb=feca6c428a5e36102bb2ef45f8ea7855e4453b0e;p=dpdk.git diff --git a/examples/flow_filtering/main.c b/examples/flow_filtering/main.c index 4a07b63235..0bb81a8dd4 100644 --- a/examples/flow_filtering/main.c +++ b/examples/flow_filtering/main.c @@ -55,10 +55,11 @@ #include #include #include +#include static volatile bool force_quit; -static uint8_t port_id; +static uint16_t port_id; static uint16_t nr_queues = 5; static uint8_t selected_queue = 1; struct rte_mempool *mbuf_pool; @@ -119,13 +120,23 @@ main_loop(void) rte_eth_dev_close(port_id); } +#define CHECK_INTERVAL 1000 /* 100ms */ +#define MAX_REPEAT_TIMES 90 /* 9s (90 * 100ms) in total */ + static void assert_link_status(void) { struct rte_eth_link link; + uint8_t rep_cnt = MAX_REPEAT_TIMES; memset(&link, 0, sizeof(link)); - rte_eth_link_get(port_id, &link); + do { + rte_eth_link_get(port_id, &link); + if (link.link_status == ETH_LINK_UP) + break; + rte_delay_ms(CHECK_INTERVAL); + } while (--rep_cnt); + if (link.link_status == ETH_LINK_DOWN) rte_exit(EXIT_FAILURE, ":: error: link is still down\n"); } @@ -138,16 +149,8 @@ init_port(void) struct rte_eth_conf port_conf = { .rxmode = { .split_hdr_size = 0, - /**< Header Split disabled */ - .header_split = 0, - /**< IP checksum offload disabled */ - .hw_ip_checksum = 0, - /**< VLAN filtering disabled */ - .hw_vlan_filter = 0, - /**< Jumbo Frame Support disabled */ - .jumbo_frame = 0, - /**< CRC stripped by hardware */ - .hw_strip_crc = 1, + .ignore_offload_bitfield = 1, + .offloads = DEV_RX_OFFLOAD_CRC_STRIP, }, .txmode = { .offloads = @@ -160,6 +163,7 @@ init_port(void) }, }; struct rte_eth_txconf txq_conf; + struct rte_eth_rxconf rxq_conf; struct rte_eth_dev_info dev_info; printf(":: initializing port: %d\n", port_id); @@ -171,11 +175,14 @@ init_port(void) ret, port_id); } + rte_eth_dev_info_get(port_id, &dev_info); + rxq_conf = dev_info.default_rxconf; + rxq_conf.offloads = port_conf.rxmode.offloads; /* only set Rx queues: something we care only so far */ for (i = 0; i < nr_queues; i++) { ret = rte_eth_rx_queue_setup(port_id, i, 512, rte_eth_dev_socket_id(port_id), - NULL, + &rxq_conf, mbuf_pool); if (ret < 0) { rte_exit(EXIT_FAILURE, @@ -184,7 +191,6 @@ init_port(void) } } - rte_eth_dev_info_get(port_id, &dev_info); txq_conf = dev_info.default_txconf; txq_conf.offloads = port_conf.txmode.offloads;