X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_acl%2Frte_acl.c;h=b6ddeebcaf5ec0b853ab18c1532499d7942031f3;hb=a2348166ea186506d45b61d5073d16ad974e79bb;hp=a9cd34971f6240516b8aec645159607ef2edb726;hpb=5dd71363bfd2b8d33d6b7aea9ab43db5792fd4e2;p=dpdk.git diff --git a/lib/librte_acl/rte_acl.c b/lib/librte_acl/rte_acl.c index a9cd34971f..b6ddeebcaf 100644 --- a/lib/librte_acl/rte_acl.c +++ b/lib/librte_acl/rte_acl.c @@ -38,6 +38,11 @@ TAILQ_HEAD(rte_acl_list, rte_tailq_entry); +static struct rte_tailq_elem rte_acl_tailq = { + .name = "RTE_ACL", +}; +EAL_REGISTER_TAILQ(rte_acl_tailq) + /* * If the compiler doesn't support AVX2 instructions, * then the dummy one would be used instead for AVX2 classify method. @@ -129,12 +134,7 @@ rte_acl_find_existing(const char *name) struct rte_acl_list *acl_list; struct rte_tailq_entry *te; - /* check that we have an initialised tail queue */ - acl_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_ACL, rte_acl_list); - if (acl_list == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return NULL; - } + acl_list = RTE_TAILQ_CAST(rte_acl_tailq.head, rte_acl_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, acl_list, next) { @@ -160,12 +160,7 @@ rte_acl_free(struct rte_acl_ctx *ctx) if (ctx == NULL) return; - /* check that we have an initialised tail queue */ - acl_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_ACL, rte_acl_list); - if (acl_list == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return; - } + acl_list = RTE_TAILQ_CAST(rte_acl_tailq.head, rte_acl_list); rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); @@ -197,12 +192,7 @@ rte_acl_create(const struct rte_acl_param *param) struct rte_tailq_entry *te; char name[sizeof(ctx->name)]; - /* check that we have an initialised tail queue */ - acl_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_ACL, rte_acl_list); - if (acl_list == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return NULL; - } + acl_list = RTE_TAILQ_CAST(rte_acl_tailq.head, rte_acl_list); /* check that input parameters are valid. */ if (param == NULL || param->name == NULL) { @@ -365,12 +355,7 @@ rte_acl_list_dump(void) struct rte_acl_list *acl_list; struct rte_tailq_entry *te; - /* check that we have an initialised tail queue */ - acl_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_ACL, rte_acl_list); - if (acl_list == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return; - } + acl_list = RTE_TAILQ_CAST(rte_acl_tailq.head, rte_acl_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, acl_list, next) { @@ -543,6 +528,7 @@ rte_acl_ipv4vlan_build(struct rte_acl_ctx *ctx, if (ctx == NULL || layout == NULL) return -EINVAL; + memset(&cfg, 0, sizeof(cfg)); acl_ipv4vlan_config(&cfg, layout, num_categories); return rte_acl_build(ctx, &cfg); }