selftests: xsk: Add single packet test
authorMagnus Karlsson <magnus.karlsson@intel.com>
Wed, 22 Sep 2021 07:56:11 +0000 (09:56 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 27 Sep 2021 22:18:35 +0000 (00:18 +0200)
Add a test where a single packet is sent and received. This might
sound like a silly test, but since many of the interfaces in xsk are
batched, it is important to be able to validate that we did not break
something as fundamental as just receiving single packets, instead of
batches of packets at high speed.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20210922075613.12186-12-magnus.karlsson@gmail.com
tools/testing/selftests/bpf/xdpxceiver.c
tools/testing/selftests/bpf/xdpxceiver.h

index 597fbe206026be77438ed03bfe6d09cfc412bd12..3beea7531c8e92db913ab2e76158a4dfbb55b10b 100644 (file)
@@ -1217,6 +1217,15 @@ static bool testapp_unaligned(struct test_spec *test)
        return true;
 }
 
+static void testapp_single_pkt(struct test_spec *test)
+{
+       struct pkt pkts[] = {{0x1000, PKT_SIZE, 0, true}};
+
+       pkt_stream_generate_custom(test, pkts, ARRAY_SIZE(pkts));
+       testapp_validate_traffic(test);
+       pkt_stream_restore_default(test);
+}
+
 static void testapp_invalid_desc(struct test_spec *test)
 {
        struct pkt pkts[] = {
@@ -1298,6 +1307,10 @@ static void run_pkt_test(struct test_spec *test, enum test_mode mode, enum test_
                test_spec_set_name(test, "RUN_TO_COMPLETION");
                testapp_validate_traffic(test);
                break;
+       case TEST_TYPE_RUN_TO_COMPLETION_SINGLE_PKT:
+               test_spec_set_name(test, "RUN_TO_COMPLETION_SINGLE_PKT");
+               testapp_single_pkt(test);
+               break;
        case TEST_TYPE_RUN_TO_COMPLETION_2K_FRAME:
                test_spec_set_name(test, "RUN_TO_COMPLETION_2K_FRAME_SIZE");
                test->ifobj_tx->umem->frame_size = 2048;
index 00790c976f4ff7b5344e960c321c2c4e2251b2c1..d075192c95f8e7df85ae98967ccbb5fb97fe746b 100644 (file)
@@ -55,6 +55,7 @@ enum test_mode {
 enum test_type {
        TEST_TYPE_RUN_TO_COMPLETION,
        TEST_TYPE_RUN_TO_COMPLETION_2K_FRAME,
+       TEST_TYPE_RUN_TO_COMPLETION_SINGLE_PKT,
        TEST_TYPE_POLL,
        TEST_TYPE_UNALIGNED,
        TEST_TYPE_ALIGNED_INV_DESC,