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 50a6d8a..4c7d458 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, &eth->src, sizeof(eth->src));
+       ret = odp_pktio_mac_addr(src, &eth->src, sizeof(eth->src));
        CU_ASSERT(ret == ODPH_ETHADDR_LEN);
 
-       ret = odp_pktio_mac_addr(dst->id, &eth->dst, sizeof(eth->dst));
+       ret = odp_pktio_mac_addr(dst, &eth->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

Reply via email to