Re: [PATCH 04/13] acl: allow zero verdict
From: Ananyev, Konstantin <hidden>
Date: 2016-12-13 14:14:22
-----Original Message----- From: Michal Miroslaw [mailto:mirq-linux@rere.qmqm.pl] Sent: Tuesday, December 13, 2016 1:55 PM To: Ananyev, Konstantin <redacted> Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH 04/13] acl: allow zero verdict On Tue, Dec 13, 2016 at 10:36:16AM +0000, Ananyev, Konstantin wrote:quoted
Hi Michal,quoted
-----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Michal Miroslaw Sent: Tuesday, December 13, 2016 1:08 AM To: dev@dpdk.org Subject: [dpdk-dev] [PATCH 04/13] acl: allow zero verdict Signed-off-by: Michał Mirosław <redacted> --- lib/librte_acl/rte_acl.c | 3 +-- lib/librte_acl/rte_acl.h | 2 -- lib/librte_table/rte_table_acl.c | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-)diff --git a/lib/librte_acl/rte_acl.c b/lib/librte_acl/rte_acl.c index 8b7e92c..d1f40be 100644 --- a/lib/librte_acl/rte_acl.c +++ b/lib/librte_acl/rte_acl.c@@ -313,8 +313,7 @@ acl_check_rule(const struct rte_acl_rule_data *rd) if ((RTE_LEN2MASK(RTE_ACL_MAX_CATEGORIES, typeof(rd->category_mask)) & rd->category_mask) == 0 || rd->priority > RTE_ACL_MAX_PRIORITY || - rd->priority < RTE_ACL_MIN_PRIORITY || - rd->userdata == RTE_ACL_INVALID_USERDATA) + rd->priority < RTE_ACL_MIN_PRIORITY) return -EINVAL; return 0; }I am not sure, how it supposed to work properly? Zero value is reserved and ifnicates that no match were found for that input.This is actually in use by us. In our use we don't need to differentiate matching a rule with zero verdict vs not matching a rule at all. I also have a patch that changes the value returned in non-matching case, but it's in "dirty hack" state, as of yet.
With that chane rte_acl_classify() might produce invalid results. Even if you don't need it (I still don't understand how) , it doesn't mean other people don't need it either and it is ok to change it.
The ACL code does not treat zero userdata specially, so this is only a policy choice and as such would be better to be made by the user.
I believe it does. userdata==0 is a reserved value. When rte_acl_clasify() returns 0 for that particular input, it means 'no matches were found'. Konstantin