26/09/2023 13:29, Qi Zhang: > +Generic Flow Support > +~~~~~~~~~~~~~~~~~~~~ > + > +The ice PMD provides support for the Generic Flow API (RTE_FLOW), enabling > +users to offload various flow classification tasks to the E810 NIC. > +The E810 NIC's packet processing pipeline consists of the following stages: > + > +Switch: Supports exact match and limited wildcard matching with a large flow > +capacity. > + > +ACL: Supports wildcard matching with a smaller flow capacity (DCF mode only). > + > +FDIR: Supports exact match with a large flow capacity (PF mode only). > + > +Hash: Supports RSS (PF mode only) > + > +The ice PMD utilizes the ice_flow_engine structure to represent each of these > +stages and leverages the rte_flow rule's ``group`` attribute for selecting > the > +appropriate engine for Switch, ACL, and FDIR operations: > + > +Group 0 maps to Switch > +Group 1 maps to ACL > +Group 2 maps to FDIR > + > +In the case of RSS, it will only be selected if a ``RTE_FLOW_ACTION_RSS`` > action > +is targeted to no queue group, and the group attribute is ignored. > + > +For each engine, a list of supported patterns is maintained in a global array > +named ``ice_<engine>_supported_pattern``. The Ice PMD will reject any rule > with > +a pattern that is not included in the supported list.
Why not choosing the right engine automatically? You are defining an API (group number specialization) which is specific to this driver. Don't you care about portability of DPDK applications?