X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=test%2Ftest%2Ftest_eventdev_sw.c;h=ba8c053e5a79ad3b94d0f42bd24c3da5bb686898;hb=cb2ffec5953853bfd941240d014623ed1d48fadd;hp=86efd742df031f8ccbc46789e9d7d31d478ce011;hpb=2f6fec53909b90fa653b5d6ace0c4aeb4cce25b7;p=dpdk.git diff --git a/test/test/test_eventdev_sw.c b/test/test/test_eventdev_sw.c index 86efd742df..ba8c053e5a 100644 --- a/test/test/test_eventdev_sw.c +++ b/test/test/test_eventdev_sw.c @@ -47,8 +47,9 @@ #include #include #include - #include +#include + #include "test.h" #define MAX_PORTS 16 @@ -548,6 +549,50 @@ test_single_directed_packet(struct test *t) return 0; } +static int +test_directed_forward_credits(struct test *t) +{ + uint32_t i; + int32_t err; + + if (init(t, 1, 1) < 0 || + create_ports(t, 1) < 0 || + create_directed_qids(t, 1, t->port) < 0) + return -1; + + if (rte_event_dev_start(evdev) < 0) { + printf("%d: Error with start call\n", __LINE__); + return -1; + } + + struct rte_event ev = { + .op = RTE_EVENT_OP_NEW, + .queue_id = 0, + }; + + for (i = 0; i < 1000; i++) { + err = rte_event_enqueue_burst(evdev, 0, &ev, 1); + if (err < 0) { + printf("%d: error failed to enqueue\n", __LINE__); + return -1; + } + rte_event_schedule(evdev); + + uint32_t deq_pkts; + deq_pkts = rte_event_dequeue_burst(evdev, 0, &ev, 1, 0); + if (deq_pkts != 1) { + printf("%d: error failed to deq\n", __LINE__); + return -1; + } + + /* re-write event to be a forward, and continue looping it */ + ev.op = RTE_EVENT_OP_FORWARD; + } + + cleanup(t); + return 0; +} + static int test_priority_directed(struct test *t) @@ -877,8 +922,8 @@ xstats_tests(struct test *t) ret = rte_event_dev_xstats_names_get(evdev, RTE_EVENT_DEV_XSTATS_QUEUE, 0, xstats_names, ids, XSTATS_MAX); - if (ret != 13) { - printf("%d: expected 13 stats, got return %d\n", __LINE__, ret); + if (ret != 17) { + printf("%d: expected 17 stats, got return %d\n", __LINE__, ret); return -1; } @@ -894,8 +939,8 @@ xstats_tests(struct test *t) ret = rte_event_dev_xstats_get(evdev, RTE_EVENT_DEV_XSTATS_QUEUE, 0, ids, values, ret); - if (ret != 13) { - printf("%d: expected 13 stats, got return %d\n", __LINE__, ret); + if (ret != 17) { + printf("%d: expected 17 stats, got return %d\n", __LINE__, ret); return -1; } @@ -1059,7 +1104,11 @@ xstats_tests(struct test *t) 3 /* inflights */, 512 /* iq size */, 0, 0, 0, 0, /* iq 0, 1, 2, 3 used */ - 0, 0, 1, 0, /* qid_0_port_X_pinned_flows */ + /* QID-to-Port: pinned_flows, packets */ + 0, 0, + 0, 0, + 1, 3, + 0, 0, }; for (i = 0; (signed int)i < ret; i++) { if (queue_expected[i] != values[i]) { @@ -1086,7 +1135,11 @@ xstats_tests(struct test *t) 3 /* inflight */, 512 /* iq size */, 0, 0, 0, 0, /* 4 iq used */ - 0, 0, 1, 0, /* qid to port pinned flows */ + /* QID-to-Port: pinned_flows, packets */ + 0, 0, + 0, 0, + 1, 0, + 0, 0, }; ret = rte_event_dev_xstats_get(evdev, RTE_EVENT_DEV_XSTATS_QUEUE, 0, @@ -1634,7 +1687,7 @@ xstats_id_reset_tests(struct test *t) goto fail; /* num queue stats */ -#define NUM_Q_STATS 13 +#define NUM_Q_STATS 17 /* queue offset from start of the devices whole xstats. * This will break every time we add a statistic to a device/port/queue */ @@ -1665,9 +1718,13 @@ xstats_id_reset_tests(struct test *t) "qid_0_iq_2_used", "qid_0_iq_3_used", "qid_0_port_0_pinned_flows", + "qid_0_port_0_packets", "qid_0_port_1_pinned_flows", + "qid_0_port_1_packets", "qid_0_port_2_pinned_flows", + "qid_0_port_2_packets", "qid_0_port_3_pinned_flows", + "qid_0_port_3_packets", }; uint64_t queue_expected[] = { 7, /* rx */ @@ -1679,10 +1736,11 @@ xstats_id_reset_tests(struct test *t) 0, /* iq 1 used */ 0, /* iq 2 used */ 0, /* iq 3 used */ - 0, /* qid 0 port 0 pinned flows */ - 0, /* qid 0 port 1 pinned flows */ - 1, /* qid 0 port 2 pinned flows */ - 0, /* qid 0 port 4 pinned flows */ + /* QID-to-Port: pinned_flows, packets */ + 0, 0, + 0, 0, + 1, 7, + 0, 0, }; uint64_t queue_expected_zero[] = { 0, /* rx */ @@ -1694,12 +1752,14 @@ xstats_id_reset_tests(struct test *t) 0, /* iq 1 used */ 0, /* iq 2 used */ 0, /* iq 3 used */ - 0, /* qid 0 port 0 pinned flows */ - 0, /* qid 0 port 1 pinned flows */ - 1, /* qid 0 port 2 pinned flows */ - 0, /* qid 0 port 4 pinned flows */ + /* QID-to-Port: pinned_flows, packets */ + 0, 0, + 0, 0, + 1, 0, + 0, 0, }; if (RTE_DIM(queue_expected) != NUM_Q_STATS || + RTE_DIM(queue_expected_zero) != NUM_Q_STATS || RTE_DIM(queue_names) != NUM_Q_STATS) { printf("%d : queue array of wrong size\n", __LINE__); goto fail; @@ -1718,9 +1778,9 @@ xstats_id_reset_tests(struct test *t) failed = 1; } if (val != queue_expected[i]) { - printf("%d: %s value incorrect, expected %"PRIu64 - " got %d\n", __LINE__, queue_names[i], - queue_expected[i], id); + printf("%d: %d: %s value , expected %"PRIu64 + " got %"PRIu64"\n", i, __LINE__, + queue_names[i], queue_expected[i], val); failed = 1; } /* reset to zero */ @@ -2526,7 +2586,7 @@ parallel_basic(struct test *t, int check_order) int i; uint32_t deq_pkts, j; struct rte_mbuf *mbufs[3]; - struct rte_mbuf *mbufs_out[3]; + struct rte_mbuf *mbufs_out[3] = { 0 }; const uint32_t MAGIC_SEQN = 1234; /* Create instance with 4 ports */ @@ -3025,13 +3085,18 @@ test_sw_eventdev(void) } } t->mbuf_pool = eventdev_func_mempool; - printf("*** Running Single Directed Packet test...\n"); ret = test_single_directed_packet(t); if (ret != 0) { printf("ERROR - Single Directed Packet test FAILED.\n"); return ret; } + printf("*** Running Directed Forward Credit test...\n"); + ret = test_directed_forward_credits(t); + if (ret != 0) { + printf("ERROR - Directed Forward Credit test FAILED.\n"); + return ret; + } printf("*** Running Single Load Balanced Packet test...\n"); ret = single_packet(t); if (ret != 0) {