30/08/2022 20:58, Cristian Dumitrescu: > This patch introduces support for direct registers and meters. The > difference between indirect (indexed) and direct registers and meters > is explained below [1][2][3]. > > 1. Indirect (indexed) registers and meters. > > The index into an array of registers or meters used on the data path > is typically read from the action data identified by a table lookup > operation. > > This means that the control plane manages the mapping of the mapping > of array entries to table entries and sets up this index explicitly > into the table entry action data. > > These are called indirect or indexed registers and meters, and they > allow multiple table entries to share the same register/meter, as well > as a 1:1 mapping of table entries to register/meter array entries. > > 2. Direct registers and meters. > In the case of 1:1 mapping of table entries to register/meter array > elements, it is sometimes desired to avoid the explicit allocation of > register/meter array index to each table entry by the control plane. > > One way this can be done is by implementing a mechanism to associate > a unique ID to each table entry, including the default table entry as > well; once the entry ID is retrieved as result of the table lookup > operation, it is saved by the pipeline and used later on as the > index into the register/meter array. > > These are called direct registers and meters, and have the advantage > that the index is auto-generated, which simplifies the controller > implementation; the disadvantage is that they do not allow multiple > table entries to share the same register or meter. > > References: > > [1] Indirect and direct counters: > https://p4.org/p4-spec/docs/PSA.html#sec-counters > > [2] Indirect and direct registers: > https://p4.org/p4-spec/docs/PSA.html#sec-registers > > [3] Indirect and direct meters: > https://p4.org/p4-spec/docs/PSA.html#sec-meters > > Depends-on: series-24366 ("pipeline: make the hash function configurable per > table") > > Change log: > > V3: > -Fixed issues related to CLI parsing > -Fixed issue related to the key offset > > V2: > -Fixed minor style issues flagged by CI/CD > > Cristian Dumitrescu (7): > table: add entry ID for regular tables > table: add entry ID for learner tables > pipeline: add table entry ID read instruction > pipeline: support direct registers on the control path > pipeline: support direct meters on the control path > examples/pipeline: add CLI commands for direct registers > examples/pipeline: add CLI commands for direct meters
Applied, thanks.