aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagnus Karlsson <magnus.karlsson@intel.com>2021-09-07 09:19:26 +0200
committerDaniel Borkmann <daniel@iogearbox.net>2021-09-10 21:15:32 +0200
commit6ce67b5165e630a4f874e9e45bd9cca86aa4f4a6 (patch)
tree68e11a4f181cbc28732beb2b2e7b26fe0a1cfaf5
parentselftests: xsk: Add test for unaligned mode (diff)
downloadlinux-dev-6ce67b5165e630a4f874e9e45bd9cca86aa4f4a6.tar.xz
linux-dev-6ce67b5165e630a4f874e9e45bd9cca86aa4f4a6.zip
selftests: xsk: Eliminate test specific if-statement in test runner
Eliminate a test specific if-statement for the RX_FILL_EMTPY stats test that is present in the test runner. We can do this as we now have the use_addr_for_fill option. Just create and empty Rx packet stream and indicated that the test runner should use the addresses in that to populate the fill ring. As there are no packets in the stream, the fill ring will be empty and we will get the error stats that we want to test. 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-19-magnus.karlsson@gmail.com
-rw-r--r--tools/testing/selftests/bpf/xdpxceiver.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/testing/selftests/bpf/xdpxceiver.c b/tools/testing/selftests/bpf/xdpxceiver.c
index 7cc75d1481e2..4d86c4b62aa9 100644
--- a/tools/testing/selftests/bpf/xdpxceiver.c
+++ b/tools/testing/selftests/bpf/xdpxceiver.c
@@ -458,8 +458,10 @@ static void pkt_stream_delete(struct pkt_stream *pkt_stream)
static void pkt_stream_restore_default(struct test_spec *test)
{
- pkt_stream_delete(test->ifobj_tx->pkt_stream);
- test->ifobj_tx->pkt_stream = test->pkt_stream_default;
+ if (test->ifobj_tx->pkt_stream != test->pkt_stream_default) {
+ pkt_stream_delete(test->ifobj_tx->pkt_stream);
+ test->ifobj_tx->pkt_stream = test->pkt_stream_default;
+ }
test->ifobj_rx->pkt_stream = test->pkt_stream_default;
}
@@ -931,8 +933,7 @@ static void *worker_testapp_validate_rx(void *arg)
if (test->current_step == 1)
thread_common_ops(test, ifobject);
- if (stat_test_type != STAT_TEST_RX_FILL_EMPTY)
- xsk_populate_fill_ring(ifobject->umem, ifobject->pkt_stream);
+ xsk_populate_fill_ring(ifobject->umem, ifobject->pkt_stream);
fds.fd = xsk_socket__fd(ifobject->xsk->xsk);
fds.events = POLLIN;
@@ -1065,7 +1066,14 @@ static void testapp_stats(struct test_spec *test)
break;
case STAT_TEST_RX_FILL_EMPTY:
test_spec_set_name(test, "STAT_RX_FILL_EMPTY");
+ test->ifobj_rx->pkt_stream = pkt_stream_generate(test->ifobj_rx->umem, 0,
+ MIN_PKT_SIZE);
+ if (!test->ifobj_rx->pkt_stream)
+ exit_with_error(ENOMEM);
+ test->ifobj_rx->pkt_stream->use_addr_for_fill = true;
testapp_validate_traffic(test);
+
+ pkt_stream_restore_default(test);
break;
default:
break;