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;
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;
/* 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];
}