[PATCH v20 25/25] app/pdump: preserve VLAN tags in captured packets

Stephen Hemminger stephen at networkplumber.org
Wed Mar 25 17:19:21 CET 2026


On Wed, 25 Mar 2026 10:36:56 +0100
Morten Brørup <mb at smartsharesystems.com> wrote:

> If an application clones packets instead of copying them, it is probably for performance reasons.
> If the drivers start copying those clones, it may defeat the performance purpose.
> 
> <brainstorming>
> Maybe segmentation can be used instead of copying the full packet:
> Make the "copy" packet of two (or more) segments, where the header is copied into a new mbuf (where the VLAN tag is added), and the remaining part of the packet uses an indirect mbuf referring to the "original" packet at the offset after the header.
> </brainstorming>
> 
> Furthermore...
> If drivers start copying packets in the Tx function, the Tx queue should have its own mbuf pool to allocate these mbufs from.
> Drivers should not steal mbufs from the pools used by the packets being transmitted.
> E.g. if a segmented packet has a small mbuf for the first few bytes, followed by a large mbuf (from another pool) for the remaining bytes.
> Or if the "original" mbuf comes from a mempool allocated on different CPU socket, the "copy" would too.


The problem with the Tx function is how backpressure gets handled.
Not sure that it is documented well enough that if a packet is not sent
due to backpressure, the mbuf in the array may still have been replaced.


More information about the dev mailing list