On Tue, 1 Oct 2019 19:19:35 -0300 Flavio Leitner <f...@sysclose.org> wrote:
> The rte_vhost_dequeue_burst supports two ways of dequeuing data. If > the data fits into a buffer, then all data is copied and a single > linear buffer is returned. Otherwise it allocates additional mbufs > and chains them together to return a multiple segments mbuf. > > While that covers most use cases, it forces applications that need > to work with larger data sizes to support multiple segments mbufs. > The non-linear characteristic brings complexity and performance > implications to the application. > > To resolve the issue, change the API so that the application can > optionally provide a second mempool containing larger mbufs. If that > is not provided (NULL), the behavior remains as before the change. > Otherwise, the data size is checked and the corresponding mempool > is used to return linear mbufs. > > Signed-off-by: Flavio Leitner <f...@sysclose.org> The use case behind the patch is TSO support in DPDK accelerated Open vSwitch (customers are using ovs-dpdk to send big packets too!). The effort has been going on for many months now. There is a recent proposal in OvS dev mailing using the API as is today here: https://mail.openvswitch.org/pipermail/ovs-dev/2019-September/362573.html There is also a reply from me in that thread with the patches implementing a Proof-Of-Concept with the proposed API change: https://mail.openvswitch.org/pipermail/ovs-dev/2019-September/362881.html I opted to improve the current API instead of adding a new one, but I have no strong opinion either way. I know it's a bit late for v19.11, but since the TSO support effort is going on for months now and OvS uses only LTS, I wonder if this can be part of v19.11. Thanks, fbl