| 525 | } |
| 526 | |
| 527 | void |
| 528 | l2fwd_event_resource_setup(struct l2fwd_resources *rsrc) |
| 529 | { |
| 530 | /* [MAC_UPDT][TX_MODE][BURST] */ |
| 531 | const event_loop_cb event_loop[2][2][2][2] = { |
| 532 | [0][0][0][0] = l2fwd_event_main_loop_tx_d, |
| 533 | [0][0][0][1] = l2fwd_event_main_loop_tx_d_brst, |
| 534 | [0][0][1][0] = l2fwd_event_main_loop_tx_q, |
| 535 | [0][0][1][1] = l2fwd_event_main_loop_tx_q_brst, |
| 536 | [0][1][0][0] = l2fwd_event_main_loop_tx_d_mac, |
| 537 | [0][1][0][1] = l2fwd_event_main_loop_tx_d_brst_mac, |
| 538 | [0][1][1][0] = l2fwd_event_main_loop_tx_q_mac, |
| 539 | [0][1][1][1] = l2fwd_event_main_loop_tx_q_brst_mac, |
| 540 | [1][0][0][0] = l2fwd_event_main_loop_tx_d_vec, |
| 541 | [1][0][0][1] = l2fwd_event_main_loop_tx_d_brst_vec, |
| 542 | [1][0][1][0] = l2fwd_event_main_loop_tx_q_vec, |
| 543 | [1][0][1][1] = l2fwd_event_main_loop_tx_q_brst_vec, |
| 544 | [1][1][0][0] = l2fwd_event_main_loop_tx_d_mac_vec, |
| 545 | [1][1][0][1] = l2fwd_event_main_loop_tx_d_brst_mac_vec, |
| 546 | [1][1][1][0] = l2fwd_event_main_loop_tx_q_mac_vec, |
| 547 | [1][1][1][1] = l2fwd_event_main_loop_tx_q_brst_mac_vec, |
| 548 | }; |
| 549 | struct l2fwd_event_resources *evt_rsrc; |
| 550 | uint32_t event_queue_cfg; |
| 551 | int ret; |
| 552 | |
| 553 | if (!rte_event_dev_count()) |
| 554 | rte_panic("No Eventdev found\n"); |
| 555 | |
| 556 | evt_rsrc = rte_zmalloc("l2fwd_event", |
| 557 | sizeof(struct l2fwd_event_resources), 0); |
| 558 | if (evt_rsrc == NULL) |
| 559 | rte_panic("Failed to allocate memory\n"); |
| 560 | |
| 561 | rsrc->evt_rsrc = evt_rsrc; |
| 562 | |
| 563 | /* Setup eventdev capability callbacks */ |
| 564 | l2fwd_event_capability_setup(evt_rsrc); |
| 565 | |
| 566 | /* Event device configuration */ |
| 567 | event_queue_cfg = evt_rsrc->ops.event_device_setup(rsrc); |
| 568 | |
| 569 | /* Event queue configuration */ |
| 570 | evt_rsrc->ops.event_queue_setup(rsrc, event_queue_cfg); |
| 571 | |
| 572 | /* Event port configuration */ |
| 573 | evt_rsrc->ops.event_port_setup(rsrc); |
| 574 | |
| 575 | /* Rx/Tx adapters configuration */ |
| 576 | evt_rsrc->ops.adapter_setup(rsrc); |
| 577 | |
| 578 | /* Start event device */ |
| 579 | ret = rte_event_dev_start(evt_rsrc->event_d_id); |
| 580 | if (ret < 0) |
| 581 | rte_panic("Error in starting eventdev\n"); |
| 582 | |
| 583 | evt_rsrc->ops.l2fwd_event_loop = |
| 584 | event_loop[rsrc->evt_vec.enabled][rsrc->mac_updating] |
no test coverage detected