X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-eventdev%2Ftest_perf_common.c;h=f99a6a6070ef23547237da33bae25fe6f1474346;hb=498c687aee32e2af17df9982add5433308673860;hp=a74ab9a9e9abe3e718a1bee3723bbc70aeb90f74;hpb=17b22d0bfa1815e81ee73717e733223372e339f9;p=dpdk.git diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c index a74ab9a9e9..f99a6a6070 100644 --- a/app/test-eventdev/test_perf_common.c +++ b/app/test-eventdev/test_perf_common.c @@ -87,21 +87,21 @@ perf_event_timer_producer(void *arg) struct rte_mempool *pool = t->pool; struct perf_elt *m; struct rte_event_timer_adapter **adptr = t->timer_adptr; + struct rte_event_timer tim; uint64_t timeout_ticks = opt->expiry_nsec / opt->timer_tick_nsec; + memset(&tim, 0, sizeof(struct rte_event_timer)); timeout_ticks = opt->optm_timer_tick_nsec ? (timeout_ticks * opt->timer_tick_nsec) / opt->optm_timer_tick_nsec : timeout_ticks; timeout_ticks += timeout_ticks ? 0 : 1; - const struct rte_event_timer tim = { - .ev.op = RTE_EVENT_OP_NEW, - .ev.queue_id = p->queue_id, - .ev.sched_type = t->opt->sched_type_list[0], - .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL, - .ev.event_type = RTE_EVENT_TYPE_TIMER, - .state = RTE_EVENT_TIMER_NOT_ARMED, - .timeout_ticks = timeout_ticks, - }; + tim.ev.event_type = RTE_EVENT_TYPE_TIMER; + tim.ev.op = RTE_EVENT_OP_NEW; + tim.ev.sched_type = t->opt->sched_type_list[0]; + tim.ev.queue_id = p->queue_id; + tim.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL; + tim.state = RTE_EVENT_TIMER_NOT_ARMED; + tim.timeout_ticks = timeout_ticks; if (opt->verbose_level > 1) printf("%s(): lcore %d\n", __func__, rte_lcore_id()); @@ -149,21 +149,21 @@ perf_event_timer_producer_burst(void *arg) struct rte_mempool *pool = t->pool; struct perf_elt *m[BURST_SIZE + 1] = {NULL}; struct rte_event_timer_adapter **adptr = t->timer_adptr; + struct rte_event_timer tim; uint64_t timeout_ticks = opt->expiry_nsec / opt->timer_tick_nsec; + memset(&tim, 0, sizeof(struct rte_event_timer)); timeout_ticks = opt->optm_timer_tick_nsec ? (timeout_ticks * opt->timer_tick_nsec) / opt->optm_timer_tick_nsec : timeout_ticks; timeout_ticks += timeout_ticks ? 0 : 1; - const struct rte_event_timer tim = { - .ev.op = RTE_EVENT_OP_NEW, - .ev.queue_id = p->queue_id, - .ev.sched_type = t->opt->sched_type_list[0], - .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL, - .ev.event_type = RTE_EVENT_TYPE_TIMER, - .state = RTE_EVENT_TIMER_NOT_ARMED, - .timeout_ticks = timeout_ticks, - }; + tim.ev.event_type = RTE_EVENT_TYPE_TIMER; + tim.ev.op = RTE_EVENT_OP_NEW; + tim.ev.sched_type = t->opt->sched_type_list[0]; + tim.ev.queue_id = p->queue_id; + tim.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL; + tim.state = RTE_EVENT_TIMER_NOT_ARMED; + tim.timeout_ticks = timeout_ticks; if (opt->verbose_level > 1) printf("%s(): lcore %d\n", __func__, rte_lcore_id()); @@ -327,7 +327,8 @@ perf_launch_lcores(struct evt_test *test, struct evt_options *opt, } if (new_cycles - dead_lock_cycles > dead_lock_sample && - opt->prod_type == EVT_PROD_TYPE_SYNT) { + (opt->prod_type == EVT_PROD_TYPE_SYNT || + opt->prod_type == EVT_PROD_TYPE_EVENT_TIMER_ADPTR)) { remaining = t->outstand_pkts - processed_pkts(t); if (dead_lock_remaining == remaining) { rte_event_dev_dump(opt->dev_id, stdout); @@ -355,7 +356,7 @@ perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride, memset(&queue_conf, 0, sizeof(struct rte_event_eth_rx_adapter_queue_conf)); queue_conf.ev.sched_type = opt->sched_type_list[0]; - for (prod = 0; prod < rte_eth_dev_count(); prod++) { + RTE_ETH_FOREACH_DEV(prod) { uint32_t cap; ret = rte_event_eth_rx_adapter_caps_get(opt->dev_id, @@ -673,20 +674,13 @@ perf_elt_init(struct rte_mempool *mp, void *arg __rte_unused, int perf_ethdev_setup(struct evt_test *test, struct evt_options *opt) { - int i; + uint16_t i; struct test_perf *t = evt_test_priv(test); struct rte_eth_conf port_conf = { .rxmode = { .mq_mode = ETH_MQ_RX_RSS, .max_rx_pkt_len = ETHER_MAX_LEN, .split_hdr_size = 0, - .header_split = 0, - .hw_ip_checksum = 0, - .hw_vlan_filter = 0, - .hw_vlan_strip = 0, - .hw_vlan_extend = 0, - .jumbo_frame = 0, - .hw_strip_crc = 1, }, .rx_adv_conf = { .rss_conf = { @@ -700,16 +694,29 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt) opt->prod_type == EVT_PROD_TYPE_EVENT_TIMER_ADPTR) return 0; - if (!rte_eth_dev_count()) { + if (!rte_eth_dev_count_avail()) { evt_err("No ethernet ports found."); return -ENODEV; } - for (i = 0; i < rte_eth_dev_count(); i++) { + RTE_ETH_FOREACH_DEV(i) { + struct rte_eth_dev_info dev_info; + struct rte_eth_conf local_port_conf = port_conf; + + rte_eth_dev_info_get(i, &dev_info); + + local_port_conf.rx_adv_conf.rss_conf.rss_hf &= + dev_info.flow_type_rss_offloads; + if (local_port_conf.rx_adv_conf.rss_conf.rss_hf != + port_conf.rx_adv_conf.rss_conf.rss_hf) { + evt_info("Port %u modified RSS hash function based on hardware support," + "requested:%#"PRIx64" configured:%#"PRIx64"\n", + i, + port_conf.rx_adv_conf.rss_conf.rss_hf, + local_port_conf.rx_adv_conf.rss_conf.rss_hf); + } - if (rte_eth_dev_configure(i, 1, 1, - &port_conf) - < 0) { + if (rte_eth_dev_configure(i, 1, 1, &local_port_conf) < 0) { evt_err("Failed to configure eth port [%d]", i); return -EINVAL; } @@ -736,14 +743,13 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt) void perf_ethdev_destroy(struct evt_test *test, struct evt_options *opt) { - int i; + uint16_t i; RTE_SET_USED(test); if (opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR) { - for (i = 0; i < rte_eth_dev_count(); i++) { + RTE_ETH_FOREACH_DEV(i) { rte_event_eth_rx_adapter_stop(i); rte_eth_dev_stop(i); - rte_eth_dev_close(i); } } }