@@ -403,6 +403,93 @@ static void test_odp_pktio_sched_multi(void)
pktio_test_txrx(ODP_QUEUE_TYPE_SCHED, 4);
}
+static void pktio_test_mtu(void)
+{
+ int i;
+ int ret;
+ int def;
+ odp_pktio_t pktio = create_pktio(iface_name[0]);
+
+ def = odp_pktio_mtu(pktio);
+ CU_ASSERT(def > 0);
+
+ for (i = 9000; i > 100; i /= 2) {
+ printf(" %d ", i);
+
+ ret = odp_pktio_set_mtu(pktio, i);
+ if (ret) {
+ if (i <= 1500) {
+ CU_ASSERT(0);
+ } else {
+ printf("(Not supported)");
+ continue;
+ }
+ }
+
+ ret = odp_pktio_mtu(pktio);
+ CU_ASSERT(i == ret);
+ }
+
+ ret = odp_pktio_set_mtu(pktio, def);
+ CU_ASSERT(0 == ret);
+
+ ret = odp_pktio_close(pktio);
+ CU_ASSERT(ret == 0);
+
+ return;
+}
+
+static void pktio_test_promisc(void)
+{
+ int ret;
+ odp_pktio_t pktio = create_pktio(iface_name[0]);
+
+ ret = odp_pktio_promisc_mode_set(pktio, 1);
+ CU_ASSERT(0 == ret);
+
+ /* Check */
+ ret = odp_pktio_promisc_mode(pktio);
+ CU_ASSERT(1 == ret);
+
+ ret = odp_pktio_promisc_mode_set(pktio, 0);
+ CU_ASSERT(0 == ret);
+
+ /* Check */
+ ret = odp_pktio_promisc_mode(pktio);
+ CU_ASSERT(0 == ret);
+
+ ret = odp_pktio_close(pktio);
+ CU_ASSERT(ret == 0);
+
+ return;
+}
+
+static void pktio_test_mac(void)
+{
+ unsigned char mac_addr[ODPH_ETHADDR_LEN];
+ size_t mac_len;
+ int ret;
+ odp_pktio_t pktio = create_pktio(iface_name[0]);
+
+ printf("testing mac for %s\n", iface_name[0]);
+
+ mac_len = odp_pktio_mac_addr(pktio, mac_addr, ODPH_ETHADDR_LEN);
+ CU_ASSERT(ODPH_ETHADDR_LEN == mac_len);
+
+ printf(" %X:%X:%X:%X:%X:%X ",
+ mac_addr[0], mac_addr[1], mac_addr[2],
+ mac_addr[3], mac_addr[4], mac_addr[5]);
+
+ /* Fail case */
+ mac_len = odp_pktio_mac_addr(pktio, mac_addr, 2);
+ CU_ASSERT(0 == mac_len);
+
+ ret = odp_pktio_close(pktio);
+ CU_ASSERT(ret == 0);
+
+ return;
+}
+
static void test_odp_pktio_open(void)
{
odp_pktio_t pktio;
@@ -483,19 +570,22 @@ static int term_pktio_suite(void)
}
CU_TestInfo pktio_tests[] = {
- {"pktio open", test_odp_pktio_open},
- {"pktio close", test_odp_pktio_close},
- {"pktio inq", test_odp_pktio_inq},
- {"pktio outq", test_odp_pktio_outq},
- {"pktio poll queues", test_odp_pktio_poll_queue},
- {"pktio poll multi", test_odp_pktio_poll_multi},
- {"pktio sched queues", test_odp_pktio_sched_queue},
- {"pktio sched multi", test_odp_pktio_sched_multi},
+ {"pktio open", test_odp_pktio_open},
+ {"pktio close", test_odp_pktio_close},
+ {"pktio inq", test_odp_pktio_inq},
+ {"pktio outq", test_odp_pktio_outq},
+ {"pktio poll queues", test_odp_pktio_poll_queue},
+ {"pktio poll multi", test_odp_pktio_poll_multi},
+ {"pktio sched queues", test_odp_pktio_sched_queue},
+ {"pktio sched multi", test_odp_pktio_sched_multi},
+ {"pktio mtu", pktio_test_mtu},
+ {"pktio promisc mode", pktio_test_promisc},
+ {"pktio mac", pktio_test_mac},
CU_TEST_INFO_NULL
};
CU_SuiteInfo odp_testsuites[] = {
- {"odp_pktio",
+ {"Packet I/O",
init_pktio_suite, term_pktio_suite, NULL, NULL, pktio_tests},
CU_SUITE_INFO_NULL
};
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- test/validation/odp_pktio.c | 108 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 9 deletions(-)