For the purpose of testing of real-world interfaces the packet's content should be valid or kernel will throw them away.
Signed-off-by: Ilya Maximets <i.maxim...@samsung.com> --- test/validation/pktio/pktio.c | 46 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c index 146e741..b0deac7 100644 --- a/test/validation/pktio/pktio.c +++ b/test/validation/pktio/pktio.c @@ -86,16 +86,16 @@ static void set_pool_len(odp_pool_param_t *params) } static void pktio_pkt_set_macs(odp_packet_t pkt, - pktio_info_t *src, pktio_info_t *dst) + odp_pktio_t src, odp_pktio_t dst) { uint32_t len; odph_ethhdr_t *eth = (odph_ethhdr_t *)odp_packet_l2_ptr(pkt, &len); int ret; - ret = odp_pktio_mac_addr(src->id, ð->src, sizeof(eth->src)); + ret = odp_pktio_mac_addr(src, ð->src, sizeof(eth->src)); CU_ASSERT(ret == ODPH_ETHADDR_LEN); - ret = odp_pktio_mac_addr(dst->id, ð->dst, sizeof(eth->dst)); + ret = odp_pktio_mac_addr(dst, ð->dst, sizeof(eth->dst)); CU_ASSERT(ret == ODPH_ETHADDR_LEN); } @@ -410,12 +410,16 @@ static void pktio_txrx_multi(pktio_info_t *pktio_a, pktio_info_t *pktio_b, break; tx_seq[i] = pktio_init_packet(tx_pkt[i]); - if (tx_seq[i] == TEST_SEQ_INVALID) + if (tx_seq[i] == TEST_SEQ_INVALID) { + odp_packet_free(tx_pkt[i]); break; + } - pktio_pkt_set_macs(tx_pkt[i], pktio_a, pktio_b); - if (pktio_fixup_checksums(tx_pkt[i]) != 0) + pktio_pkt_set_macs(tx_pkt[i], pktio_a->id, pktio_b->id); + if (pktio_fixup_checksums(tx_pkt[i]) != 0) { + odp_packet_free(tx_pkt[i]); break; + } tx_ev[i] = odp_packet_to_event(tx_pkt[i]); } @@ -724,6 +728,13 @@ static void pktio_test_start_stop(void) if (pkt == ODP_PACKET_INVALID) break; pktio_init_packet(pkt); + + pktio_pkt_set_macs(pkt, pktio[0], pktio[1]); + if (pktio_fixup_checksums(pkt) != 0) { + odp_packet_free(pkt); + break; + } + tx_ev[alloc] = odp_packet_to_event(pkt); } @@ -775,6 +786,13 @@ static void pktio_test_start_stop(void) if (pkt == ODP_PACKET_INVALID) break; pktio_init_packet(pkt); + if (num_ifaces > 1) { + pktio_pkt_set_macs(pkt, pktio[0], pktio[1]); + if (pktio_fixup_checksums(pkt) != 0) { + odp_packet_free(pkt); + break; + } + } tx_ev[alloc] = odp_packet_to_event(pkt); } @@ -896,8 +914,17 @@ static void pktio_test_send_failure(void) break; pkt_seq[i] = pktio_init_packet(pkt_tbl[i]); - if (pkt_seq[i] == TEST_SEQ_INVALID) + + pktio_pkt_set_macs(pkt_tbl[i], pktio_tx, pktio_rx); + if (pktio_fixup_checksums(pkt_tbl[i]) != 0) { + odp_packet_free(pkt_tbl[i]); + break; + } + + if (pkt_seq[i] == TEST_SEQ_INVALID) { + odp_packet_free(pkt_tbl[i]); break; + } } alloc_pkts = i; @@ -941,6 +968,11 @@ static void pktio_test_send_failure(void) odp_packet_len(pkt_tbl[i]) - PKT_LEN_NORMAL); pkt_seq[i] = pktio_init_packet(pkt_tbl[i]); + + pktio_pkt_set_macs(pkt_tbl[i], pktio_tx, pktio_rx); + ret = pktio_fixup_checksums(pkt_tbl[i]); + CU_ASSERT_FATAL(ret == 0); + CU_ASSERT_FATAL(pkt_seq[i] != TEST_SEQ_INVALID); ret = odp_pktio_send(pktio_tx, &pkt_tbl[i], TX_BATCH_LEN - i); CU_ASSERT_FATAL(ret == (TX_BATCH_LEN - i)); -- 2.1.4 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp