X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_table_pipeline.c;h=36bfeda3d8fca72a7d15333216cbe204eae0c831;hb=c6a1d9b5abcec20ab8018c1093cc230a708a814c;hp=70b10152ca039de750bd4a53740927534f95de37;hpb=7822c43aba8ce07208a94124a46579fe43c0b103;p=dpdk.git diff --git a/app/test/test_table_pipeline.c b/app/test/test_table_pipeline.c index 70b10152ca..36bfeda3d8 100644 --- a/app/test/test_table_pipeline.c +++ b/app/test/test_table_pipeline.c @@ -39,11 +39,6 @@ #include "test_table.h" #include "test_table_pipeline.h" -#define RTE_CBUF_UINT8_PTR(cbuf, offset) \ - (&cbuf->data[offset]) -#define RTE_CBUF_UINT32_PTR(cbuf, offset) \ - (&cbuf->data32[offset/sizeof(uint32_t)]) - #if 0 static rte_pipeline_port_out_action_handler port_action_0x00 @@ -96,53 +91,59 @@ rte_pipeline_port_out_action_handler port_action_stub(struct rte_mbuf **pkts, #endif rte_pipeline_table_action_handler_hit -table_action_0x00(struct rte_mbuf **pkts, uint64_t *pkts_mask, - struct rte_pipeline_table_entry **actions, uint32_t action_mask); +table_action_0x00(struct rte_pipeline *p, struct rte_mbuf **pkts, + uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg); rte_pipeline_table_action_handler_hit -table_action_stub_hit(struct rte_mbuf **pkts, uint64_t *pkts_mask, - struct rte_pipeline_table_entry **actions, uint32_t action_mask); +table_action_stub_hit(struct rte_pipeline *p, struct rte_mbuf **pkts, + uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg); rte_pipeline_table_action_handler_miss -table_action_stub_miss(struct rte_mbuf **pkts, uint64_t *pkts_mask, - struct rte_pipeline_table_entry *action, uint32_t action_mask); +table_action_stub_miss(struct rte_pipeline *p, struct rte_mbuf **pkts, + uint64_t pkts_mask, struct rte_pipeline_table_entry **entry, void *arg); rte_pipeline_table_action_handler_hit -table_action_0x00(__attribute__((unused)) struct rte_mbuf **pkts, - uint64_t *pkts_mask, - __attribute__((unused)) struct rte_pipeline_table_entry **actions, - __attribute__((unused)) uint32_t action_mask) +table_action_0x00(__attribute__((unused)) struct rte_pipeline *p, + __attribute__((unused)) struct rte_mbuf **pkts, + uint64_t pkts_mask, + __attribute__((unused)) struct rte_pipeline_table_entry **entry, + __attribute__((unused)) void *arg) { printf("Table Action, setting pkts_mask to 0x00\n"); - *pkts_mask = 0x00; + pkts_mask = ~0x00; + rte_pipeline_ah_packet_drop(p, pkts_mask); return 0; } rte_pipeline_table_action_handler_hit -table_action_stub_hit(__attribute__((unused)) struct rte_mbuf **pkts, - uint64_t *pkts_mask, - __attribute__((unused)) struct rte_pipeline_table_entry **actions, - __attribute__((unused)) uint32_t action_mask) +table_action_stub_hit(__attribute__((unused)) struct rte_pipeline *p, + __attribute__((unused)) struct rte_mbuf **pkts, + uint64_t pkts_mask, + __attribute__((unused)) struct rte_pipeline_table_entry **entry, + __attribute__((unused)) void *arg) { printf("STUB Table Action Hit - doing nothing\n"); printf("STUB Table Action Hit - setting mask to 0x%"PRIx64"\n", override_hit_mask); - *pkts_mask = override_hit_mask; + pkts_mask = (~override_hit_mask) & 0x3; + rte_pipeline_ah_packet_drop(p, pkts_mask); return 0; } + rte_pipeline_table_action_handler_miss -table_action_stub_miss(__attribute__((unused)) struct rte_mbuf **pkts, - uint64_t *pkts_mask, - __attribute__((unused)) struct rte_pipeline_table_entry *action, - __attribute__((unused)) uint32_t action_mask) +table_action_stub_miss(struct rte_pipeline *p, + __attribute__((unused)) struct rte_mbuf **pkts, + uint64_t pkts_mask, + __attribute__((unused)) struct rte_pipeline_table_entry **entry, + __attribute__((unused)) void *arg) { printf("STUB Table Action Miss - setting mask to 0x%"PRIx64"\n", override_miss_mask); - *pkts_mask = override_miss_mask; + pkts_mask = (~override_miss_mask) & 0x3; + rte_pipeline_ah_packet_drop(p, pkts_mask); return 0; } - enum e_test_type { e_TEST_STUB = 0, e_TEST_LPM, @@ -438,7 +439,8 @@ test_pipeline_single_filter(int test_type, int expected_count) RTE_LOG(INFO, PIPELINE, "%s: **** Running %s test\n", __func__, pipeline_test_names[test_type]); /* Run pipeline once */ - rte_pipeline_run(p); + for (i = 0; i < N_PORTS; i++) + rte_pipeline_run(p); ret = rte_pipeline_flush(NULL); @@ -462,7 +464,8 @@ test_pipeline_single_filter(int test_type, int expected_count) rte_panic("Failed to alloc mbuf from pool\n"); return -1; } - key = RTE_MBUF_METADATA_UINT8_PTR(m, 32); + key = RTE_MBUF_METADATA_UINT8_PTR(m, + APP_METADATA_OFFSET(32)); k32 = (uint32_t *) key; k32[0] = 0xadadadad >> (j % 2); @@ -473,7 +476,8 @@ test_pipeline_single_filter(int test_type, int expected_count) } /* Run pipeline once */ - rte_pipeline_run(p); + for (i = 0; i < N_PORTS; i++) + rte_pipeline_run(p); /* * need to flush the pipeline, as there may be less hits than the burst @@ -498,8 +502,9 @@ test_pipeline_single_filter(int test_type, int expected_count) printf("Got %d object(s) from ring %d!\n", ret, i); for (j = 0; j < ret; j++) { mbuf = (struct rte_mbuf *)objs[j]; - rte_hexdump(stdout, "Object:", mbuf->pkt.data, - mbuf->pkt.data_len); + rte_hexdump(stdout, "Object:", + rte_pktmbuf_mtod(mbuf, char *), + mbuf->data_len); rte_pktmbuf_free(mbuf); } tx_count += ret;