From: Ciara Loftus <ciara.loftus@intel.com>
To: netdev@vger.kernel.org, bpf@vger.kernel.org,
magnus.karlsson@intel.com, bjorn@kernel.org,
weqaar.a.janjua@intel.com
Cc: daniel@iogearbox.net, Ciara Loftus <ciara.loftus@intel.com>
Subject: [PATCH bpf-next v4 5/6] selftests/bpf: XSK_TRACE_INVALID_FILLADDR test
Date: Wed, 3 Feb 2021 07:41:26 +0000 [thread overview]
Message-ID: <20210203074127.8616-6-ciara.loftus@intel.com> (raw)
In-Reply-To: <20210203074127.8616-1-ciara.loftus@intel.com>
This test supplies invalid addresses to the fill
queue at init. On RX, traces are expected which report
the invalid address which look like so:
xsk_packet_drop: netdev: ve3213 qid 0 reason: invalid fill addr: \
addr 262144 not_used 0 not_used 0
The test validates that these traces were successfully generated.
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
tools/testing/selftests/bpf/test_xsk.sh | 24 ++++++++++++++++++++
tools/testing/selftests/bpf/xdpxceiver.c | 29 ++++++++++++++++++------
2 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_xsk.sh b/tools/testing/selftests/bpf/test_xsk.sh
index 5b4e42ac8c20..bc026da25d54 100755
--- a/tools/testing/selftests/bpf/test_xsk.sh
+++ b/tools/testing/selftests/bpf/test_xsk.sh
@@ -271,6 +271,30 @@ retval=$?
test_status $retval "${TEST_NAME}"
statusList+=($retval)
+### TEST 12
+TEST_NAME="SKB TRACE INVALID_FILLADDR"
+
+vethXDPgeneric ${VETH0} ${VETH1} ${NS1}
+
+params=("-S" "-t" "1" "-C" "${TRACEPKTS}")
+execxdpxceiver params
+
+retval=$?
+test_status $retval "${TEST_NAME}"
+statusList+=($retval)
+
+### TEST 13
+TEST_NAME="DRV TRACE INVALID_FILLADDR"
+
+vethXDPnative ${VETH0} ${VETH1} ${NS1}
+
+params=("-N" "-t" "1" "-C" "${TRACEPKTS}")
+execxdpxceiver params
+
+retval=$?
+test_status $retval "${TEST_NAME}"
+statusList+=($retval)
+
## END TESTS
cleanup_exit ${VETH0} ${VETH1} ${NS1}
diff --git a/tools/testing/selftests/bpf/xdpxceiver.c b/tools/testing/selftests/bpf/xdpxceiver.c
index dda965c3d9ec..e63dc1c228ed 100644
--- a/tools/testing/selftests/bpf/xdpxceiver.c
+++ b/tools/testing/selftests/bpf/xdpxceiver.c
@@ -35,6 +35,8 @@
* mode is used
* e. Tracing - XSK_TRACE_DROP_PKT_TOO_BIG
* Increase the headroom size and send packets. Validate traces.
+ * f. Tracing - XSK_TRACE_DROP_INVALID_FILLADDR
+ * Populate the fill queue with invalid addresses. Validate traces.
*
* 2. AF_XDP DRV/Native mode
* Works on any netdevice with XDP_REDIRECT support, driver dependent. Processes
@@ -47,8 +49,9 @@
* - Only copy mode is supported because veth does not currently support
* zero-copy mode
* e. Tracing - XSK_TRACE_DROP_PKT_TOO_BIG
+ * f. Tracing - XSK_TRACE_DROP_INVALID_FILLADDR
*
- * Total tests: 10
+ * Total tests: 12
*
* Flow:
* -----
@@ -276,7 +279,8 @@ static void xsk_configure_umem(struct ifobject *data, void *buffer, u64 size)
{
int ret;
struct xsk_umem_config cfg = {
- .fill_size = XSK_RING_PROD__DEFAULT_NUM_DESCS,
+ .fill_size = opt_trace_code == XSK_TRACE_DROP_INVALID_FILLADDR ? opt_pkt_count :
+ XSK_RING_PROD__DEFAULT_NUM_DESCS,
.comp_size = XSK_RING_CONS__DEFAULT_NUM_DESCS,
.frame_size = XSK_UMEM__DEFAULT_FRAME_SIZE,
.frame_headroom = XSK_UMEM__DEFAULT_FRAME_HEADROOM,
@@ -302,13 +306,21 @@ static void xsk_populate_fill_ring(struct xsk_umem_info *umem)
{
int ret, i;
u32 idx;
+ u32 num_addrs = XSK_RING_PROD__DEFAULT_NUM_DESCS;
+ u32 invalid = 0;
- ret = xsk_ring_prod__reserve(&umem->fq, XSK_RING_PROD__DEFAULT_NUM_DESCS, &idx);
- if (ret != XSK_RING_PROD__DEFAULT_NUM_DESCS)
+ if (opt_trace_code == XSK_TRACE_DROP_INVALID_FILLADDR) {
+ num_addrs = opt_pkt_count;
+ invalid = num_frames * XSK_UMEM__DEFAULT_FRAME_SIZE;
+ }
+
+ ret = xsk_ring_prod__reserve(&umem->fq, num_addrs, &idx);
+ if (ret != num_addrs)
exit_with_error(ret);
- for (i = 0; i < XSK_RING_PROD__DEFAULT_NUM_DESCS; i++)
- *xsk_ring_prod__fill_addr(&umem->fq, idx++) = i * XSK_UMEM__DEFAULT_FRAME_SIZE;
- xsk_ring_prod__submit(&umem->fq, XSK_RING_PROD__DEFAULT_NUM_DESCS);
+ for (i = 0; i < num_addrs; i++)
+ *xsk_ring_prod__fill_addr(&umem->fq, idx++) =
+ (i * XSK_UMEM__DEFAULT_FRAME_SIZE) + invalid;
+ xsk_ring_prod__submit(&umem->fq, num_addrs);
}
static int xsk_configure_socket(struct ifobject *ifobject)
@@ -1172,6 +1184,9 @@ int main(int argc, char **argv)
case XSK_TRACE_DROP_PKT_TOO_BIG:
reason_str = "packet too big";
break;
+ case XSK_TRACE_DROP_INVALID_FILLADDR:
+ reason_str = "invalid fill addr";
+ break;
default:
ksft_test_result_fail("ERROR: unsupported trace %i\n",
opt_trace_code);
--
2.17.1
next prev parent reply other threads:[~2021-02-03 8:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-03 7:41 [PATCH bpf-next v4 0/6] AF_XDP Packet Drop Tracing Ciara Loftus
2021-02-03 7:41 ` [PATCH bpf-next v4 1/6] xsk: add tracepoints for packet drops Ciara Loftus
2021-02-04 6:37 ` Song Liu
2021-02-08 9:11 ` Loftus, Ciara
2021-02-03 7:41 ` [PATCH bpf-next v4 2/6] selftests/bpf: restructure setting the packet count Ciara Loftus
2021-02-03 7:41 ` [PATCH bpf-next v4 3/6] selftests/bpf: add framework for xsk selftests Ciara Loftus
2021-02-03 7:41 ` [PATCH bpf-next v4 4/6] selftests/bpf: XSK_TRACE_DROP_PKT_TOO_BIG test Ciara Loftus
2021-02-03 7:41 ` Ciara Loftus [this message]
2021-02-03 7:41 ` [PATCH bpf-next v4 6/6] selftests/bpf: XSK_TRACE_INVALID_DESC_TX test Ciara Loftus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210203074127.8616-6-ciara.loftus@intel.com \
--to=ciara.loftus@intel.com \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--cc=weqaar.a.janjua@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).