Hi, Nice catch.
Best, Ori > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Guy Kaneti > Sent: Monday, April 20, 2020 1:48 PM > To: Ori Kam <or...@mellanox.com>; Jerin Jacob Kollanukkaran > <jer...@marvell.com>; xiang.w.w...@intel.com > Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula > <pbhagavat...@marvell.com>; Shahaf Shuler <shah...@mellanox.com>; > hemant.agra...@nxp.com; Opher Reviv <op...@mellanox.com>; Alex > Rosenbaum <al...@mellanox.com>; Dovrat Zifroni <dov...@marvell.com>; > Prasun Kapoor <pkap...@marvell.com>; nipun.gu...@nxp.com; > bruce.richard...@intel.com; yang.a.h...@intel.com; harry.ch...@intel.com; > gu.ji...@zte.com.cn; shanjia...@chinatelecom.cn; > zhangy....@chinatelecom.cn; lixin...@huachentel.com; wush...@inspur.com; > yuying...@yxlink.com; fanchengg...@sunyainfo.com; > davidf...@tencent.com; liuzho...@chinaunicom.cn; > zhaoyon...@huawei.com; o...@yunify.com; j...@netgate.com; > hongjun...@intel.com; j.bromh...@titan-ic.com; d...@ntop.org; > f...@napatech.com; arthur...@lionic.com; Thomas Monjalon > <tho...@monjalon.net> > Subject: Re: [dpdk-dev] [PATCH v2 2/4] regexdev: add regex core h file > > Hi, > > > > -----Original Message----- > > From: dev <dev-boun...@dpdk.org> On Behalf Of Ori Kam > > Sent: Friday, April 17, 2020 3:44 PM > > To: Jerin Jacob Kollanukkaran <jer...@marvell.com>; > > xiang.w.w...@intel.com > > Cc: dev@dpdk.org; Pavan Nikhilesh Bhagavatula > > <pbhagavat...@marvell.com>; shah...@mellanox.com; > > hemant.agra...@nxp.com; op...@mellanox.com; al...@mellanox.com; > > Dovrat Zifroni <dov...@marvell.com>; Prasun Kapoor > > <pkap...@marvell.com>; nipun.gu...@nxp.com; > > bruce.richard...@intel.com; yang.a.h...@intel.com; > > harry.ch...@intel.com; gu.ji...@zte.com.cn; shanjia...@chinatelecom.cn; > > zhangy....@chinatelecom.cn; lixin...@huachentel.com; > > wush...@inspur.com; yuying...@yxlink.com; > > fanchengg...@sunyainfo.com; davidf...@tencent.com; > > liuzho...@chinaunicom.cn; zhaoyon...@huawei.com; o...@yunify.com; > > j...@netgate.com; hongjun...@intel.com; j.bromh...@titan-ic.com; > > d...@ntop.org; f...@napatech.com; arthur...@lionic.com; > > tho...@monjalon.net; or...@mellanox.com > > Subject: [dpdk-dev] [PATCH v2 2/4] regexdev: add regex core h file > > > > This commit introduce the rte_regexdev_core.h file. > > This file holds internal structures and API that are used by the regexdev. > > > > Signed-off-by: Ori Kam <or...@mellanox.com> > > --- > > v2: > > * Move private data to rte_regexdev struct. > > --- > > lib/librte_regexdev/Makefile | 1 + > > lib/librte_regexdev/meson.build | 2 +- > > lib/librte_regexdev/rte_regexdev.h | 2 + > > lib/librte_regexdev/rte_regexdev_core.h | 160 > > ++++++++++++++++++++++++++++++++ > > 4 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 > > lib/librte_regexdev/rte_regexdev_core.h > > > > diff --git a/lib/librte_regexdev/Makefile b/lib/librte_regexdev/Makefile > > index 6f4cc63..9012d29 100644 > > --- a/lib/librte_regexdev/Makefile > > +++ b/lib/librte_regexdev/Makefile > > @@ -24,6 +24,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_REGEXDEV) := > > rte_regexdev.c > > > > # export include files > > SYMLINK-$(CONFIG_RTE_LIBRTE_REGEXDEV)-include += rte_regexdev.h > > +SYMLINK-$(CONFIG_RTE_LIBRTE_REGEXDEV)-include += > > rte_regexdev_core.h > > > > # versioning export map > > EXPORT_MAP := rte_regexdev_version.map > > diff --git a/lib/librte_regexdev/meson.build > > b/lib/librte_regexdev/meson.build index f4db748..1816754 100644 > > --- a/lib/librte_regexdev/meson.build > > +++ b/lib/librte_regexdev/meson.build > > @@ -3,5 +3,5 @@ > > > > allow_experimental_apis = true > > sources = files('rte_regexdev.c') > > -headers = files('rte_regexdev.h') > > +headers = files('rte_regexdev.h', 'rte_regexdev_core.h') > > deps += ['mbuf'] > > diff --git a/lib/librte_regexdev/rte_regexdev.h > > b/lib/librte_regexdev/rte_regexdev.h > > index 7e688d9..bbc56f9 100644 > > --- a/lib/librte_regexdev/rte_regexdev.h > > +++ b/lib/librte_regexdev/rte_regexdev.h > > @@ -1466,6 +1466,8 @@ struct rte_regex_ops { > > rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id, > > struct rte_regex_ops **ops, uint16_t nb_ops); > > > > +#include "rte_regexdev_core.h" > > + > > #ifdef __cplusplus > > } > > #endif > > diff --git a/lib/librte_regexdev/rte_regexdev_core.h > > b/lib/librte_regexdev/rte_regexdev_core.h > > new file mode 100644 > > index 0000000..fb7a27e > > --- /dev/null > > +++ b/lib/librte_regexdev/rte_regexdev_core.h > > @@ -0,0 +1,160 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright(c) 2019 Mellanox Corporation */ > > + > > +#ifndef _RTE_REGEX_CORE_H_ > > +#define _RTE_REGEX_CORE_H_ > > + > > +/** > > + * @file > > + * > > + * RTE RegEx Device internal header. > > + * > > + * This header contains internal data types, that are used by the RegEx > > +devices > > + * in order to expose their ops to the class. > > + * > > + * Applications should not use these API directly. > > + * > > + */ > > + > > +struct rte_regexdev; > > + > > +typedef int (*regexdev_info_get_t)(struct rte_regexdev *dev, > > + struct rte_regexdev_info *info); /**< > > @internal Get the RegEx > > +device info. */ > > + > > +typedef int (*regexdev_configure_t)(struct rte_regexdev *dev, > > + const struct rte_regexdev_config *cfg); > > /**< @internal > > +Configure the RegEx device. */ > > + > > +typedef int (*regexdev_qp_setup_t)(struct rte_regexdev *dev, uint8_t id, > > + const struct rte_regexdev_qp_conf > > *qp_conf); /**< @internal > > +Setup a queue pair.*/ > > The API is defined as: > int > rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, > const struct rte_regexdev_qp_conf *qp_conf); > > id is uint8_t opposed to uint16_t Will fix. > > > + > > +typedef int (*regexdev_start_t)(struct rte_regexdev *dev); /**< > > +@internal Start the RegEx device. */ > > + > > +typedef int (*regexdev_stop_t)(struct rte_regexdev *dev); /**< > > +@internal Stop the RegEx device. */ > > + > > +typedef int (*regexdev_close_t)(struct rte_regexdev *dev); /**< > > +@internal Close the RegEx device. */ > > + > > +typedef int (*regexdev_attr_get_t)(struct rte_regexdev *dev, > > + enum rte_regexdev_attr_id id, > > + void *value); > > +/**< @internal Get selected attribute from RegEx device. */ > > + > > +typedef int (*regexdev_attr_set_t)(struct rte_regexdev *dev, > > + enum rte_regexdev_attr_id id, > > + const void *value); > > +/**< @internal Set selected attribute to RegEx device. */ > > + > > +typedef int (*regexdev_rule_db_update_t)(struct rte_regexdev *dev, > > + const struct rte_regexdev_rule > > *rules, > > + uint16_t nb_rules); > > +/**< @internal Update the rule database for the RegEx device. */ > > + > > +typedef int (*regexdev_rule_db_compile_activate_t)(struct rte_regexdev > > +*dev); /**< @internal Compile the rule database and activate it. */ > > + > > +typedef int (*regexdev_rule_db_import_t)(struct rte_regexdev *dev, > > + const char *rule_db, > > + uint32_t rule_db_len); > > +/**< @internal Upload a pre created rule database to the RegEx device. > > +*/ > > + > > +typedef int (*regexdev_rule_db_export_t)(struct rte_regexdev *dev, > > + const char *rule_db); > > +/**< @internal Export the current rule database from the RegEx device. > > +*/ > The API is defined as: > int > rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db); > > char *rule_db is not const > Will fix. > > + > > +typedef int (*regexdev_xstats_names_get_t)(struct rte_regexdev *dev, > > + struct rte_regexdev_xstats_map > > + *xstats_map); > > +/**< @internal Get xstats name map for the RegEx device. */ > > + > > +typedef int (*regexdev_xstats_get_t)(struct rte_regexdev *dev, > > + const uint16_t *ids, uint64_t *values, > > + uint16_t nb_values); > > +/**< @internal Get xstats values for the RegEx device. */ > > + > > +typedef int (*regexdev_xstats_by_name_get_t)(struct rte_regexdev > > *dev, > > + const char *name, uint16_t *id, > > + uint64_t *value); > > +/**< @internal Get xstat value for the RegEx device based on the xstats > > +name. */ > > + > > +typedef int (*regexdev_xstats_reset_t)(struct rte_regexdev *dev, > > + const uint16_t *ids, > > + uint16_t nb_ids); > > +/**< @internal Reset xstats values for the RegEx device. */ > > + > > +typedef int (*regexdev_selftest_t)(struct rte_regexdev *dev); /**< > > +@internal Trigger RegEx self test. */ > > + > > +typedef int (*regexdev_dump_t)(struct rte_regexdev *dev, FILE *f); /**< > > +@internal Dump internal information about the RegEx device. */ > > + > > +typedef int (*regexdev_enqueue_t)(struct rte_regexdev *dev, uint16_t > > qp_id, > > + struct rte_regex_ops **ops, uint16_t > > nb_ops); /**< @internal > > +Enqueue a burst of scan requests to a queue on RegEx device. */ > > + > > rte_regexdev_enqueue_burst() returns uint16_t > Will fix. > > +typedef int (*regexdev_dequeue_t)(struct rte_regexdev *dev, uint16_t > > qp_id, > > + struct rte_regex_ops **ops, > > + uint16_t nb_ops); > > +/**< @internal Dequeue a burst of scan response from a queue on RegEx > > +device. */ > > + > > rte_regexdev_dequeue_burst() returns uint16_t > Will fix. > > +/** > > + * RegEx device operations > > + */ > > +struct rte_regexdev_ops { > > + regexdev_info_get_t dev_info_get; > > + regexdev_configure_t dev_configure; > > + regexdev_qp_setup_t dev_qp_setup; > > + regexdev_start_t dev_start; > > + regexdev_stop_t dev_stop; > > + regexdev_close_t dev_close; > > + regexdev_attr_get_t dev_attr_get; > > + regexdev_attr_set_t dev_attr_set; > > + regexdev_rule_db_update_t dev_rule_db_update; > > + regexdev_rule_db_compile_activate_t > > dev_rule_db_compile_activate; > > + regexdev_rule_db_import_t dev_db_import; > > + regexdev_rule_db_export_t dev_db_export; > > + regexdev_xstats_names_get_t dev_xstats_names_get; > > + regexdev_xstats_get_t dev_xstats_get; > > + regexdev_xstats_by_name_get_t dev_xstats_by_name_get; > > + regexdev_xstats_reset_t dev_xstats_reset; > > + regexdev_selftest_t dev_selftest; > > + regexdev_dump_t dev_dump; > > +}; > > + > > +#define RTE_REGEXDEV_NAME_MAX_LEN > > +/** > > + * @internal > > + * The data part, with no function pointers, associated with each RegEx > > device. > > + * > > + * This structure is safe to place in shared memory to be common among > > +different > > + * processes in a multi-process configuration. > > + */ > > +struct rte_regexdev_data { > > + void *dev_private; /**< PMD-specific private data. */ } > > +__rte_cache_aligned; > > + > > +/** > > + * @internal > > + * The generic data structure associated with each RegEx device. > > + * > > + * Pointers to burst-oriented packet receive and transmit functions are > > + * located at the beginning of the structure, along with the pointer to > > + * where all the data elements for the particular device are stored in > > +shared > > + * memory. This split allows the function pointer and driver data to be > > +per- > > + * process, while the actual configuration data for the device is shared. > > + */ > > +struct rte_regexdev { > > + regexdev_enqueue_t enqueue; > > + regexdev_dequeue_t dequeue; > > + const struct rte_regexdev_ops *dev_ops; > > + /**< Functions exported by PMD */ > > + struct rte_device *device; /**< Backing device */ > > + struct rte_regexdev_data *data; /**< Pointer to device data. */ } > > +__rte_cache_aligned; > > + > > +#endif /* _RTE_REGEX_CORE_H_ */ > > -- > > 1.8.3.1