X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fl3fwd%2Fl3fwd_event.c;h=4d31593a0af4017f428964ea2493d54299e5dbe2;hb=ad976bd40d28;hp=b58f9b79ad6f4ac863776a892f8f718fe0e32dd7;hpb=aaf58cb85b62160f1fc5bc2058af556a5acebee3;p=dpdk.git diff --git a/examples/l3fwd/l3fwd_event.c b/examples/l3fwd/l3fwd_event.c index b58f9b79ad..4d31593a0a 100644 --- a/examples/l3fwd/l3fwd_event.c +++ b/examples/l3fwd/l3fwd_event.c @@ -70,7 +70,11 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf) printf("Creating queues: nb_rxq=%d nb_txq=1...\n", evt_rsrc->eth_rx_queues); - rte_eth_dev_info_get(port_id, &dev_info); + ret = rte_eth_dev_info_get(port_id, &dev_info); + if (ret != 0) + rte_panic("Error during getting device (port %u) info:" + "%s\n", port_id, strerror(-ret)); + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) local_port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE; @@ -211,7 +215,20 @@ void l3fwd_event_resource_setup(struct rte_eth_conf *port_conf) { struct l3fwd_event_resources *evt_rsrc = l3fwd_get_eventdev_rsrc(); + const event_loop_cb lpm_event_loop[2][2] = { + [0][0] = lpm_event_main_loop_tx_d, + [0][1] = lpm_event_main_loop_tx_d_burst, + [1][0] = lpm_event_main_loop_tx_q, + [1][1] = lpm_event_main_loop_tx_q_burst, + }; + const event_loop_cb em_event_loop[2][2] = { + [0][0] = em_event_main_loop_tx_d, + [0][1] = em_event_main_loop_tx_d_burst, + [1][0] = em_event_main_loop_tx_q, + [1][1] = em_event_main_loop_tx_q_burst, + }; uint32_t event_queue_cfg; + int ret; if (!evt_rsrc->enabled) return; @@ -233,4 +250,18 @@ l3fwd_event_resource_setup(struct rte_eth_conf *port_conf) /* Event port configuration */ evt_rsrc->ops.event_port_setup(); + + /* Rx/Tx adapters configuration */ + evt_rsrc->ops.adapter_setup(); + + /* Start event device */ + ret = rte_event_dev_start(evt_rsrc->event_d_id); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Error in starting eventdev"); + + evt_rsrc->ops.lpm_event_loop = lpm_event_loop[evt_rsrc->tx_mode_q] + [evt_rsrc->has_burst]; + + evt_rsrc->ops.em_event_loop = em_event_loop[evt_rsrc->tx_mode_q] + [evt_rsrc->has_burst]; }