mbuf: support dynamic fields and flags
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 10 Jul 2019 09:29:07 +0000 (11:29 +0200)
committerOlivier Matz <olivier.matz@6wind.com>
Wed, 18 Sep 2019 16:42:36 +0000 (18:42 +0200)
commit739a6674ab943a762cb5e9a7b82cc344ee5c1467
treebc60aa3a15e3fd96e34c6e4c7db2cd7a2d7ba359
parentbd253daa7717835f88bbc58b09a94d0060380396
mbuf: support dynamic fields and flags

Many features require to store data inside the mbuf. As the room in mbuf
structure is limited, it is not possible to have a field for each
feature. Also, changing fields in the mbuf structure can break the API
or ABI.

This commit addresses these issues, by enabling the dynamic registration
of fields or flags:

- a dynamic field is a named area in the rte_mbuf structure, with a
  given size (>= 1 byte) and alignment constraint.
- a dynamic flag is a named bit in the rte_mbuf structure.

The typical use case is a PMD that registers space for an offload
feature, when the application requests to enable this feature.  As
the space in mbuf is limited, the space should only be reserved if it
is going to be used (i.e when the application explicitly asks for it).

The registration can be done at any moment, but it is not possible
to unregister fields or flags for now.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
app/test/test_mbuf.c
doc/guides/rel_notes/release_19_11.rst
lib/librte_mbuf/Makefile
lib/librte_mbuf/meson.build
lib/librte_mbuf/rte_mbuf.h
lib/librte_mbuf/rte_mbuf_dyn.c [new file with mode: 0644]
lib/librte_mbuf/rte_mbuf_dyn.h [new file with mode: 0644]
lib/librte_mbuf/rte_mbuf_version.map