X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fl3fwd%2Fl3fwd_event_internal_port.c;h=32cf65714802161da492cbd84cecc3d31dea1e86;hb=c811e6a492affd55a1c02b13e93591214be2dd1f;hp=993e26f139fb341e785996f5caea9af37c05eb60;hpb=4eaf90cc18ca59f3ef4a759ac298e71ece500442;p=dpdk.git diff --git a/examples/l3fwd/l3fwd_event_internal_port.c b/examples/l3fwd/l3fwd_event_internal_port.c index 993e26f139..32cf657148 100644 --- a/examples/l3fwd/l3fwd_event_internal_port.c +++ b/examples/l3fwd/l3fwd_event_internal_port.c @@ -99,7 +99,10 @@ l3fwd_event_port_setup_internal_port(void) if (!evt_rsrc->evp.event_p_id) rte_panic("Failed to allocate memory for Event Ports\n"); - rte_event_port_default_conf_get(event_d_id, 0, &def_p_conf); + ret = rte_event_port_default_conf_get(event_d_id, 0, &def_p_conf); + if (ret < 0) + rte_panic("Error to get default configuration of event port\n"); + if (def_p_conf.new_event_threshold < event_p_conf.new_event_threshold) event_p_conf.new_event_threshold = def_p_conf.new_event_threshold; @@ -110,8 +113,12 @@ l3fwd_event_port_setup_internal_port(void) if (def_p_conf.enqueue_depth < event_p_conf.enqueue_depth) event_p_conf.enqueue_depth = def_p_conf.enqueue_depth; - event_p_conf.disable_implicit_release = - evt_rsrc->disable_implicit_release; + event_p_conf.event_port_cfg = 0; + if (evt_rsrc->disable_implicit_release) + event_p_conf.event_port_cfg |= + RTE_EVENT_PORT_CFG_DISABLE_IMPL_REL; + + evt_rsrc->deq_depth = def_p_conf.dequeue_depth; for (event_p_id = 0; event_p_id < evt_rsrc->evp.nb_ports; event_p_id++) { @@ -150,7 +157,10 @@ l3fwd_event_queue_setup_internal_port(uint32_t event_queue_cfg) uint8_t event_q_id = 0; int32_t ret; - rte_event_queue_default_conf_get(event_d_id, event_q_id, &def_q_conf); + ret = rte_event_queue_default_conf_get(event_d_id, event_q_id, + &def_q_conf); + if (ret < 0) + rte_panic("Error to get default config of event queue\n"); if (def_q_conf.nb_atomic_flows < event_q_conf.nb_atomic_flows) event_q_conf.nb_atomic_flows = def_q_conf.nb_atomic_flows; @@ -207,12 +217,36 @@ l3fwd_rx_tx_adapter_setup_internal_port(void) rte_panic("Failed to allocate memory for Rx adapter\n"); } - RTE_ETH_FOREACH_DEV(port_id) { if ((evt_rsrc->port_mask & (1 << port_id)) == 0) continue; + + if (evt_rsrc->vector_enabled) { + uint32_t cap; + + if (rte_event_eth_rx_adapter_caps_get(event_d_id, + port_id, &cap)) + rte_panic( + "Failed to get event rx adapter capability"); + + if (cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR) { + eth_q_conf.vector_sz = evt_rsrc->vector_size; + eth_q_conf.vector_timeout_ns = + evt_rsrc->vector_tmo_ns; + eth_q_conf.vector_mp = + evt_rsrc->per_port_pool ? + evt_rsrc->vec_pool[port_id] : + evt_rsrc->vec_pool[0]; + eth_q_conf.rx_queue_flags |= + RTE_EVENT_ETH_RX_ADAPTER_QUEUE_EVENT_VECTOR; + } else { + rte_panic( + "Rx adapter doesn't support event vector"); + } + } + ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id, - &evt_rsrc->def_p_conf); + &evt_rsrc->def_p_conf); if (ret) rte_panic("Failed to create rx adapter[%d]\n", adapter_id);