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: Magnus Karlsson <magnus.karlsson@intel.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> Link: https://lore.kernel.org/bpf/20210907071928.9750-21-magnus.karlsson@gmail.com
This commit is contained in:
parent
0d1b7f3a00
commit
909f0e2820
2 changed files with 25 additions and 0 deletions
|
@ -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)
|
||||||
{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)
|
||||||
/* 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_
|
||||||
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_
|
||||||
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 {
|
||||||
|
|
||||||
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,
|
||||||
|
|
Loading…
Add table
Reference in a new issue