#include <rte_random.h>
#include <rte_byteorder.h>
#include <rte_errno.h>
+#include "test.h"
+
+#if !defined(RTE_LIB_BPF)
+
+static int
+test_bpf(void)
+{
+ printf("BPF not supported, skipping test\n");
+ return TEST_SKIPPED;
+}
+
+#else
+
#include <rte_bpf.h>
#include <rte_ether.h>
#include <rte_ip.h>
-#include "test.h"
/*
* Basic functional tests for librte_bpf.
* The main procedure - load eBPF program, execute it and
- * compare restuls with expected values.
+ * compare results with expected values.
*/
struct dummy_offset {
memset(&dfe, 0, sizeof(dfe));
rv = 1;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = -1;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = (int32_t)TEST_FILL_1;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = TEST_MUL_1;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = TEST_MUL_2;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = TEST_JCC_2;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
rv = TEST_JCC_3;
- rte_atomic32_add((rte_atomic32_t *)&dfe.u32, rv);
- rte_atomic64_add((rte_atomic64_t *)&dfe.u64, rv);
+ __atomic_fetch_add(&dfe.u32, rv, __ATOMIC_RELAXED);
+ __atomic_fetch_add(&dfe.u64, rv, __ATOMIC_RELAXED);
return cmp_res(__func__, 1, rc, &dfe, dft, sizeof(dfe));
}
}
/*
- * same as ld_mbuf1, but then trancate the mbuf by 1B,
+ * same as ld_mbuf1, but then truncate the mbuf by 1B,
* so load of last 4B fail.
*/
static void
return rc;
}
+#endif /* !RTE_LIB_BPF */
+
REGISTER_TEST_COMMAND(bpf_autotest, test_bpf);
#ifdef RTE_HAS_LIBPCAP
printf("cBPF program (%u insns)\n", cbf->bf_len);
bpf_dump(cbf, 1);
- printf("\neBPF program (%u insns)\n", prm->nb_ins);
- rte_bpf_dump(stdout, prm->ins, prm->nb_ins);
+ if (prm != NULL) {
+ printf("\neBPF program (%u insns)\n", prm->nb_ins);
+ rte_bpf_dump(stdout, prm->ins, prm->nb_ins);
+ }
}
static int