Hi David, > -----Original Message----- > From: David Marchand <david.march...@redhat.com> > Sent: Wednesday, September 30, 2020 8:34 PM > To: Dumitrescu, Cristian <cristian.dumitre...@intel.com> > Cc: dev <dev@dpdk.org>; Thomas Monjalon <tho...@monjalon.net> > Subject: Re: [PATCH v6 00/42] Pipeline alignment with the P4 language > > On Wed, Sep 30, 2020 at 8:34 AM Cristian Dumitrescu > <cristian.dumitre...@intel.com> wrote: > > > > This patch set introduces a new pipeline type that combines the DPDK > > performance with the flexibility of the P4-16 language[1]. The new API > > can be used either by itself to code a complete software switch (SWX) > > or data plane app, or in combination with the open-source P4 compiler > > P4C [2], potentially acting as a P4C back-end, thus allowing the P4 > > programs to be translated to the DPDK API and run on multi-core CPUs. > > > > Main new features: > > > > * Nothing is hard-wired, everything is dynamically defined: The packet > > headers (i.e. protocols), the packet meta-data, the actions, the > > tables and the pipeline itself are dynamically defined instead of > > having to be selected from a pre-defined set. > > > > * Instructions: The actions and the life of the packet through the > > pipeline are defined with instructions that manipulate the pipeline > > objects mentioned above. The pipeline is the main function of the > > packet program, with actions as subroutines triggered by the tables. > > > > * Call external plugins: Extern objects and functions can be defined > > to call functionality that cannot be efficiently implemented with > > the existing pipeline-oriented instruction set, such as: special > > error detecting/correcting codes, crypto, meters, stats arrays, > > heuristics, etc. > > > > * Better control plane interaction: Transaction-oriented table update > > mechanism that supports multi-table atomic updates. Multiple tables > > can be updated in a single step with only the before and after table > > sets visible to the packets. Alignment with P4Runtime [3]. > > > > * Performance: Multiple packets are in-flight within the pipeline at > > any moment. Each packet is owned by a different time-sharing thread > > in run-to-completion, with the thread pausing before memory access > > operations such as packet I/O and table lookup to allow the memory > > prefetch to complete. The instructions are verified and translated > > at initialization time with no run-time impact. The instructions are > > also optimized to detect and "fuse" frequently used patterns into > > vector-like instructions transparently to the user. > > > > API deprecation and maturing roadmap: > > * The existing pipeline stable API (rte_pipeline.h) to be deprecated > > prior to and removed as part of the DPDK 21.11 LTS release. > > * The new SWX pipeline experimental API (rte_swx_pipeline.h) to mature > > and become stable as part of the same DPDK 21.11 LTS release. > > > > V6 changes: > > * Fixed issues in the example app Makefile. > > * Used rte_eth_link_speed_to_str() in the example app. > > * Added release notes update. > > - My comment on the Copyright was meant for the whole example code, > not only the makefile. >
Yes, sorry, I made sure all the new files have the copyright year set to 2020 in the V7 just sent. > - The documentation generation shows following warnings: > > $ ninja -v -C build doc > > [...] > > /home/dmarchan/dpdk/lib/librte_pipeline/rte_swx_ctl.h:165: warning: > argument 'action' of command @param is not found in the argument list > of rte_swx_ctl_action_arg_info_get(struct rte_swx_pipeline *p, > uint32_t action_id, uint32_t action_arg_id, struct > rte_swx_ctl_action_arg_info *action_arg) > /home/dmarchan/dpdk/lib/librte_pipeline/rte_swx_ctl.h:182: warning: > The following parameters of rte_swx_ctl_action_arg_info_get(struct > rte_swx_pipeline *p, uint32_t action_id, uint32_t action_arg_id, > struct rte_swx_ctl_action_arg_info *action_arg) are not documented: > parameter 'action_arg' > /home/dmarchan/dpdk/lib/librte_pipeline/rte_swx_pipeline.h:494: > warning: argument 'match' of command @param is not found in the > argument list of rte_swx_pipeline_table_type_register(struct > rte_swx_pipeline *p, const char *name, enum rte_swx_table_match_type > match_type, struct rte_swx_table_ops *ops) > /home/dmarchan/dpdk/lib/librte_pipeline/rte_swx_pipeline.h:513: > warning: The following parameters of > rte_swx_pipeline_table_type_register(struct rte_swx_pipeline *p, const > char *name, enum rte_swx_table_match_type match_type, struct > rte_swx_table_ops *ops) are not documented: > parameter 'match_type' > > [...] > Sorry, my bad again, fixed these two Doxygen wornings in the V7 just sent. > > -- > David Marchand Regards, Cristian