31/10/2021 22:13, Jerin Jacob: > On Mon, Nov 1, 2021 at 1:04 AM Thomas Monjalon <tho...@monjalon.net> wrote: > > > > 31/10/2021 15:01, Jerin Jacob: > > > Since rte_flow already has the TLV concept it may not be new to DPDK. > > > > Where is there TLV in rte_flow? > > struct rte_flow_item { > enum rte_flow_item_type type; /**< Item type. */ > const void *spec; /**< Pointer to item specification structure. */ > > Type is the tag here and the spec is the value here. Length is the > size of the specification structure. > rte_flows spec does not support/need zero length variable at the end > of spec structure, > that reason for not embedding explicit length value as it is can be > derived from sizeof(specification structure).
Ah OK I see what you mean. But rte_flow_item is quite limited, it is not the kind of TLV with multiple levels of nesting. Do you need nesting of objects in DWA? > > > I really liked rte_flow enablement of ABI combability and its ease of > > > adding > > > new stuff. Try to follow similar stuff which is proven in DPDK. > > > Ie. New profile creation will very easy, it will be a matter of > > > identifying > > > the TLVs and their type and payload, rather than everyone comes with > > > new APIs in every profile. > > > > > > > Why not use protobuf and its IDL to specify the interface? > > > > Yes I think it is important to discuss alternatives, > > and at least get justifications of why TLV is chosen among others. > > Yes. Current list is > > 1) Very easy to enable ABI compatibility. > 2) If it needs to be transported over network etc it needs to be > packed so that way it is easy for implementation to do that > with TLV also gives better performance in such > cases by avoiding reformatting or possibly avoiding memcpy etc. > 3) It is easy to plugin with another high-level programing language as > just one API. > 4) Easy to decouple DWA core library functionalities from profile. > 5) Easy to enable asynchronous scheme using request and response TLVs. > 6) Most importantly, We could introduce type notion with TLV > (connected with the type of message See TYPE_ATTACHED, TYPE_STOPPED, > TYPE_USER_PLANE etc ), > That way, we can have a uniform outlook of profiles instead of each profile > coming with a setup of its own APIs and __rules__ on the state machine. > I think, for a framework to leverage communication mechanisms and other > aspects between profiles, it's important to have some synergy between > profiles. > 7) No Additional library dependencies like gRPC, protobuf > 8) Provide driver to implement the optimized means of supporting different > transport such as Ethernet, Shared memory, PCIe DMA style HW etc. > 9) Avoid creating endless APIs and their associated driver function > calls for each > profile APIs.