acl: introduce a macro for bitmask conversion
Introduce new RTE_ACL_MASKLEN_TO_BITMASK macro, that will be used in several places inside librte_acl and it's UT. Simplify and cleanup build_trie() code a bit. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
parent
4a6ce751ac
commit
cd40cd9195
@ -1262,19 +1262,9 @@ build_trie(struct acl_build_context *context, struct rte_acl_build_rule *head,
|
||||
* all higher bits.
|
||||
*/
|
||||
uint64_t mask;
|
||||
|
||||
if (fld->mask_range.u32 == 0) {
|
||||
mask = 0;
|
||||
|
||||
/*
|
||||
* arithmetic right shift for the length of
|
||||
* the mask less the msb.
|
||||
*/
|
||||
} else {
|
||||
mask = -1 <<
|
||||
(rule->config->defs[n].size *
|
||||
CHAR_BIT - fld->mask_range.u32);
|
||||
}
|
||||
mask = RTE_ACL_MASKLEN_TO_BITMASK(
|
||||
fld->mask_range.u32,
|
||||
rule->config->defs[n].size);
|
||||
|
||||
/* gen a mini-trie for this field */
|
||||
merge = acl_gen_mask_trie(context,
|
||||
|
@ -122,6 +122,9 @@ enum {
|
||||
|
||||
#define RTE_ACL_INVALID_USERDATA 0
|
||||
|
||||
#define RTE_ACL_MASKLEN_TO_BITMASK(v, s) \
|
||||
((v) == 0 ? (v) : (typeof(v))((uint64_t)-1 << ((s) * CHAR_BIT - (v))))
|
||||
|
||||
/**
|
||||
* Miscellaneous data for ACL rule.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user