#include <getopt.h>
#include <string.h>
-#ifndef RTE_LIBRTE_ACL_STANDALONE
-
#include <rte_cycles.h>
#include <rte_per_lcore.h>
#include <rte_lcore.h>
#define PRINT_USAGE_START "%s [EAL options]\n"
-#else
-
-#define IPv4(a, b, c, d) ((uint32_t)(((a) & 0xff) << 24) | \
- (((b) & 0xff) << 16) | \
- (((c) & 0xff) << 8) | \
- ((d) & 0xff))
-
-#define RTE_LCORE_FOREACH_SLAVE(x) while (((x) = 0))
-
-#define rte_eal_remote_launch(a, b, c) DUMMY_MACRO
-#define rte_eal_mp_wait_lcore() DUMMY_MACRO
-
-#define rte_eal_init(c, v) (0)
-
-#define PRINT_USAGE_START "%s\n"
-
-#endif /*RTE_LIBRTE_ACL_STANDALONE */
-
#define RTE_LOGTYPE_TESTACL RTE_LOGTYPE_USER1
#define APP_NAME "TESTACL"
.name = "avx2",
.alg = RTE_ACL_CLASSIFY_AVX2,
},
+ {
+ .name = "neon",
+ .alg = RTE_ACL_CLASSIFY_NEON,
+ },
+ {
+ .name = "altivec",
+ .alg = RTE_ACL_CLASSIFY_ALTIVEC,
+ },
};
static struct {
NUM_FIELDS_IPV4
};
+/*
+ * That effectively defines order of IPV4VLAN classifications:
+ * - PROTO
+ * - VLAN (TAG and DOMAIN)
+ * - SRC IP ADDRESS
+ * - DST IP ADDRESS
+ * - PORTS (SRC and DST)
+ */
+enum {
+ RTE_ACL_IPV4VLAN_PROTO,
+ RTE_ACL_IPV4VLAN_VLAN,
+ RTE_ACL_IPV4VLAN_SRC,
+ RTE_ACL_IPV4VLAN_DST,
+ RTE_ACL_IPV4VLAN_PORTS,
+ RTE_ACL_IPV4VLAN_NUM
+};
+
struct rte_acl_field_def ipv4_defs[NUM_FIELDS_IPV4] = {
{
.type = RTE_ACL_FIELD_TYPE_BITMASK,
return rc;
}
- v.data.category_mask = LEN2MASK(RTE_ACL_MAX_CATEGORIES);
+ v.data.category_mask = RTE_LEN2MASK(RTE_ACL_MAX_CATEGORIES,
+ typeof(v.data.category_mask));
v.data.priority = RTE_ACL_MAX_PRIORITY - n;
v.data.userdata = n;
"%s @lcore %u: %" PRIu32 " iterations, %" PRIu64 " pkts, %"
PRIu32 " categories, %" PRIu64 " cycles, %#Lf cycles/pkt\n",
__func__, lcore, i, pkt, config.run_categories,
- tm, (long double)tm / pkt);
+ tm, (pkt == 0) ? 0 : (long double)tm / pkt);
return 0;
}