Commit 909f0e28 authored by Magnus Karlsson's avatar Magnus Karlsson Committed by Daniel Borkmann

selftests: xsk: Add tests for 2K frame size

Add tests for 2K frame size. Both a standard send and receive test and
one testing for invalid descriptors when the frame size is 2K.
Signed-off-by: default avatarMagnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarMaciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://lore.kernel.org/bpf/20210907071928.9750-21-magnus.karlsson@gmail.com
parent 0d1b7f3a
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
* g. unaligned mode * g. unaligned mode
* h. tests for invalid and corner case Tx descriptors so that the correct ones * h. tests for invalid and corner case Tx descriptors so that the correct ones
* are discarded and let through, respectively. * are discarded and let through, respectively.
* i. 2K frame size tests
* *
* Total tests: 12 * Total tests: 12
* *
...@@ -1205,6 +1206,8 @@ static void testapp_invalid_desc(struct test_spec *test) ...@@ -1205,6 +1206,8 @@ static void testapp_invalid_desc(struct test_spec *test)
{UMEM_SIZE - PKT_SIZE / 2, PKT_SIZE, 0, false}, {UMEM_SIZE - PKT_SIZE / 2, PKT_SIZE, 0, false},
/* Straddle a page boundrary */ /* Straddle a page boundrary */
{0x3000 - PKT_SIZE / 2, PKT_SIZE, 0, false}, {0x3000 - PKT_SIZE / 2, PKT_SIZE, 0, false},
/* Straddle a 2K boundrary */
{0x3800 - PKT_SIZE / 2, PKT_SIZE, 0, true},
/* Valid packet for synch so that something is received */ /* Valid packet for synch so that something is received */
{0x4000, PKT_SIZE, 0, true}}; {0x4000, PKT_SIZE, 0, true}};
...@@ -1212,6 +1215,11 @@ static void testapp_invalid_desc(struct test_spec *test) ...@@ -1212,6 +1215,11 @@ static void testapp_invalid_desc(struct test_spec *test)
/* Crossing a page boundrary allowed */ /* Crossing a page boundrary allowed */
pkts[6].valid = true; pkts[6].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;
}
pkt_stream_generate_custom(test, pkts, ARRAY_SIZE(pkts)); pkt_stream_generate_custom(test, pkts, ARRAY_SIZE(pkts));
testapp_validate_traffic(test); testapp_validate_traffic(test);
pkt_stream_restore_default(test); pkt_stream_restore_default(test);
...@@ -1262,6 +1270,15 @@ static void run_pkt_test(struct test_spec *test, enum test_mode mode, enum test_ ...@@ -1262,6 +1270,15 @@ static void run_pkt_test(struct test_spec *test, enum test_mode mode, enum test_
test_spec_set_name(test, "RUN_TO_COMPLETION"); test_spec_set_name(test, "RUN_TO_COMPLETION");
testapp_validate_traffic(test); testapp_validate_traffic(test);
break; 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;
test->ifobj_rx->umem->frame_size = 2048;
pkt_stream_replace(test, DEFAULT_PKT_CNT, MIN_PKT_SIZE);
testapp_validate_traffic(test);
pkt_stream_restore_default(test);
break;
case TEST_TYPE_POLL: case TEST_TYPE_POLL:
test->ifobj_tx->use_poll = true; test->ifobj_tx->use_poll = true;
test->ifobj_rx->use_poll = true; test->ifobj_rx->use_poll = true;
...@@ -1272,6 +1289,12 @@ static void run_pkt_test(struct test_spec *test, enum test_mode mode, enum test_ ...@@ -1272,6 +1289,12 @@ static void run_pkt_test(struct test_spec *test, enum test_mode mode, enum test_
test_spec_set_name(test, "ALIGNED_INV_DESC"); test_spec_set_name(test, "ALIGNED_INV_DESC");
testapp_invalid_desc(test); testapp_invalid_desc(test);
break; break;
case TEST_TYPE_ALIGNED_INV_DESC_2K_FRAME:
test_spec_set_name(test, "ALIGNED_INV_DESC_2K_FRAME_SIZE");
test->ifobj_tx->umem->frame_size = 2048;
test->ifobj_rx->umem->frame_size = 2048;
testapp_invalid_desc(test);
break;
case TEST_TYPE_UNALIGNED_INV_DESC: case TEST_TYPE_UNALIGNED_INV_DESC:
test_spec_set_name(test, "UNALIGNED_INV_DESC"); test_spec_set_name(test, "UNALIGNED_INV_DESC");
test->ifobj_tx->umem->unaligned_mode = true; test->ifobj_tx->umem->unaligned_mode = true;
......
...@@ -54,9 +54,11 @@ enum test_mode { ...@@ -54,9 +54,11 @@ enum test_mode {
enum test_type { enum test_type {
TEST_TYPE_RUN_TO_COMPLETION, TEST_TYPE_RUN_TO_COMPLETION,
TEST_TYPE_RUN_TO_COMPLETION_2K_FRAME,
TEST_TYPE_POLL, TEST_TYPE_POLL,
TEST_TYPE_UNALIGNED, TEST_TYPE_UNALIGNED,
TEST_TYPE_ALIGNED_INV_DESC, TEST_TYPE_ALIGNED_INV_DESC,
TEST_TYPE_ALIGNED_INV_DESC_2K_FRAME,
TEST_TYPE_UNALIGNED_INV_DESC, TEST_TYPE_UNALIGNED_INV_DESC,
TEST_TYPE_TEARDOWN, TEST_TYPE_TEARDOWN,
TEST_TYPE_BIDI, TEST_TYPE_BIDI,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment