X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_acl%2Facl.h;h=4089ab2a0462e3b5aaee6b500dbf6f2b054a7aed;hb=b4cfffaa85ecfac2035eee26fa48167fdcefd678;hp=39d45a0c2b688a481b16a2fcecfd1ce59bf2c630;hpb=369991d997e4abdee355e19ffbb41a4d246cafa2;p=dpdk.git diff --git a/lib/librte_acl/acl.h b/lib/librte_acl/acl.h index 39d45a0c2b..4089ab2a04 100644 --- a/lib/librte_acl/acl.h +++ b/lib/librte_acl/acl.h @@ -76,6 +76,13 @@ struct rte_acl_bitset { * input_byte - ((uint8_t *)&transition)[4 + input_byte / 64]. */ +/* + * Each ACL RT contains an idle nomatch node: + * a SINGLE node at predefined position (RTE_ACL_DFA_SIZE) + * that points to itself. + */ +#define RTE_ACL_IDLE_NODE (RTE_ACL_DFA_SIZE | RTE_ACL_NODE_SINGLE) + /* * Structure of a node is a set of ptrs and each ptr has a bit map * of values associated with this transition. @@ -162,6 +169,7 @@ struct rte_acl_ctx { int32_t socket_id; /** Socket ID to allocate memory from. */ enum rte_acl_classify_alg alg; + uint32_t first_load_sz; void *rules; uint32_t max_rules; uint32_t rule_sz; @@ -201,6 +209,14 @@ int rte_acl_classify_avx2(const struct rte_acl_ctx *ctx, const uint8_t **data, uint32_t *results, uint32_t num, uint32_t categories); +int +rte_acl_classify_avx512x16(const struct rte_acl_ctx *ctx, const uint8_t **data, + uint32_t *results, uint32_t num, uint32_t categories); + +int +rte_acl_classify_avx512x32(const struct rte_acl_ctx *ctx, const uint8_t **data, + uint32_t *results, uint32_t num, uint32_t categories); + int rte_acl_classify_neon(const struct rte_acl_ctx *ctx, const uint8_t **data, uint32_t *results, uint32_t num, uint32_t categories);