selftests: xsk: Add test case for packets at end of UMEM
authorKal Conley <kal.conley@dectris.com>
Mon, 3 Apr 2023 14:50:47 +0000 (16:50 +0200)
committerMartin KaFai Lau <martin.lau@kernel.org>
Wed, 5 Apr 2023 18:29:34 +0000 (11:29 -0700)
Add test case to testapp_invalid_desc for valid packets at the end of
the UMEM.

Signed-off-by: Kal Conley <kal.conley@dectris.com>
Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
Link: https://lore.kernel.org/r/20230403145047.33065-3-kal.conley@dectris.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
tools/testing/selftests/bpf/xskxceiver.c

index 3956f5d..34a1f32 100644 (file)
@@ -1662,6 +1662,8 @@ static void testapp_invalid_desc(struct test_spec *test)
                {-2, PKT_SIZE, 0, false},
                /* Packet too large */
                {0x2000, XSK_UMEM__INVALID_FRAME_SIZE, 0, false},
+               /* Up to end of umem allowed */
+               {umem_size - PKT_SIZE, PKT_SIZE, 0, true},
                /* After umem ends */
                {umem_size, PKT_SIZE, 0, false},
                /* Straddle the end of umem */
@@ -1675,16 +1677,17 @@ static void testapp_invalid_desc(struct test_spec *test)
 
        if (test->ifobj_tx->umem->unaligned_mode) {
                /* Crossing a page boundrary allowed */
-               pkts[6].valid = true;
+               pkts[7].valid = true;
        }
        if (test->ifobj_tx->umem->frame_size == XSK_UMEM__DEFAULT_FRAME_SIZE / 2) {
                /* Crossing a 2K frame size boundrary not allowed */
-               pkts[7].valid = false;
+               pkts[8].valid = false;
        }
 
        if (test->ifobj_tx->shared_umem) {
                pkts[4].addr += umem_size;
                pkts[5].addr += umem_size;
+               pkts[6].addr += umem_size;
        }
 
        pkt_stream_generate_custom(test, pkts, ARRAY_SIZE(pkts));