| 672 | } |
| 673 | |
| 674 | static int |
| 675 | test_completion_status(int16_t dev_id, uint16_t vchan, bool fence) |
| 676 | { |
| 677 | const unsigned int fail[] = {0, 7, 14, 15}; |
| 678 | struct rte_mbuf *srcs[COMP_BURST_SZ], *dsts[COMP_BURST_SZ]; |
| 679 | unsigned int i; |
| 680 | |
| 681 | for (i = 0; i < COMP_BURST_SZ; i++) { |
| 682 | srcs[i] = rte_pktmbuf_alloc(pool); |
| 683 | dsts[i] = rte_pktmbuf_alloc(pool); |
| 684 | } |
| 685 | |
| 686 | for (i = 0; i < RTE_DIM(fail); i++) { |
| 687 | if (test_failure_in_full_burst(dev_id, vchan, fence, srcs, dsts, fail[i]) < 0) |
| 688 | return -1; |
| 689 | |
| 690 | if (test_individual_status_query_with_failure(dev_id, vchan, fence, |
| 691 | srcs, dsts, fail[i]) < 0) |
| 692 | return -1; |
| 693 | |
| 694 | /* test is run the same fenced, or unfenced, but no harm in running it twice */ |
| 695 | if (test_single_item_status_query_with_failure(dev_id, vchan, |
| 696 | srcs, dsts, fail[i]) < 0) |
| 697 | return -1; |
| 698 | } |
| 699 | |
| 700 | if (test_multi_failure(dev_id, vchan, srcs, dsts, fail, RTE_DIM(fail)) < 0) |
| 701 | return -1; |
| 702 | |
| 703 | for (i = 0; i < COMP_BURST_SZ; i++) { |
| 704 | rte_pktmbuf_free(srcs[i]); |
| 705 | rte_pktmbuf_free(dsts[i]); |
| 706 | } |
| 707 | return 0; |
| 708 | } |
| 709 | |
| 710 | static int |
| 711 | test_completion_handling(int16_t dev_id, uint16_t vchan) |
no test coverage detected