Message ID | 20210326202935.15771-1-cristian.dumitrescu@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Thomas Monjalon |
Headers | show |
Series | pipeline: validate header on emit | expand |
Context | Check | Description |
---|---|---|
ci/iol-testing | success | Testing PASS |
ci/iol-mellanox-Performance | success | Performance Testing PASS |
ci/iol-abi-testing | success | Testing PASS |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/github-robot | success | github build: passed |
ci/travis-robot | success | travis build: passed |
ci/intel-Testing | success | Testing PASS |
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | success | coding style OK |
26/03/2021 21:29, Cristian Dumitrescu: > Enhance the behavior of the emit instruction to ignore invalid > headers, as mandated by the P4 language specification. > > Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> Applied, thanks
diff --git a/lib/librte_pipeline/rte_swx_pipeline.c b/lib/librte_pipeline/rte_swx_pipeline.c index 4455d9135..6a19b1450 100644 --- a/lib/librte_pipeline/rte_swx_pipeline.c +++ b/lib/librte_pipeline/rte_swx_pipeline.c @@ -3024,10 +3024,11 @@ __instr_hdr_emit_exec(struct rte_swx_pipeline *p, uint32_t n_emit) { struct thread *t = &p->threads[p->thread_id]; struct instruction *ip = t->ip; + uint64_t valid_headers = t->valid_headers; uint32_t n_headers_out = t->n_headers_out; struct header_out_runtime *ho = &t->headers_out[n_headers_out - 1]; uint8_t *ho_ptr = NULL; - uint32_t ho_nbytes = 0, i; + uint32_t ho_nbytes = 0, first = 1, i; for (i = 0; i < n_emit; i++) { uint32_t header_id = ip->io.hdr.header_id[i]; @@ -3037,12 +3038,17 @@ __instr_hdr_emit_exec(struct rte_swx_pipeline *p, uint32_t n_emit) struct header_runtime *hi = &t->headers[header_id]; uint8_t *hi_ptr = t->structs[struct_id]; + if (!MASK64_BIT_GET(valid_headers, header_id)) + continue; + TRACE("[Thread %2u]: emit header %u\n", p->thread_id, header_id); /* Headers. */ - if (!i) { + if (first) { + first = 0; + if (!t->n_headers_out) { ho = &t->headers_out[0];
Enhance the behavior of the emit instruction to ignore invalid headers, as mandated by the P4 language specification. Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> --- lib/librte_pipeline/rte_swx_pipeline.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)